WO2012034477A1 - 一种存储数据的方法及装置 - Google Patents
一种存储数据的方法及装置 Download PDFInfo
- Publication number
- WO2012034477A1 WO2012034477A1 PCT/CN2011/079035 CN2011079035W WO2012034477A1 WO 2012034477 A1 WO2012034477 A1 WO 2012034477A1 CN 2011079035 W CN2011079035 W CN 2011079035W WO 2012034477 A1 WO2012034477 A1 WO 2012034477A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- node
- module
- type
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
Definitions
- the present invention relates to the field of computer technologies, and in particular, to a method and an apparatus for storing data. Background of the invention
- VARIANT structure when storing data, a VARIANT structure is used to represent the data type.
- VARIANT structure only one type can be valid at a time, that is, only one data can be processed at a time. There is no way to store both numbers and strings, and data cannot be processed in batches.
- an embodiment of the present invention provides a method and an apparatus for storing data, where The method and device can process batch data.
- a method for storing data includes:
- each node of the custom data structure includes a first module for storing a type identifier and a value of the data, and a second module for storing the a list of mappings between the identity of the child nodes of the node and the child nodes;
- the type of data and the value of the data are stored in the first module of the second node.
- an apparatus for storing data includes:
- a data interface for receiving data
- a general data type component configured to establish and save a custom data structure including at least a first node as a root node, where each node of the custom data structure includes a first module for storing a type identifier and a value of the data And the second module is configured to store a mapping list between the identifier of the child node of the node and the child node; whenever the data interface receives a data, determining a location where the data is to be stored and a type of the data; if the data is stored in the first node And storing the type of the data and the value of the data in the first module of the first node; if the data is stored in the second node of the custom data structure, storing the type of the data and the value of the data in the second node In the first module.
- a general data type component includes: a node establishment module, a determination module, and a storage module;
- a node establishing module configured to establish and save a custom data structure including at least a first node as a root node, where each node of the custom data structure includes a first module, And storing a type identifier and a value of the data, and a mapping list between the identifier of the child node of the node and the child node;
- a judging module configured to: after each data is received, determine that the data is to be stored in the first node or the second node of the custom data structure, and determine the type of the data, and notify the storage module of the judgment result;
- a storage module configured to: when the determining module determines that the data is to be stored in the first node, store the type of the data and the value of the data in the first module of the first node; the determining module determines that the data is to be stored in the customized data structure.
- the type of data and the value of the data are stored in the first module of the second node.
- the custom data structure of the embodiment of the present invention defines a general data type; when the data is stored as the universal data type, the universal data type can determine the basic type of the data to be stored, and The basic type and value of the data to be stored are stored. Moreover, since a common data type defined by a custom data structure, each node can have a mapping list of ⁇ identifiers, child nodes> of its child nodes, a large amount of data can be stored in the general data type. in. In this case, as long as a large amount of data is stored as a common data type, a large amount of data can be stored using one variable defined by the general data type. Moreover, since the data types stored between the nodes in the general data type can be different, the general data type can store different types of data, and a variable defined by the universal data type can represent a large number of data having different types. .
- each node in the variable of the general data type has its own type identifier, each node can store different types of data without storing compatible types of data, such as: LONG and int data can be stored, or BSTR can be stored. String data, and so on.
- FIG. 1 is a flowchart of a method for storing data according to an embodiment of the present invention
- FIG. 2 is a storage model of stored data in an embodiment of the present invention
- FIG. 3 is a tree structure of a general data type for storing data in an embodiment of the present invention
- FIG. 4 is a device for storing data according to an embodiment of the present invention
- FIG. 5 is a diagram of an apparatus for storing data according to another embodiment of the present invention.
- BEST MODE FOR CARRYING OUT THE INVENTION The present invention will be further described in detail below with reference to the accompanying drawings.
- FIG. 1 is a flow chart of a method of storing data in accordance with an embodiment of the present invention. As shown in Figure 1, the method includes:
- Step 101 Establish a custom data structure including at least a first node.
- the first node is a root node.
- Each node includes a first module for storing a type identification and value of the data, and a second module for storing a list of mappings between the identification of the child nodes of the node and its child nodes.
- WData data type defined by this custom data structure
- WData generic data type
- Step 102 Each time a data is received, the location where the data is to be stored and the type of the data are determined.
- Step 103 If the data is stored in the first node, the type of the data and the value of the data are stored in the first module of the first node.
- the root node when the data is stored in the first node, that is, stored in the root node, the root node does not need to correspond to a mapping list between the node identifier and the node, that is, ⁇ 1 « ⁇ WData node> (hereinafter referred to as ⁇ key, WData>). And, when there is only the first node in the custom data structure, the mapping list of the second module in the first node is empty. When the first node has a child node, the mapping list of the second module in the first node records the mapping list ⁇ 13 ⁇ 4 ⁇ WData> between the child node identifier of the first node and the child node.
- Step 104 If the data is stored in another node of the custom data structure (referred to as a second node), the type of the data and the value of the data are stored in the first module of the second node.
- a second node another node of the custom data structure
- the second node corresponds to a mapping list between the node identifier and the node, such as ⁇ key2, WData.
- the mapping list is stored in the parent node of the second node, and is used to index the child node of the parent node, thereby indexing the child node.
- the method further includes: determining whether the second node is included in the custom data structure; if not, establishing the second node of the custom data structure; otherwise, directly storing the type of the data and the value of the data in the In the first module of the second node.
- Establishing the second node of the custom data structure may include: filling in a mapping list between the identifier of the second node and the second node in the second module of the parent node of the second node.
- the second module in the second node fills in the mapping list between the identity of the child node and the child node.
- the above custom data structure can be implemented by C++ language, or scripting language or VB language.
- the custom data structure defines a general data type; when the data is stored as the general data type, the general data type can be determined first.
- the type of data to be stored, and the type and value of the data to be stored are stored. Therefore, when the user stores data, there is no need to manually perform conversion of different data types.
- each node can have a ⁇ key, WData> mapping list of its child nodes, a large amount of data can be stored in the general data type. In this case, as long as a large amount of data is stored as a common data type, a large amount of data can be transferred while passing a variable of a common data type, thereby greatly simplifying the construction and maintenance of the communication system.
- each storage model stores at least one WData data, which includes a first module (Value module) for storing type identification and values of WData data, and a second module ( ⁇ key, WData ⁇ 3 ⁇ 4 block). , a list of mappings between the identity of the child node storing the node and the child node ⁇ 13 ⁇ 4 ⁇ WData In the second module, the key can be represented by a string.
- the generic data type WData can be constructed as a tree-like generic data type.
- the first module described above may utilize a VARIANT structure to implement data type identification and value storage.
- the interior of the VARIANT structure utilizes a type identifier to represent a particular data type.
- the type of the data can be judged based on the type identifier in the VARIANT structure, and then the stored data can be obtained.
- VARIANT structure The definition of the VARIANT structure is as follows:
- VARTYPE II type identifier
- the data can be stored in accordance with the above structure. Once the data is stored, the stored data can be used.
- Fig. 3 shows a tree structure of a general data type in which data is stored in the embodiment of the present invention.
- the first node (the root node) may have one or more child nodes, and each child node may have one or more child nodes, and so on.
- a variable of a generic data type can store a large amount of data.
- WData>3 ⁇ 4 kinds of mapping relationship it is convenient to read each stored data, and it is convenient to change the data type or data value of one or some stored data.
- the first mode of the first node The block stores its own value, and the type identifier of the value.
- the ⁇ key, ⁇ 0& ⁇ &> list stored in the second module includes five mapping relationships, namely (keyl, WData), (key2, WData), ( Key3, WData), (key4, WData) and (key5, WData).
- the second module of the node corresponding to (key 3, WData) stores a list of ⁇ 13 ⁇ 4 ⁇ WData> including two mapping relationships, namely (key6, WData) and (key7, WData); and (key4, WData)
- the second module of the corresponding node further stores a list of ⁇ 1 « ⁇ WData> including a mapping relationship, that is, (key8, WData)own
- the storage model proposed by the embodiment of the present invention is a recursive storage. In this way, you can form a tree-like general data type and store a large amount of data.
- the tree structure shown in Fig. 3 is only one structure of the general data type of the present invention and is not intended to limit the structure of the general data type of the present invention.
- the general data type of the present invention can also be implemented by other structures having a multi-level indexing property such as a nested structure.
- variable After defining a variable through the generic data types shown in Figures 2 and 3, the variable can be easily manipulated to manipulate the data, such as reading, converting, and passing data.
- the method of storing data shown in Fig. 1 can realize storage of different types of data in the same variable, and can realize multi-level storage of a large amount of data, such as the tree storage shown in FIG.
- a data storage method in the embodiment of the present invention will be described by taking a system of the C++ language as an example and combining the tree structure shown in FIG.
- variable data of a common data type is first defined. Secondly, the variable data can be assigned, that is, the data can be stored in the data.
- the integer data "5" is assigned to the data; again, the data string “xxx” can be assigned to the data, that is, the string data "xxx” is stored in the variable data of the WData general data type, and the data is overwritten.
- the previously stored integer data "5". Specifically, the data "5" or “xxx” can be stored in the first module of the root node of the variable data (ie, in the Value module) by overloading the " " operator.
- multi-level storage is also possible, that is, data can be stored in child nodes of the root node.
- the integer data 10 or the string data "sss" is stored in the child node corresponding to keyl.
- the integer data 15 is stored in the child node corresponding to key6 in the child node corresponding to key3.
- the "[]" operator can be overloaded to implement the mapping of key to each WData.
- FIG. 4 is an apparatus for storing data according to an embodiment of the present invention. As shown in Figure 4, the device includes:
- a data interface 401 configured to receive data
- a universal data type component 402 configured to establish and store a custom data structure including at least a first node as a root node, where each node includes a first module, a type identifier and a value for storing data, and a second module a mapping list between the identifier of the child node of the node and the child node; whenever the data interface 401 receives a data, it is used to determine the location where the data is to be stored and the type of the data; if the data is stored in the first node, And storing the type of the data and the value of the data in the first module of the first node; if the data is stored in the second node in the custom data structure, storing the type of the data and the value of the data in the second In the first module of the node.
- the universal data type component 402 includes: a node establishing module, a determining module, and a storage module;
- a node establishing module configured to establish and save a custom data structure including at least a first node as a root node
- a determining module configured to determine that the data is stored in the first node or the second node and the type of the data, and notify the storage module of the determination result
- a storage module configured to store, according to the judgment result of the determining module, the type of the data and the value of the data in the first module of the first node or store the type of the data and the value of the data in the first module of the second node in.
- the determining module is further configured to: when the data is stored in the second node of the custom data structure, determine whether the second node is included in the custom data structure; if not, notify the node to establish a module to establish a custom The second node of the data structure; otherwise, the notification storage module stores the type of the data and the value of the data in the first module of the second node.
- the node establishment module establishes the second node by filling in a mapping list between the identity of the second node and the second node in the second module of the parent node of the second node.
- the data interface 401 is further configured to read data in the first module of the first node from the universal data type component 402, and read the node corresponding to the node identifier from the universal data type component 402 according to the node identifier. Stored data.
- the determining module is further configured to determine whether the type of the data of the node is different from the type of the newly received data to be stored in the node, and if different, modify the data in the first module of the node.
- Type identifier and value and/or
- the determining module is further configured to determine whether a type conversion operation of data of a node in the custom data structure is received, and if yes, modify the type of data in the first module of the node Logo.
- the generic data type component 402 also includes a delivery module for communicating custom data structures directly between modules of different or the same programming language environment.
- a generic data type component can be implemented by a C++ language, or a scripting language, a VB language.
- the apparatus when the generic data type component is implemented by the C++ language, the apparatus further includes a C++ wrapper class (C++ Wrapper) for encapsulating the custom data structure in the generic data type component 402.
- C++ Wrapper C++ wrapper class
- FIG. 5 is a diagram of an apparatus for storing data according to another embodiment of the present invention.
- the apparatus includes: a data interface IWData 501 for receiving or transmitting data; and a WData universal data type component 502 for using FIG.
- the WData Generic Data Type Component 502 can be a Com component in C++.
- the data value of the root node in the WData can also be read through the data interface IWData 501, and the data value of the child node in the WData can be read according to the key.
- the C++ Wrapper wrapper class 503 encapsulates the WData generic data type component 502 into a CWData component. Specifically, the C++Wrapper wrapper class 503 encapsulates the data interface IWData 501 with the smart pointer CComPtr ⁇ IWData> such that there is no difference between using the CWData component and using the WData generic data type component 502 directly through the data interface IWData 501.
- the function of breaking the data in WData and the type conversion of the data in WData can realize storing different types of data in a variable of a common data type in C++, and using any type of data; by overloading "[]”
- the square bracket operator implements the operation of obtaining the WData data in the child node, for example, data["keyl,,] is equivalent to obtaining the WData data in the child node corresponding to the keyl in the data. Because the WData in the returned child node The data is still CWData, so the square bracket operator is used directly in multiple levels, similar to the use of multidimensional arrays.
- IWData 501 Data interface
- reading of data can be as follows:
- the read sub-WData can have its own Value and sub-WData.
- the Value module in each node can be implemented using the VARIANT structure.
- WData is encapsulated with C++Wrapper wrapper class 503 to get CWData, CWData is used to store data, and the stored data is type converted: CWData data;
- the specific type can be specified by the user when performing data type conversion. Since the CWData common data type has a data type judgment function, the basic type of data in data can be directly converted to a specified type. Alternatively, the user may not be required to specify a specific type, and the CWData common data type converts the basic type of data according to the default type of the stored data. For example, when the data in data is a number, it is converted to the default type of the number. When the data in data is a string, it is converted to the default type of the string.
- the character stores the string in the Value module of the root node of the data, and this operation also implements converting the data type of the data root node from an integer to a string, and the type identifier is changed from an integer to a string.
- the storage and use of the WData data is more convenient and convenient, so that the communication system can run faster and the maintenance of the communication system is more convenient. Convenient, it can save the maintenance cost of the communication system.
- the general data type WData is encapsulated by the C++ Wrapper wrapper class 503, and the data stored as the general data type WData is transferred between the modules of the communication system.
- the technical solution of the present invention can be utilized in the microblog system.
- the user information of the microblog is stored, and the stored microblog user data is transmitted between the modules of the microblog system.
- the module A in the Weibo system is as follows:
- Module A can call module B with msg as a parameter, for example:
- module A can pass three data "id", "content” and “time” to module B through a msg variable, so that modules A and B can be implemented.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
一种存储数据的方法及装置 技术领域
本发明涉及计算机技术领域,具体涉及一种存储数据的方法及装置。 发明背景
随着计算机技术和网络技术的发展, 出现了各种各样的基于计算机 的通讯系统, 比如即时通讯 IM系统, 微博通讯系统等。 在这类通讯系 统中, 需要对系统的数据进行存储以及使用, 以实现系统的各种功能。 其中数据的存储和使用可以通过各种程序语言来实现。 在程序语言中, 一般需要将数据按照一定的类型进行存储, 并且编译器在编译阶段(尤 其是 C++这种强类型语言中)会对数据的类型安全进行严格的检查, 不 同的数据类型, 是不能够互相转换、 赋值的。 在此情况下, 当存储一些 稍微复杂一点的数据时,往往需要使用 stl结合一些自定义数据结构来存 储。 而对于不同场景下的数据,往往又需要定义不同的数据结构。 因此, 采用这种方法存储的数据使用起来比较麻烦。
基于上述原因, 出现一些改进的存储方法, 以实现不同数据类型的 灵活使用, 比如转换、 读取或传递等。 例如, 在脚本语言中, 在存储数 据时, 使用 VARIANT结构来表示数据类型。 然而, VARIANT结构中, 一次只能有一种类型是有效的, 也就是每次只能处理一个数据, 没办法 既存储数字, 又存储字符串, 不能批量处理数据。 发明内容
有鉴于此, 本发明实施例提供了一种存储数据的方法及装置, 该方
法及装置可以处理批量数据。
根据本发明实施例, 一种存储数据的方法包括:
建立至少包括作为根节点的第一节点的自定义数据结构, 其中, 该 自定义数据结构的每个节点包括第一模块, 用于存储数据的类型标识和 值, 以及第二模块用于存储该节点的子节点的标识与子节点之间的映射 列表;
每接收一个数据判断数据将要存储的位置以及接收的数据的类型; 如果数据存储于第一节点, 将数据的类型以及数据的值存储在第一 节点的第一模块中;
如果数据存储于自定义数据结构的第二节点,将数据的类型以及数 据的值存储在第二节点的第一模块中。
根据本发明另一实施例, 一种存储数据的装置包括:
数据接口, 用于接收数据;
通用数据类型组件, 用于建立并保存至少包括作为根节点的第一节 点的自定义数据结构, 其中, 该自定义数据结构的每个节点包括第一模 块, 用于存储数据的类型标识和值, 以及第二模块用于存储该节点的子 节点的标识与子节点之间的映射列表; 每当数据接口接收一个数据, 判 断数据将要存储的位置以及数据的类型; 如果数据存储于第一节点, 则 将数据的类型以及数据的值存储在第一节点的第一模块中; 如果数据存 储于自定义数据结构的第二节点中, 则将数据的类型以及数据的值存储 在第二节点的第一模块中。
根据本发明又一实施例, 一种通用数据类型组件包括: 节点建立模 块, 判断模块和存储模块;
节点建立模块, 用于建立并保存至少包括作为根节点的第一节点的 自定义数据结构, 其中, 自定义数据结构的每个节点包括第一模块, 用
于存储数据的类型标识和值, 以及第二模块用于存储该节点的子节点的 标识与子节点之间的映射列表;
判断模块, 用于每接收一个数据后, 判断数据将存储于自定义数据 结构的第一节点或第二节点, 且判断数据的类型, 并将判断结果通知给 存储模块;
存储模块, 用于在判断模块判断数据将存储于第一节点时, 将数据 的类型以及数据的值存储在第一节点的第一模块中; 在判断模块判断数 据将存储于自定义数据结构的第二节点时, 将数据的类型以及数据的值 存储在第二节点的第一模块中。
与现有技术相比, 本发明实施例的自定义数据结构定义了一种通用 数据类型; 当将数据存储为该通用数据类型时, 该通用数据类型可以判 断待存储数据的基本类型, 并将待存储数据的基本类型和值进行存储。 而且, 由于在一个自定义数据结构定义的通用数据类型中, 每个节点都 可以设有其子节点的 <标识, 子节点 >的映射列表, 因此, 可以将大量的 数据存储于该通用数据类型中。 这种情况下, 只要将大量的数据存储成 一个通用数据类型, 则使用该通用数据类型定义的一个变量就可以存储 大量的数据。 并且, 由于这种通用数据类型中各节点间存储的数据类型 可以不同, 因此通用数据类型可以存储不同类型的数据, 则使用该通用 数据类型定义的一个变量就可以表示大量的具有不同类型的数据。
并且, 由于通用数据类型的变量中各个节点都有各自的类型标识, 因此各个节点可以存储不同类型的数据, 而不需要存储兼容类型的数 据, 比如: 可以存储 LONG和 int数据, 也可以存储 BSTR字符串数据, 等。
附图简要说明
图 1为根据本发明实施例的一种存储数据的方法的流程图; 图 2为本发明实施例中存储数据的存储模型;
图 3示出了本发明实施例中存储数据的通用数据类型的树状结构; 图 4为本发明实施例的一种存储数据的装置;
图 5为本发明另一实施例的一种存储数据的装置。 实施本发明的方式 为使本发明的目的、 技术方案和优点更加清楚明白, 以下举具体实 施例并参照附图, 对本发明作进一步详细说明。
图 1为根据本发明实施例的一种存储数据的方法的流程图。 如图 1 所示, 该方法包括:
步骤 101 : 建立至少包括第一节点的自定义数据结构。
在本步骤中, 该第一节点为根节点。 每个节点包括第一模块, 用于 存储数据的类型标识和值, 以及第二模块用于存储该节点的子节点的标 识与其子节点之间的映射列表。
为了描述方便, 本发明将这种自定义数据结构定义的数据类型称为 通用数据类型 (记为 WData )。
步骤 102: 每接收一个数据判断数据将要存储的位置以及数据的类 型。
本步骤中, 当用户为具有自定义数据结构的变量赋值时, 则自定义 数据结构接收到数据。 在此, 用户为变量赋值相当于将数据存储于该变 量中;数据的类型可以是任何的基本类型,比如整型( int ) ,浮点型( float ), 字节型 (byte )等。
步骤 103: 如果数据存储于第一节点, 则将数据的类型以及数据的 值存储在第一节点的第一模块中。
本步骤中, 当数据存储于第一节点, 即存储于根节点时, 该根节点 无需对应一个节点标识与节点之间的映射列表,即<1«^ WData节点 >(以 下筒称 <key, WData> )。 并且, 当自定义数据结构中仅有第一节点, 则第 一节点中的第二模块的映射列表为空。 当第一节点存在子节点时, 则第 一节点中的第二模块的映射列表记录第一节点的子节点标识与子节点 之间的映射列表<1¾^ WData>。
步骤 104: 如果数据存储于自定义数据结构的其他节点 (称为第二 节点 ), 则将数据的类型以及数据的值存储在第二节点的第一模块中。
本步骤中, 当数据存储于第二节点时, 由于第二节点为子节点, 则 该数据属于子数据。 此时, 第二节点对应一个节点标识与节点之间的映 射列表, 比如 <key2, WData 该映射列表存储于第二节点的父节点中, 用于索引父节点的子节点, 从而索引子节点中的数据。
在步骤 104之前, 还包括: 判断自定义数据结构中是否包括第二节 点; 如果没有, 则建立所述自定义数据结构的第二节点; 否则, 直接将 数据的类型以及数据的值存储在所述第二节点的第一模块中。
建立自定义数据结构的第二节点可以包括: 在第二节点的父节点的 第二模块中填写第二节点的标识与第二节点之间的映射列表。
同理, 当接收到存储于第二节点的子节点的数据时, 在第二节点中 的第二模块填写子节点的标识与子节点之间的映射列表。
以上的自定义数据结构可以由 C++语言、 或脚本语言或 VB语言等 来实现。
由以上实施例可以看出, 由于自定义数据结构定义了一种通用数据 类型; 当将数据存储为该通用数据类型时, 该通用数据类型可以先判断
待存储数据的类型, 并将待存储数据的类型和值进行存储。 因而, 用户 在存储数据时, 不用手动进行不同数据类型的转换。
而且, 由于在一个自定义数据结构的通用数据类型中, 每个节点都 可以设有其子节点的 <key, WData>映射列表, 因此, 可以将大量的数据 存储于该通用数据类型中。 这种情况下, 只要将大量的数据存储成一个 通用数据类型, 则可以在传递一个通用数据类型的变量的情况下传递大 量的数据, 从而可以大大筒化通讯系统的构建和维护。
图 2为本发明实施例中存储数据的存储模型, 即示出了自定义数据 结构中每个节点的存储模型。 如图 2所示, 每个存储模型至少存储一个 WData数据, 其包括第一模块( Value模块), 用于存储 WData数据的类 型标识和值, 以及第二模块(<key, WData^¾块), 用于存储该节点的子 节点的标识与子节点之间的映射列表<1¾^ WData 在第二模块中, key 可以使用字符串表示。
通过以上的存储模型,通用数据类型 WData可以构造成一个树状的 通用数据类型。
根据本发明实施例, 上述的第一模块可以利用 VARIANT结构来实 现数据的类型标识和值的存储。 具体地, VARIANT 结构的内部利用一 个类型标识来表示具体的数据类型。 当需要使用存储的数据时, 可以根 据 VARIANT结构中的类型标识来判断数据的类型, 然后获取存储的数 据。
VARIANT结构的定义如下:
struct tag VARIANT union
{
struct—tag VARIANT
VARTYPE ; II类型标识
WORD wReservedl
WORD wReserved2
WORD wRese}-ved3
II 以下为具体的类型, 每次只有一个有效 II具体根据类型标识来判断哪个类型有效 union
LONG Wak
BYTE hVah
SHORT iVa
FLOAT iliVah
在定义 VARIANT结构后, 则可以按照上述结构存储数据。 在存储 数据后, 则可以使用存储的数据。
图 3示出了本发明实施例中存储数据的通用数据类型的树状结构。 如图 3所示, 第一节点 (根节点)可以有一个或多个子节点, 而每个子 节点也可以有一个或多个子节点, 依此类从。 这种情况下, 一个通用数 据类型的变量可以存储大量的数据。 并且, 由于 <key, WData>¾种映射 关系的使用, 可以很方便地读取各个存储的数据, 并可以方便地改变存 储的某个或某些数据的数据类型或数据值。 图 3中, 第一节点的第一模
块存储自身的一个值, 以及该值的类型标识, 第二模块中存储的 <key, \¥0&〖&>列表包括 5个映射关系, 即 (keyl, WData), (key2, WData), (key3, WData), (key4, WData) 和 (key5, WData)。 其中, (key 3, WData)对应的 节点的第二模块中又存储有包括 2个映射关系的<1¾^ WData>列表, 即 (key6, WData) 和 (key7, WData); 而 (key4, WData)对应的节点的第二模 块中又存储有包括一个映射关系的<1«^ WData>列表,即 (key8, WData)„ 由此可见, 本发明实施例提出的存储模型是一种递归的存储方式, 可以构成树状的通用数据类型, 存储大量的数据。
图 3所示的树状结构只是本发明的通用数据类型的一种结构, 并不 用于限制本发明通用数据类型的结构。 本发明的通用数据类型还可以由 嵌套结构等具有多级索引特性的其他结构来实现。
在通过图 2和图 3所示的通用数据类型定义了一个变量之后, 则可 以方便地利用该变量对数据进行操作, 比如对数据进行读取、 转换以及 传递。
图 1所示的存储数据的方法可以实现不同类型的数据在同一变量中 的存储, 并且可以实现大量的数据的多级存储, 比如图 3所示的树状存 储。 在以下实施例中, 以 C++语言的系统为例并结合图 3所示的树状结 构, 说明本发明实施例中的数据存储方法。
在 C++语言中, 定义一个通用数据类型以及将数据存储在通用数据 类型可以如下所示:
WData data; data = 5; data="xxx";
data["keyl"] = 10; data["keyl"] =,,sss,,;
data["key3"]["key6"] = 15;
data["key 3"] ["key6"] [...][...] ...
从以上可以看出, 首先定义了一个通用数据类型的变量 data。其次,
则可以对变量 data进行赋值,即可以在 data中存储数据。在本实施例中, 给 data赋值整型数据 "5"; 再次, 还可以给 data赋值字符串数据" xxx", 即将字符串数据 "xxx"存储到 WData通用数据类型的变量 data中, 覆盖 了之前存储的整型数据" 5"。 具体地, 可以通过重载" = "操作符的方式实 现将数据" 5"或" xxx"存储在变量 data的根节点的第一模块中 (即 Value 模块中)。
除了将数据存储在根节点外, 还可以进行多级存储, 即可以在根节 点的子节点存储数据。 例如, 在 keyl对应的子节点中存储整型数据 10 或字符串数据 "sss"。 再例如, 在 key3对应的子节点中的 key6对应的子 节点中存储整型数据 15。 通过以上的存储方法, 可以将大量的不同类型 的数据存储在一个通用数据类型的变量中, 从而可以方便数据的使用。 在多级存储中, 可以重载 "[]"操作符来实现 key与各个 WData的映射。
在采用图 1所示的方法存储数据之后, 则可以方便地使用存储的数 据, 比如读取、 转换以及传递等。 以下将结合存储数据的装置来说明如 何使用存储的数据。
图 4为本发明实施例的一种存储数据的装置。 如图 4所示, 该装置 包括:
数据接口 401 , 用于接收数据;
通用数据类型组件 402, 用于建立并存储至少包括作为根节点的第 一节点的自定义数据结构, 其中, 每个节点包括第一模块, 用于存储数 据的类型标识和值, 以及第二模块用于存储所述节点的子节点的标识与 子节点之间的映射列表; 每当数据接口 401接收一个数据, 用于判断数 据将要存储的位置以及数据的类型; 如果数据存储于第一节点, 则将数 据的类型以及数据的值存储在第一节点的第一模块中; 如果数据存储于 自定义数据结构中的第二节点, 将数据的类型以及数据的值存储在第二
节点的第一模块中。
根据本发明实施例, 通用数据类型组件 402包括: 节点建立模块, 判断模块和存储模块;
节点建立模块, 用于建立并保存至少包括作为根节点的第一节点的 自定义数据结构;
判断模块, 用于判断数据存储于第一节点或第二节点以及数据的类 型, 并将判断结果通知给存储模块;
存储模块, 用于根据判断模块的判断结果, 将数据的类型以及数据 的值存储在所述第一节点的第一模块中或将数据的类型以及数据的值 存储在第二节点的第一模块中。
根据本发明实施例, 判断模块还用于在数据存储于所述自定义数据 结构的第二节点时, 判断自定义数据结构中是否包括第二节点; 如果没 有, 则通知节点建立模块建立自定义数据结构的第二节点; 否则, 通知 存储模块将数据的类型以及数据的值存储在第二节点的第一模块中。
根据本发明实施例, 节点建立模块通过在第二节点的父节点的第二 模块中填写第二节点的标识与第二节点之间的映射列表来建立第二节 点。
根据本发明实施例, 数据接口 401还用于从通用数据类型组件 402 读取第一节点的第一模块中的数据, 以及根据节点标识从通用数据类型 组件 402读取与节点标识对应的节点中存储的数据。
根据本发明实施例, 判断模块还用于判断某个节点的数据的类型是 否与新接收的待存储于所述节点的数据的类型不同, 如果不同, 则修改 节点的第一模块中的数据的类型标识以及值; 和 /或
判断模块还用于判断是否接收到对自定义数据结构中的某个节点的 数据的类型转换操作, 如果是, 则修改节点的第一模块中的数据的类型
标识。
根据本发明实施例, 通用数据类型组件 402还包括传递模块, 用于 将自定义数据结构在不同或相同程序语言环境的模块间直接传递。
根据本发明实施例, 通用数据类型组件可以由 C++语言、 或脚本语 言、 VB语言来实现。
根据本发明实施例, 当通用数据类型组件由 C++语言实现时, 该装 置还包括 C++封装类( C++ Wrapper ) , 用于对通用数据类型组件 402中 的自定义数据结构进行封装。
图 5为本发明另一实施例的一种存储数据的装置。 如图 5所示, 以 利用 C++语言来实现本发明的自定义数据结构为例, 该装置包括: 数据 接口 IWData 501 ,用于接收或发送数据; WData通用数据类型组件 502, 用于根据图 1所示的方法存储接收的数据; C++Wrapper封装类 503, 用 于对自定义数据结构的通用数据类型 WData进行封装, 从而可以使用 "=" 和 /或 "[]"操作符来实现数据的存储和 /或多级存储。而 WData通用数 据类型组件 502可以是 C++中的 Com组件。 在本发明实施例中, 通过 数据接口 IWData 501还可以读取 WData中根节点的数据值, 并可以根 据 key读取 WData中子节点的数据值。
在图 5所示的实施例中, C++Wrapper封装类 503将 WData通用数 据类型组件 502封装成 CWData组件。 具体地, C++Wrapper封装类 503 利用智能指针 CComPtr<IWData>对数据接口 IWData 501进行封装, 从 而使得在使用 CWData组件时与直接通过数据接口 IWData 501来使用 WData通用数据类型组件 502没有区别。 同时, CWData通过重载" =" 等号操作符, 即重新定义" = "的含义, 使得" = "具有判断 WData中的数 据以及数据类型的功能, 并通过重载类型转换操作符 (比如 (int )、 ( BYTE )等), 即对类型转换操作符重新定义, 使得类型转换符具有判
断 WData中的数据以及将 WData中的数据进行类型转换的功能, 可以 实现在 C++中在一个通用数据类型的变量中存储不同类型的数据, 以及 使用任意类型的数据; 通过重载 "[]"方括号操作符, 实现了获取子节点 中的 WData数据的操作, 比如 data["keyl,,]就等价于获取 data中 keyl 对应的子节点中的 WData数据。 由于返回的子节点中的 WData数据仍 然是 CWData, 所以直接多级使用方括号操作符, 类似多维数组的使用。
在本发明又一实施例中, 以图 5所示的装置来说明如何使用存储的 数据。 具体地, 说明对存储的数据的读取、 转换以及传递。
1 )数据接口 IWData 501的定义以及数据的读取可以如下:
数据接口定义:
interface IWData: IDispatch
II读取 WData自身 Value
HRESULT GetValue(VARIANT* pVar);
HRESULT SetValue(VARIANT var);
〃根据 key读取子 WData的操作,读取的子 WData又可以 〃有自身的 Value和子 WData.
HRESULT GetSubData(BSTR bsKey, IWData** ppData); HRESULT SetSubData(BSTR bsKey,IWData* pData);
在以上实例中, 每个节点中的 Value模块可以使用 VARIANT结构 来实现。
2 )将 WData用 C++Wrapper封装类 503封装之后得到 CWData, 利 用 CWData存储数据, 并对存储的数据进行类型转换:
CWData data;
data = 10;
data = "string";
data[l] = 10;
data["key"] = 20;
data["keyl"]["key2"]["key3"] = "test";
int x = (int)data;
data = (BYTE)3;
由以上的使用实例可以看出, 在进行数据类型转换时, 可以由用户 指定具体的类型。由于 CWData通用数据类型中具有数据类型判断功能, 可以将 data中数据的基本类型直接转换为指定的类型。 又或者, 可以不 需要用户指定具体的类型, 而且由 CWData通用数据类型根据存储的数 据的默认类型对 data的基本类型进行转换。 比如, 当 data中的数据是数 字时, 则转换为数字的默认类型, 当 data中的数据是字符串时, 则转换 为字符串的默认类型。
比如, "data = 10"中, 利用重载的" = "操作符把 10存储在 data的根 节点的 Value模块, 而之后 "data = "string"的操作中, 利用重载的" = "操 作符把 string存储在 data的根节点的 Value模块中, 而此操作同时也是 实现了将 data根节点的数据类型由整型转换为字符串型,此时类型标识 由整型改为字符串型。
当然, 也可以不利用 C++Wrapper封装类 503封装 WData, 而直接 使用 WData存储数据, 并对存储的数据进行使用。 但是, 这种情况下, 操作会比较复杂, 比如:
〃直接使用 WData存储和使用数据
CComPtr<IWData> pData;
Create WData(&pData);
pData->SetValue(CComVariant( 10));
pData->SetValue(CComVariant("string"));
CComPtr<IWData> pSubData;
pData->GetSubValue("key,,,&pSubData); pSubData->SetValue(CcomVariant(20)); 以上直接使用 WData存储和使用数据的结果相当于使用 CWData的 如下操作的结果:
CWData data;
data = 10;
data = "string";
data[l] = 10;
data["key"] = 20;
由此可见, 利用 C++Wrapper封装类 503封装 WData组件后, 对 WData的数据的存储和使用更加筒洁、 方便, 从而可以使得通讯系统的 运行速度更快, 且通讯系统的维护也会更加方便, 可以节省通讯系统的 维护成本。
3 )利用 C++Wrapper封装类 503封装通用数据类型 WData, 在通讯 系统的各模块间传递被存储为通用数据类型 WData的数据, 例如, 可以 将本发明的技术方案利用在微博系统中以存储微博的用户资料, 并在微 博系统的各模块间传递存储的微博用户资料。
例如, 微博系统中具有模块 A如下:
CWData msg;
msg["id"] = ...;
msg ["content"] = "xxxxx:
msg["time"] =…;
而模块 A可以将 msg作为参数调用模块 B , 例如:
ShowMsg(CWData msg);
模块 B如下:
Void ShowMsg (CWData msg)
//显示内容
... msg ["content"] ...
//显示时间
... msg ["time"] ...
从以上模块 A和 B之间的调用实例可以看出, 模块 A可以通过一 个 msg变量将 "id", "content" 和 "time"三个数据传递给模块 B ,从而可 以实现模块 A和 B之间的大量数据的传递。 因此,可以筒化微博系统的 建立和维护过程, 节省 專系统的开发和维护成本。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡 在本发明的精神和原则之内所做的任何修改、 等同替换和改进等, 均应 包含在本发明的保护范围之内。
Claims
1、 一种存储数据的方法, 其特征在于, 包括以下步骤:
建立至少包括作为根节点的第一节点的自定义数据结构, 其中, 所述自定义数据结构中的每个节点包括第一模块,用于存储数据的类 型标识和值,以及第二模块用于存储所述节点的子节点的标识与子节 点之间的映射列表;
每接收一个数据, 判断所述数据将要存储的位置以及所述接收的 数据的类型;
如果所述数据存储于所述第一节点, 将数据的类型以及数据的值 存储在所述第一节点的第一模块中;
如果所述数据存储于所述自定义数据结构中的第二节点, 将数据 的类型以及数据的值存储在所述第二节点的第一模块中。
2、 如权利要求 1 所述的方法, 其特征在于, 还包括: 如果所述 数据要存储于所述自定义数据结构中的第二节点,判断所述自定义数 据结构中是否包括所述第二节点;
如果没有, 则建立所述自定义数据结构中的第二节点;
否则, 直接将数据的类型以及数据的值存储在所述第二节点的第 一模块中。
3、 如权利要求 2所述的方法, 其特征在于, 所述建立所述自定 义数据结构的第二节点包括:
在所述第二节点的父节点的第二模块中填写所述第二节点的标 识与所述第二节点之间的映射列表。
4、 如权利要求 1、 2或 3所述的方法, 其特征在于, 如果一个节 点没有子节点, 则其第二模块中的映射列表为空。
5、 如权利要求 4所述的方法, 其特征在于, 还包括: 通过重载 类型转换操作符以来实现对存储在所述自定义数据结构中的数据进 行类型的转换;
其中, 所述判断接收的数据的类型包括: 通过重载程序语言中的 等号操作符来实现对数据的类型的判断。
6、 如权利要求 4所述的方法, 其特征在于, 还包括读取存储在 所述自定义数据结构中的数据。
7、 如权利要求 4所述的方法, 其特征在于, 还包括通过传递所 多个或所有数据在不同或相同程序语言环境的模块之间传递。
8、 如权利要求 4所述的方法, 其特征在于, 所述自定义数据结 构由 C++语言、 或脚本语言或 VB语言实现。
9、 一种存储数据的装置, 其特征在于, 包括:
数据接口, 用于接收数据;
通用数据类型组件, 用于建立并保存至少包括作为根节点的第一 节点的自定义数据结构, 其中, 所述自定义数据结构中的每个节点包 括第一模块, 用于存储数据的类型标识和值, 以及第二模块用于存储 所述节点的子节点的标识与子节点之间的映射列表;每当数据接口接 收一个数据, 判断所述数据将要存储的位置以及数据的类型; 如果所 述数据存储于第一节点,则将数据的类型以及数据的值存储在所述第 一节点的第一模块中;如果所述数据存储于所述自定义数据结构的第 二节点中,则将数据的类型以及数据的值存储在所述第二节点的第一 模块中。
10、 如权利要求 9所述的装置, 其特征在于, 所述通用数据类型 组件包括: 节点建立模块、 判断模块和存储模块; 所述节点建立模块, 用于建立并保存至少包括作为根节点的第一 节点的自定义数据结构;
所述判断模块, 用于判断所述数据将存储于第一节点或第二节点 以及所述数据的类型, 并将判断结果通知给所述存储模块;
所述存储模块, 用于根据判断模块的判断结果, 将数据的类型以 及数据的值存储在所述第一节点的第一模块中或将数据的类型以及 数据的值存储在所述第二节点的第一模块中。
11、 如权利要求 10所述的装置, 其特征在于, 所述判断模块还 用于当所述数据将存储于所述自定义数据结构的第二节点时,判断所 述自定义数据结构中是否包括所述第二节点; 如果没有, 则通知所述 节点建立模块建立所述自定义数据结构的第二节点; 否则, 通知所述 存储模块将数据的类型以及数据的值存储在所述第二节点的第一模 块中。
12、 如权利要求 11 所述的装置, 其特征在于, 所述节点建立模 块通过在所述第二节点的父节点的第二模块中填写所述第二节点的 标识与所述第二节点之间的映射列表来建立所述第二节点。
13、 如权利要求 10、 11或 12所述的装置, 其特征在于, 所述通 用数据类型组件由 C++程序语言实现; 所述装置还包括: C++封装类
( C++ Wrapper ) , 用于对通用数据类型组件中的自定义数据结构进 行封装。
14、 如权利要求 12所述的装置, 其特征在于, 所述数据接口还 用于从所述通用数据类型组件读取第一节点的第一模块中的数据,以 及根据节点标识从所述通用数据类型组件读取与所述节, 标识对应 的节点中存储的数据。
15、 如权利要求 12所述的装置, 其特征在于, 所述判断模块还 用于判断某个节点的数据的类型是否与新接收的待存储于所述节点 的数据的类型不同, 如果不同, 则修改所述节点的第一模块中的数据 的类型标识以及值; 和 /或
所述判断模块还用于判断是否接收到对所述自定义数据结构中 的某个节点的数据的类型转换操作, 如果是, 则修改所述节点的第一 模块中的数据的类型标识。
16、 如权利要求 12所述的装置, 其特征在于, 所述通用数据类 型组件还包括传递模块,用于通过传递所述自定义数据结构来实现将 存储在自定义数据结构中一个或多个或所有数据在不同或相同程序 语言环境的模块间的传递。
17、 如权利要求 9、 10或 11所述的装置, 其特征在于, 所述数 据接口是 COM接口。
18、 一种通用数据类型组件, 其特征在于, 包括: 节点建立模块, 判断模块和存储模块;
所述节点建立模块, 用于建立并保存至少包括作为根节点的第一 节点的自定义数据结构, 其中, 所述自定义数据结构中的每个节点包 括第一模块, 用于存储数据的类型标识和值, 以及第二模块用于存储 所述节点的子节点的标识与子节点之间的映射列表;
所述判断模块, 用于每接收一个数据后, 判断所述数据将存储于 第一节点或所述自定义数据结构的第二节点, 判断数据的类型, 并将 判断结果通知给所述存储模块;
所述存储模块, 用于当所述判断模块判断所述数据将存储于第一 节点时,将数据的类型以及数据的值存储在所述第一节点的第一模块 中;在所述判断模块判断所述数据将存储于所述自定义数据结构的第 二节点时,将数据的类型以及数据的值存储在所述第二节点的第一模 oz
SC06.0/llOZN3/X3d LLtt£0/ZlOZ OAV
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/642,518 US20130036143A1 (en) | 2010-09-14 | 2011-08-29 | Method and Device for Data Storage |
| EP11824547.1A EP2618268A4 (en) | 2010-09-14 | 2011-08-29 | Method and device for data storage |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201010283713.5A CN102402545B (zh) | 2010-09-14 | 2010-09-14 | 一种存储数据的方法及装置 |
| CN201010283713.5 | 2010-09-14 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2012034477A1 true WO2012034477A1 (zh) | 2012-03-22 |
Family
ID=45831003
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2011/079035 Ceased WO2012034477A1 (zh) | 2010-09-14 | 2011-08-29 | 一种存储数据的方法及装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20130036143A1 (zh) |
| EP (1) | EP2618268A4 (zh) |
| CN (1) | CN102402545B (zh) |
| WO (1) | WO2012034477A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104636149A (zh) * | 2015-03-11 | 2015-05-20 | 中国农业银行股份有限公司 | 一种接口信息的获取方法及装置 |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103561019B (zh) * | 2013-10-30 | 2018-02-06 | 上海斐讯数据通信技术有限公司 | 一种针对tr069数据访问方法 |
| CN105451265A (zh) * | 2014-08-29 | 2016-03-30 | 中国移动通信集团公司 | 一种多用户下行数据的处理方法、装置及终端 |
| CN107168638A (zh) * | 2016-03-07 | 2017-09-15 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
| CN107545008B (zh) * | 2016-06-27 | 2021-02-19 | 五八同城信息技术有限公司 | 数据的格式要求存储方法及装置 |
| CN106294701B (zh) * | 2016-08-08 | 2019-08-23 | 武汉斗鱼网络科技有限公司 | 网站前端的数据缓存系统及方法 |
| US10776426B1 (en) * | 2017-04-28 | 2020-09-15 | EMC IP Holding Company LLC | Capacity management for trees under multi-version concurrency control |
| CN107315539B (zh) * | 2017-05-12 | 2020-08-04 | 武汉斗鱼网络科技有限公司 | 一种数据存储方法以及数据提取方法 |
| CN109614371B (zh) * | 2018-10-23 | 2024-01-16 | 平安科技(深圳)有限公司 | 存储信息的方法、装置、计算机设备及存储介质 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050262471A1 (en) * | 2004-05-21 | 2005-11-24 | Bea Sytems, Inc. | System and method for managing cross project dependencies at development time |
| US7627604B2 (en) * | 2004-03-16 | 2009-12-01 | Turbo Data Laboratories, Inc. | Method for handling tree-type data structure, information processing device, and program |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5680619A (en) * | 1995-04-03 | 1997-10-21 | Mfactory, Inc. | Hierarchical encapsulation of instantiated objects in a multimedia authoring system |
| US6063128A (en) * | 1996-03-06 | 2000-05-16 | Bentley Systems, Incorporated | Object-oriented computerized modeling system |
| US6437805B1 (en) * | 1996-09-23 | 2002-08-20 | National Instruments Corporation | System and method for accessing object capabilities in a graphical program |
| US20020087596A1 (en) * | 2000-12-29 | 2002-07-04 | Steve Lewontin | Compact tree representation of markup languages |
| US6986147B2 (en) * | 2001-03-28 | 2006-01-10 | International Business Machines Corporation | Method for transparent, location-independent, remote procedure calls in a heterogeneous network environment |
| WO2004006067A2 (en) * | 2002-07-09 | 2004-01-15 | Intelitrac, Inc. | System and method for structuring data in a computer system |
| US6990632B2 (en) * | 2003-02-28 | 2006-01-24 | Microsoft Corporation | Method and system for inferring a schema from a hierarchical data structure for use in a spreadsheet |
| WO2006038498A1 (ja) * | 2004-10-01 | 2006-04-13 | Turbo Data Laboratories Inc. | 配列の生成方法、及び、配列生成プログラム |
| KR20070101288A (ko) * | 2005-01-25 | 2007-10-16 | 가부시키가이샤 터보 데이터 라보라토리 | 트리의 검색, 집계, 소트 방법, 정보 처리 장치, 및 트리의검색, 집계, 소트 프로그램 |
| JP4886693B2 (ja) * | 2005-08-12 | 2012-02-29 | 株式会社ターボデータラボラトリー | 情報処理方法、情報処理装置および情報処理プログラム |
| US7552125B1 (en) * | 2006-03-22 | 2009-06-23 | Emc Corporation | Synergistic data structures |
| US20080010256A1 (en) * | 2006-06-05 | 2008-01-10 | Mark Logic Corporation | Element query method and system |
| US7886223B2 (en) * | 2006-11-17 | 2011-02-08 | International Business Machines Corporation | Generating a statistical tree for encoding/decoding an XML document |
| US8898325B2 (en) * | 2007-03-06 | 2014-11-25 | Trion Worlds, Inc. | Apparatus, method, and computer readable media to perform transactions in association with participants interacting in a synthetic environment |
| US8069188B2 (en) * | 2007-05-07 | 2011-11-29 | Applied Technical Systems, Inc. | Database system storing a data structure that includes data nodes connected by context nodes and related method |
| US20110145255A1 (en) * | 2009-12-11 | 2011-06-16 | Sap Ag. | Systems and methods for distribution of data in a database index |
-
2010
- 2010-09-14 CN CN201010283713.5A patent/CN102402545B/zh active Active
-
2011
- 2011-08-29 WO PCT/CN2011/079035 patent/WO2012034477A1/zh not_active Ceased
- 2011-08-29 EP EP11824547.1A patent/EP2618268A4/en not_active Ceased
- 2011-08-29 US US13/642,518 patent/US20130036143A1/en not_active Abandoned
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7627604B2 (en) * | 2004-03-16 | 2009-12-01 | Turbo Data Laboratories, Inc. | Method for handling tree-type data structure, information processing device, and program |
| US20050262471A1 (en) * | 2004-05-21 | 2005-11-24 | Bea Sytems, Inc. | System and method for managing cross project dependencies at development time |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104636149A (zh) * | 2015-03-11 | 2015-05-20 | 中国农业银行股份有限公司 | 一种接口信息的获取方法及装置 |
| CN104636149B (zh) * | 2015-03-11 | 2018-03-27 | 中国农业银行股份有限公司 | 一种接口信息的获取方法及装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN102402545B (zh) | 2015-09-02 |
| US20130036143A1 (en) | 2013-02-07 |
| EP2618268A1 (en) | 2013-07-24 |
| CN102402545A (zh) | 2012-04-04 |
| EP2618268A4 (en) | 2017-01-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2012034477A1 (zh) | 一种存储数据的方法及装置 | |
| CN102104883B (zh) | 一种m2m平台定义消息的方法、系统和m2m平台 | |
| EP4408042B1 (en) | Lightweight iot information model | |
| US7269821B2 (en) | Method and device for management of tree data exchange | |
| US20080301320A1 (en) | Method And System For Managing Communication Protocol Data Based On MIME Types | |
| CN102404306B (zh) | 一种配置协议的方法及装置 | |
| CN103513976B (zh) | 业务流程建模方法及装置 | |
| CN103401930B (zh) | 一种基于Web Service的工业监控方法及装置 | |
| CN101557297A (zh) | 一种基于互联网的开放式电信业务生成系统及方法 | |
| CN104717647B (zh) | 业务能力鉴权方法、设备及系统 | |
| CN108366356A (zh) | M2m系统与标识解析系统的互通方法及装置 | |
| CN103297554A (zh) | IPv4和IPv6兼容处理的方法及装置 | |
| CN113590348B (zh) | 基于树状结构的参数传递方法、装置、设备及介质 | |
| CN101316296A (zh) | 管理多种电子工单生成的方法及系统 | |
| CN112804186A (zh) | 一种can通用报文数据库生成方法 | |
| CN115065594A (zh) | 数据配置方法、装置、设备、可读存储介质及程序产品 | |
| CN114844961B (zh) | 一种分布式系统协议互通方法、装置、设备及存储介质 | |
| CN108199834A (zh) | 一种智能密钥设备工作的方法及装置 | |
| CN118400443B (zh) | 电能表数据转换方法、装置、计算机设备及存储介质 | |
| CN117792896B (zh) | 一种基于fpga的配置管理系统及配置管理方法 | |
| CN101499922B (zh) | 数据转换方法、装置、终端以及服务器 | |
| WO2024244333A1 (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
| WO2024016726A1 (zh) | 设备配置方法、网络设备、芯片及计算机可读存储介质 | |
| CN116980495A (zh) | 一种数据转换方法、装置、计算机设备、介质及产品 | |
| CN115828192A (zh) | 水印加注方法、装置及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11824547 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 13642518 Country of ref document: US |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2011824547 Country of ref document: EP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |