CN114356927A - Data storage method and device, computer equipment and storage medium - Google Patents

Data storage method and device, computer equipment and storage medium Download PDF

Info

Publication number
CN114356927A
CN114356927A CN202111664816.0A CN202111664816A CN114356927A CN 114356927 A CN114356927 A CN 114356927A CN 202111664816 A CN202111664816 A CN 202111664816A CN 114356927 A CN114356927 A CN 114356927A
Authority
CN
China
Prior art keywords
node
tree
data
target
initial
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.)
Pending
Application number
CN202111664816.0A
Other languages
Chinese (zh)
Inventor
邱炜伟
张珂杰
郑柏川
黄方蕾
尚璇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202111664816.0A priority Critical patent/CN114356927A/en
Publication of CN114356927A publication Critical patent/CN114356927A/en
Priority to PCT/CN2022/122208 priority patent/WO2023124323A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures

Abstract

The embodiment of the application discloses a data storage method, a data storage device, computer equipment and a storage medium; the method comprises the steps of obtaining data to be stored, an initial Mercker B + tree and an idle identification table, wherein the idle identification table is used for storing idle identifications; storing the data to be stored into a target node of the initial Mercker B + tree; determining the target node and the ancestor node of the target node as nodes to be updated; updating the node to be updated according to the idle identification table; generating a target merkel B + tree. In the examples of the present application. After the data to be stored is stored in the node of the initial Mercker B + tree, when the data needs to be rolled back to any version, the root node is pointed to the root node of the corresponding target Mercker B + tree, and the data recovery cost can be reduced.

Description

Data storage method and device, computer equipment and storage medium
Technical Field
The present application relates to the field of blockchain technologies, and in particular, to a data storage method and apparatus, a computer device, and a storage medium.
Background
The blockchain is a novel application mode of computer technologies such as distributed data processing, point-to-point transmission, a consensus mechanism and an encryption algorithm. The blockchain is a common shared ledger on which the entire cryptographic digital currency network depends. All confirmed transactions are contained in the blockchain. In recent years, MPT (Merkle Patricia Tree) is often used to store block chain account data. However, since the MPT is indexed by prefix, the path is long and the data recovery cost is high.
Disclosure of Invention
The embodiment of the application provides a data storage method, a data storage device, computer equipment and a storage medium, and reduces data recovery cost.
An embodiment of the present application provides a data storage method, including: acquiring data to be stored, an initial Mercker B + tree and an idle identification table, wherein the idle identification table is used for storing idle identifications; storing the data to be stored into a target node of the initial Mercker B + tree; determining the target node and the ancestor node of the target node as nodes to be updated; updating the node to be updated according to the idle identification table; generating a target merkel B + tree.
An embodiment of the present application further provides a data storage device, including: the device comprises an acquisition unit, a storage unit and a processing unit, wherein the acquisition unit is used for acquiring data to be stored, an initial Mercker B + tree and an idle identification table, and the idle identification table is used for storing idle identifications; the storage unit is used for storing the data to be stored into a target node of the initial Mercker B + tree; the determining unit is used for determining the target node and an ancestor node of the target node as nodes to be updated; the updating unit is used for updating the node to be updated according to the idle identification table; and the generating unit is used for generating the target Mercker B + tree.
The embodiment of the application also provides computer equipment, which comprises a memory, a storage and a control unit, wherein the memory stores a plurality of instructions; the processor loads instructions from the memory to execute the steps of any one of the data storage methods provided by the embodiments of the present application.
Embodiments of the present application further provide a computer-readable storage medium, where a plurality of instructions are stored, where the instructions are suitable for being loaded by a processor to perform steps in any data storage method provided in the embodiments of the present application.
The method and the device for storing the data can obtain the data to be stored, an initial Mercker B + tree and an idle identification table, wherein the idle identification table is used for storing idle identifications; storing the data to be stored into a target node of the initial Mercker B + tree; determining the target node and the ancestor node of the target node as nodes to be updated; updating the node to be updated according to the idle identification table; generating a target merkel B + tree.
In the application, after the data to be stored is stored in the node of the initial merkel B + tree, the identifiers of the target node and the ancestor node of the target node are re-determined according to the idle identifier, so that the identifier of the root node of the target merkel B + tree is different from that of the initial merkel B + tree, that is, the identifier of the root node of the merkel B + tree before and after the data to be stored is different. In the application, as the multiple target tachr B + trees corresponding to different versions are stored, and the identifiers of the root nodes of the multiple target tachr B + trees are different, when the stored data needs to be rolled back to any version, the root node is only required to be pointed to the root node of the corresponding target tachr B + tree, so that the data recovery cost can be reduced.
Drawings
In order to more clearly illustrate the technical solutions in the embodiments of the present application, the drawings needed to be used in the description of the embodiments are briefly introduced below, and it is obvious that the drawings in the following description are only some embodiments of the present application, and it is obvious for those skilled in the art to obtain other drawings based on these drawings without creative efforts.
Fig. 1 is a schematic view of a scenario of a data storage method provided in an embodiment of the present application;
FIG. 2 is a schematic flow chart of a data storage method provided in an embodiment of the present application;
FIG. 3 is a schematic structural diagram of a Mercker B + tree provided by an embodiment of the present application;
FIG. 4 is a schematic diagram of splitting a node to be split according to an embodiment of the present application;
FIG. 5 is a schematic diagram illustrating updating a node to be updated according to a transaction according to an embodiment of the present application;
FIG. 6 is a schematic flow chart diagram illustrating a data storage method according to another embodiment of the present application;
FIG. 7 is a schematic structural diagram of a data storage device according to an embodiment of the present application;
fig. 8 is a schematic structural diagram of a computer device provided in an embodiment of the present application.
Detailed Description
The technical solutions in the embodiments of the present application will be clearly and completely described below with reference to the drawings in the embodiments of the present application, and it is obvious that the described embodiments are only a part of the embodiments of the present application, and not all of the embodiments. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present application.
The embodiment of the application provides a data storage method, a data storage device, computer equipment and a storage medium.
The data storage device may be specifically integrated in an electronic device, and the electronic device may be a terminal, a server, or the like. The terminal can be a mobile phone, a tablet Computer, an intelligent bluetooth device, a notebook Computer, or a Personal Computer (PC), and the like; the server may be a single server or a server cluster composed of a plurality of servers.
In some embodiments, the data storage device may also be integrated into a plurality of electronic devices, for example, the data storage device may be integrated into a plurality of servers, and the data storage method of the present application is implemented by the plurality of servers.
In some embodiments, the server may also be implemented in the form of a terminal.
For example, referring to fig. 1, in some embodiments, a data storage system is provided, which may include a terminal 1000, a server 2000, and a network 3000, and the server 2000 and the terminal 1000 may perform data interaction through the network 3000.
The server is used for acquiring data to be stored, an initial Mercker B + tree and an idle identification table, and the idle identification table is used for storing idle identifications; storing data to be stored into a target node of an initial Mercker B + tree; determining the target node and the ancestor node of the target node as nodes to be updated; updating the nodes to be updated according to the idle identification table; generating a target merkel B + tree. The terminal is a client and is used for providing data to be stored. The network is used for data transmission between the server and the terminal, and the network may be a wireless network or a wired network, for example, the wireless network is a Wireless Local Area Network (WLAN), a Local Area Network (LAN), a cellular network, a 2G network, a 3G network, a 4G network, a 5G network, or the like.
The following are detailed below.
In this embodiment, a data storage method is provided, and as shown in fig. 2, a specific flow of the data storage method may be as follows:
110. and acquiring data to be stored, an initial Mercker B + tree and an idle identification table, wherein the idle identification table is used for storing idle identifications.
The merkel B + tree is a structure of a B + tree based on a process of computing node hash, and the merkel B + tree includes index nodes and data nodes (i.e., leaf nodes) in the last layer. Each node in the Mercker B + tree has an identifier, the minimum key and the hash value of each child node are stored in the child node list of the index node, the key, value state data key value pairs are stored in the child node list of the data node, and the hash value of each node is obtained by the hash value of the sum of the child node lists of the node. In the Mercker B + tree shown in FIG. 3, n 1-n 3 are index nodes, n 4-n 6 are data nodes, and each node is stored in the disk in the form of pages by storing data in the form of key-value pairs into the data nodes.
The idle identifier refers to an identifier that is not used by a node in the initial merkel B + tree, and may include a preset identifier, an identifier of a recycled node, and the like.
The data to be stored may be data of a transaction generated by a blockchain transaction, and the data of the transaction may be a key-value pair corresponding to the transaction or other data related to the transaction. For example, the data of the transaction is stored in the data nodes of the initial Mercker B + tree in the form of key-value pairs. When the data to be stored is stored in the node of the initial Mercker B + tree, the data contained in the node of the initial Mercker B + tree is changed due to the storage of the data to be stored, but the structure of the initial Mercker B + tree is not changed. The Key-value pair (Key-value) contains an index value (Key) and a stored value (value) of the inserted data. The index value may be a numeric type, such as 3, 5.5, pi, etc., or a text type, such as a string type, or a byte type, and may be used for sorting key-value pairs. The storage value can be a character string, a linked list, a set, an ordered set and the like, and the storage value contains data information. The data to be stored can be stored in the nodes of the initial merkel B + tree according to the index values, each key-value pair being inserted in the node of the initial merkel B + tree matching it.
By storing the data to be stored into the node of the initial Mercker B + tree and combining the steps 120-150, the identifiers of the target node and the ancestor node of the target node are re-determined according to the idle identifier, so that the root node identifiers of the target Mercker B + tree and the initial Mercker B + tree are different, namely the root node identifiers of the Mercker B + tree before and after the data to be stored are different. In the application, as the multiple target tachr B + trees corresponding to different versions are stored in the disk, and the identifiers of the root nodes of the multiple target tachr B + trees are different, when the stored data needs to be rolled back to any version, only the root node needs to be pointed to the root node of the corresponding target tachr B + tree, so that the data recovery cost can be reduced.
The block chain node may maintain a transaction block chain ledger for a transaction, in which transaction transactions corresponding to different transactions are recorded, and in the block chain node, for each transaction recorded in the block chain ledger, a version of a mercker tree corresponding to each transaction is stored. Except for the first transaction on the uplink, the different versions of the Merck trees stored for other transactions are all initial versions of the Merck trees established for the first transaction based on block chain nodes, and the initial versions of the Merck trees are obtained after at least one version update. Because the obtained target Mercker B + tree can be used as an initial Mercker B + tree for storing data to be stored next time, under the condition of storing the historical target Mercker B + tree, any historical target Mercker B + tree can be quickly obtained through different root node identifications so as to realize data recovery.
In some embodiments, the initial merkel B + tree is a first initial merkel B + tree or a second initial merkel B + tree, when the initial merkel B + tree is the first initial merkel B + tree, the data to be stored is a first bond value pair, and the method for obtaining the initial merkel B + tree may include:
acquiring a plurality of data tables to be stored, wherein the data tables to be stored are used for storing a first key value pair;
generating a first initial Merck B + tree according to the first key value pair in each data table to be stored;
when the initial Mercker B + tree is the second initial Mercker B + tree, the data to be stored is the second key value pair, and the method for acquiring the initial Mercker B + tree comprises the following steps:
acquiring a data table identifier of a data table to be stored, and acquiring a root node identifier of a first initial Mercker B + tree;
generating a second key value pair according to a data table identifier corresponding to the data table to be stored and a root node identifier of a first initial Mercker B + tree corresponding to the data table to be stored aiming at each data table to be stored;
generating a second initial Mercker B + tree according to all the second key-value pairs.
The multiple data tables to be stored may be multiple tables determined by the same transaction, that is, the first key-value pair is a key-value pair corresponding to the same transaction. The data table identifier may be preset identification information used for marking different data tables, or may be information that can be used for marking different data tables, such as names of the data tables or types of the data tables, and the like. The data table can be set by a user in a self-defined mode and is used for storing different data.
For a single merkel B + tree, all data is stored in one tree, and the same is true for data requiring multiple tables, but the extensibility and performance are poor, for example, data of a certain table needs to be accessed frequently, and if the data falls into the whole tree, random access is performed, resulting in poor performance. Therefore, in this embodiment of the present application, when there are multiple data tables to be stored, a first initial merkel B + tree (subTree) may be respectively established for different data tables to be stored, and meanwhile, a second initial merkel B + tree (rootTree) may be established for multiple first initial merkel B + trees, where a key of a second key value pair may be a data table identifier corresponding to the data table to be stored, and a value may be a root node identifier of the first initial merkel B + tree corresponding to the data table to be stored. Therefore, when a key in any one table needs to be queried, the root node identifier corresponding to the table can be queried in the second initial merkel B + tree, then the corresponding first initial merkel B + tree is found according to the root node identifier, and then the key needing to be queried is found from the first initial merkel B + tree. Therefore, each data table to be stored is recorded through a plurality of first initial Merckel B + trees, and the data in the data table to be stored is continuous in high probability, so that the speed is higher during access and the expandability is good.
120. And storing the data to be stored into the target node of the initial Mercker B + tree.
Since data in the merkel B + tree is usually stored in the data node (i.e. leaf node) of the last layer, the target node is the data node corresponding to the data to be stored in the initial merkel B + tree. For example, if the data to be stored is added to a leaf node of the original merkel B + tree, the leaf node is the target node, and the specification can be implemented by adding an instruction. As shown in fig. 3, in the node n4, a key: "a", value: 1] and [ key: "b", value: 2] these two key-value pairs, i.e. the data to be stored.
130. And determining the target node and the ancestor node of the target node as the nodes to be updated.
The ancestor node refers to all nodes including a father node of the current node, the father node of the father node and up to the root node. Obviously, the ancestor of the target node contains the root node of the initial Mercker B + tree.
After the data to be stored is stored in the target node, the storage contents of the target node and the ancestor node of the target node are affected, so that the nodes are all used as the nodes to be updated, and the nodes are updated.
Since the split has a large impact on the performance, all key values of a single transaction are inserted in batches in the embodiment of the present application. That is, each key value in a single transaction is inserted, and node splitting is not triggered, but a dirty node (i.e., a node to be updated) generated by each key value pair insertion is recorded, and when all key values in the transaction are inserted, the whole tree is uniformly split according to dirty child nodes.
140. And updating the nodes to be updated according to the idle identification table.
The operation of the node to be updated refers to performing an update operation on the node to be updated due to the fact that the data to be stored is stored in the initial merkel B + tree target node, and the operation may include splitting the node to be updated which meets a preset splitting condition, determining the identifier of the first node according to the idle identifier, and the like. And the identifiers of the nodes obtained by updating the nodes to be updated according to the idle identifiers are all identifiers obtained from the idle identifier table.
In some embodiments, updating the node to be updated according to the idle identification table may include:
splitting nodes to be split to obtain a plurality of first nodes, wherein the nodes to be split are nodes which meet preset splitting conditions in the nodes to be updated;
and determining the identifier of a second node according to the idle identifier, wherein the second node comprises the first node, the node to be updated which does not meet the preset splitting condition, the ancestor node of the first node and the ancestor node of the node to be updated which does not meet the preset splitting condition.
The preset splitting condition is a preset condition for determining whether to split the node processing the Mercker B + tree or not. The preset splitting condition may be set according to experience or a current scenario, and the preset splitting condition may also include a threshold value of the length of the node storage list, and the like. For example, the target node may be the node in the initial merkel B + tree where the data to be stored is stored and the node in the ancestor node where the length of the storage list exceeds a threshold.
For example, to better accommodate the read/write strategy of the disk, each page size may be specified to be 4K (the disk page size is usually 4K), so that a certain node can be read from the disk by calculating the offset of page ID page size. By stipulating that each node can hold 4K data at most, if a certain data node inserts too many key-value pairs, which causes that the certain data node exceeds the threshold value of 4K, the data node is split into a plurality of new data nodes which do not exceed the threshold value, namely a first node, and corresponding new node information is inserted into a child node list of an original parent node, and then whether the parent node, namely an index node, exceeds the threshold value is recursively checked, and if the new node information exceeds the threshold value, the splitting process is repeated. It should be noted that if the root node is split, a new root node is created.
By splitting nodes satisfying a preset splitting condition (for example, nodes with the length of a storage list exceeding a threshold value), hash values can be calculated in parallel, and the writing performance is improved, so that the processing efficiency is improved. By splitting the nodes of the Mercker B + tree and then re-determining the identification of the second node, the changed nodes and root nodes can be re-marked, the specificity and the directivity of the target Mercker B + tree can be increased, and multi-version control and data rollback can be realized.
In some embodiments, the recursively examining from the leaf node to the root node of the merkel B + tree can quickly and comprehensively determine all the nodes to be split, specifically, the step of splitting the nodes to be split to obtain a plurality of first nodes may include the steps of:
determining a node to be split in a target node according to a preset splitting condition;
splitting a node to be split to obtain a plurality of first nodes when the node to be split exists in the target node;
and determining a node to be split from the father node of the target node according to a preset splitting condition, splitting the node to be split when the node to be split exists in the father node of the target node to obtain a plurality of first nodes until the node to be split is a root node.
As shown in FIG. 4, the whole database may be the initial Mercker B + tree before any transaction, and after a transaction is performed, the data to be stored is stored in A, B node of the initial Mercker B + tree, resulting in the Mercker B + tree to be processed. The two data nodes at the bottom of the merkel B + tree to be processed become dirty and exceed the threshold, so node a is split into node a1 and node a2, and new child node information is inserted into node C, which is also split into node B1 and node B2, at which time node C is further split into node C1 and node C2, because new child node information, also called dirty node, is inserted, and assuming that node C also exceeds the threshold at this time, a new root node D is created as its parent.
Because the merkel B + tree supports the merkel characteristic, after all target nodes are split, a hash value is calculated once, that is, after a new tree is obtained by splitting, hash values are calculated in parallel for the new tree, that is, hash values are calculated in parallel for the node C1 and the node C2 from the node D, and hash values for the node a1, the node a2 and the node B1 are calculated in parallel for the node C1, which greatly speeds up the process of calculating the hash values. Therefore, the hash value can be calculated in parallel by splitting the nodes, and the processing efficiency is improved.
In some embodiments, determining the identity of the second node based on the idle identity may include the steps of:
and acquiring the idle identification from the idle identification table as the identification of the second node according to the preset sequence.
The preset sequence may be a sorting rule set according to experience or an application scenario, for example, when the identifier is represented in a digital form, the preset sequence may be sorted from small to large.
In some embodiments, the free identifiers in the free identifier table are ordered in a predetermined order.
In some embodiments, after the step of updating the node to be updated according to the idle identification table, the method may further include the step of:
and storing the initial identifier of the node to be updated as an idle identifier into an idle identifier table.
The initial identification of the node to be updated refers to the identification of the node to be updated in the initial merkel B + tree.
As shown in FIG. 4, when node A splits into node A1 and node A2, the identity of node A is reclaimed and added to the free identity list. In addition, when a node is found to become an empty node, the node is also added into the idle identification table. By recycling the identification, the node identification is recycled, and the data processing efficiency is improved.
In some embodiments, the free identification table further comprises preset identifications.
The preset mark is a preset mark which is not repeated with the idle mark, when the mark is a mark represented in a digital form, the preset mark can be a next mark obtained by sequencing all marks according to a preset sequence, for example, an initial merkel B + tree and all idle marks are 1-9, when the preset sequence is from small to large, the preset mark is 10, and when the preset sequence is from large to small, the preset mark is 0. Managing node identifiers through a preset identifier and an idle identifier table, when a node is newly built or updated, equivalently creating a new node, at the moment, allocating an identifier for the new node, at the moment, inquiring whether an idle identifier meeting conditions exists in the idle identifier table, if so, taking out the idle identifier and allocating the idle identifier to the new node, and if not, allocating the preset identifier to the new node. When the identifier is represented in a digital form, after the number corresponding to the preset identifier is allocated to the new node, the next number of the number corresponding to the preset identifier may be taken as the number corresponding to the preset identifier according to a preset sequence to update the preset identifier, for example, as shown in fig. 5, the identifier in the initial mercker B + tree corresponding to the transaction 1 includes 1, 2, 3, at this time, the preset identifier is 4, after the transaction 2 is updated, because the idle identifier table does not have an identifier that can be obtained, the preset identifier 4 is allocated to a node in the mercker B + tree, at this time, the preset identifier is incremented by 5, because the idle identifier table does not have an identifier that can be obtained, the incremented preset identifier 5 is allocated to another node in the mercker B + tree, until all nodes in the mercker B + tree obtain identifiers (the identifiers 4, 5, 6 in the figure), 7) At this point, the preset flag is incremented to 8. Through setting up the preset identification and increasing progressively, the excessive identification of idle identification list storage can be avoided, and data storage efficiency is improved.
150. Generating a target merkel B + tree.
The target Mercker B + tree is the Mercker B + tree obtained after the data to be stored are stored in the initial Mercker B + tree node. It should be noted that, when the data to be stored is stored in the initial merkel B + tree node, the node of the initial merkel B + tree node may be further processed due to the stored data, for example, the node to be updated may be updated, the parallel hash calculation operation after the node to be updated is updated according to the data to be stored may also be included, and the like. When the data to be stored is data corresponding to any transaction, the target merkel B + tree may be a version updated according to the transaction. For example, as shown in fig. 5, an initial merkel B + tree is generated according to a transaction 1, data to be stored corresponding to the transaction 2 is stored in a node 2 and a node 3, and after the node 2 and the node 3 on the initial merkel B + tree are updated, a target merkel B + tree corresponding to the transaction 2 is obtained.
In some embodiments, after generating the target merkel B + tree, the method may further include the steps of:
obtaining rollback information and at least one target Mercker B + tree;
determining identification information corresponding to the rollback information;
and determining a target Mercker B + tree corresponding to the rollback information from at least one target Mercker B + tree according to the identification information corresponding to the rollback information and the identification of the root node.
The rollback information is used to determine to which version of the data to be stored, i.e. to which target merkel B + tree the data is to be restored. The rollback information may include a transaction identifier corresponding to rollback or a root node identifier corresponding to the transaction, which may be a transaction name or a transaction number, for example, when rollback is to be performed to transaction 3, the rollback information may include the root node identifier corresponding to transaction 3 or transaction 3. It should be noted that, when a target mercker B + tree is generated, an identifier (a transaction name or a transaction number) corresponding to data to be stored and a root node identifier of the target mercker B + tree may be recorded, so that when the mixed and rolled information is obtained, the corresponding root node identifier may be found from the record according to the transaction name or the transaction number in the information, and further the corresponding target mercker B + tree may be found. By obtaining rollback information containing the transaction 3 or the root node identifier corresponding to the transaction 3, the corresponding target merkel B + tree can be found, and multi-version control and rollback can be realized.
As shown in fig. 5, the preset identifier is represented as a maximum page ID, the free identifier table may include a free page ID list and an ID list to be released, the ID list to be released is used to temporarily store the free identifier obtained from the initial mercker B + tree, and the target mercker B + tree obtained after the transaction 1 is completed is used as the initial mercker B + tree corresponding to the transaction 2. After the key assignments stored by the nodes 2 and 3 in the initial merkel B + tree are updated according to the transaction 2, the nodes with IDs (node identifications) of 2 and 3 become dirty (i.e., the nodes to be updated). Since the length of the storage list of the node 2 exceeds the threshold (that is, the preset splitting condition is met), the node 2 is split into two nodes, the free page list is empty, the maximum page ID is incremented to allocate the IDs to the two nodes obtained by splitting the node 2 and the node 2, and the node 4 and the node 5 obtained by splitting the node 2 and the node 6 with the ID replaced by 6 from 3 are obtained. At this time, the reclaimed IDs 2 and 3 are not immediately released and added to the free page ID list, but are put in the list to be released. After the data node is updated, the root node also needs to perform repeated operations, that is, the node 1 also needs to be updated, which is not described herein. After the root node is updated, three IDs 1, 2, and 3 of the transaction 1 are stored in the to-be-released ID list, and at this time, the root node ID corresponding to the transaction 1 may be recorded as 1 according to the information in the to-be-released ID list.
In some embodiments, the number of target merkel B + trees that can be stored is less than or equal to a predetermined number. For example, assuming that data rollback supporting only two versions is preset, that is, the number of target merkel B + trees stored is less than or equal to two, when transaction 1-transaction 2-transaction 3-transaction 4 is completed, only transaction 3 and the target merkel B + tree corresponding to transaction 4 are stored in the database, and when transaction 4 is completed, rollback to the state of transaction 3 is performed at most.
For example, as shown in fig. 5, when a transaction 3 starts, since the preset number is 2, rollback of only two versions is supported, so at this time, transaction 1 in the to-be-released ID list needs to be released, 1, 2, and 3 are placed in the free page ID list, since the to-be-stored data corresponding to transaction 3 is stored in node 6, node 6 and root node 7 become dirty (both are to-be-updated nodes), at this time, since neither node 6 nor node 7 satisfies the preset splitting condition, 1 and 2 in the free page ID list are directly allocated to node 6 and node 7, and IDs 6 and 7 are placed in the to-be-released list. And finally, 3 is stored in the free page ID list, two IDs of 6 and 7 are stored in the ID list to be released, and the ID of the root node corresponding to the transaction 2 is recorded as 7.
At this time, if it is required to roll back to the transaction 2, since the root node ID of the transaction 2 is recorded as 7, the free page list and the to-be-released ID list, the root node ID is only required to point to 7, and the free page ID list and the to-be-released ID list are replaced by the free page ID list and the to-be-released ID list corresponding to the transaction 2.
Therefore, as long as the root node ID, the free page ID list and the ID list to be released corresponding to each transaction are stored, a plurality of target Mercker B + trees respectively corresponding to a plurality of transactions can be saved. Multi-version control and data rollback can be supported by saving the target merkel B + tree corresponding to all transactions.
In some embodiments, after generating the target merkel B + tree, the method may further include the steps of:
acquiring index nodes in a target Mercker B + tree;
and writing the index file corresponding to the index node into the memory data area through memory mapping.
The MMAP is a technology for mapping a disk to a memory, and the nodes can be limited to 4K by setting the preset splitting condition of the threshold value comprising the length of the node storage list in the embodiment of the application, so that the node branching number is effectively improved, the tree height is reduced, and the IO times of the disk are further reduced. However, log (n) times of disk IO are still needed, so in order to maximally reduce the number of IO times, the embodiment of the present application stores the index nodes and the data nodes in the Mercker B + tree as the index file and the data file separately. The index node can only store keys, so that the index file is far smaller than the data file, the index file is maintained in the memory in an MMAP (memory mapping) mode, and thus, the reading of the data at the bottom layer only needs one disk IO of the data file, and the reading efficiency is greatly improved.
The data storage scheme provided by the embodiment of the application can be applied to various block chain technical scenes. For example, taking cryptocurrency as an example, obtaining data to be stored, an initial merkel B + tree, and an idle identification table, where the idle identification table is used to store idle identifications; storing data to be stored into a target node of an initial Mercker B + tree; determining the target node and the ancestor node of the target node as nodes to be updated; updating the nodes to be updated according to the idle identification table; generating a target merkel B + tree.
After the data to be stored is stored in the node of the initial merkel B + tree by adopting the scheme provided by the embodiment of the present application, the identifiers of the target node and the ancestor node of the target node are re-determined according to the idle identifier, so that the root node identifiers of the target merkel B + tree and the initial merkel B + tree are different, that is, the root node identifiers of the merkel B + tree before and after the data to be stored are different. In the application, as the multiple target tachr B + trees corresponding to different versions are stored, and the identifiers of the root nodes of the multiple target tachr B + trees are different, when the stored data needs to be rolled back to any version, the root node is only required to be pointed to the root node of the corresponding target tachr B + tree, so that the data recovery cost can be reduced.
In addition, the embodiment of the application is based on an extensible database of a multi-Mercker B + tree, a Key-value database is efficiently stored by using a Mercker B + tree data structure, multi-version data control and data rollback are supported, indexes and data files are split in bottom storage, the reading performance is improved by using an MMAP (multimedia Messaging access point) technology, and the writing performance is improved by using a method of batch insertion and parallel hash calculation.
The method described in the above embodiments is further described in detail below.
In this embodiment, the method of the present application will be described in detail by taking the block chain technique as an example.
As shown in fig. 6, a specific flow of the data storage method is as follows:
210. and acquiring a new transaction.
220. An initial merkel B + tree and an initial free identification table are obtained.
The initial idle identification table is used to store idle identifications, and is equivalent to the idle identification table in the foregoing embodiment.
230. Storing the key value pair corresponding to the newly-built transaction into a target node of an initial Mercker B + tree;
240. and determining a node to be split in the target node according to a preset splitting condition, splitting the node to be split, and obtaining a plurality of first nodes.
250. And acquiring an idle identifier from the initial idle identifier table as an identifier of the first node according to a preset sequence, and storing the identifier of the node to be split into the initial idle identifier table.
260. And determining a node to be split from the father node of the target node according to a preset splitting condition, splitting the node to be split to obtain a plurality of first nodes when the node to be split exists in the father node of the target node, and executing the step 250 until the node to be split is a root node to obtain the target Mercker B + tree.
It should be noted that, when step 250 is executed in step 260, the obtained idle identifier is an idle identifier other than the identifier of the node to be split. For example, the method as in the foregoing embodiment may be implemented by dividing the free identifier table into a free page ID list and a to-be-released ID list, acquiring the free identifier from the free page ID list when acquiring the free identifier in step 250, and storing the identifier of the to-be-split node into the to-be-released ID list when storing the identifier of the to-be-split node into the initial free identifier table.
270. And storing the identifier of the node to be split as an idle identifier into an initial idle identifier table to obtain a target idle identifier table.
The target free identification table corresponds to the newly created transaction in step 210 and the target merkel B + tree obtained in step 260. The node to be split in step 270 refers to the node to be split determined in step 260.
For specific implementation of each step in the embodiment of the present application, reference may be made to the foregoing method embodiment, which is not described herein again.
Therefore, the target Mercker B + tree is generated corresponding to each transaction, and due to the fact that the identification of the root node of each target Mercker B + tree is different, when the stored data need to be rolled back to any version, the root node is pointed to the root node of the corresponding target Mercker B + tree, and data recovery cost can be reduced. The method and the device can be applied to the block chain technology, the root node identification is obtained and compared with the root node identification corresponding to the block chain node, and when the corresponding root node identification and the target Mercker B + tree are found, the block chain data can be restored to the version corresponding to the target Mercker B + tree.
In order to better implement the above method, embodiments of the present application further provide a data storage device, which may be specifically integrated in an electronic device, where the electronic device may be a terminal, a server, or the like. The terminal can be a mobile phone, a tablet computer, an intelligent Bluetooth device, a notebook computer, a personal computer and other devices; the server may be a single server or a server cluster composed of a plurality of servers.
For example, in this embodiment, the method of the embodiment of the present application will be described in detail by taking an example in which the data storage device is specifically integrated in the computer device.
For example, as shown in fig. 7, the data storage device may include an acquisition unit 310, a storage unit 320, a determination unit 330, an update unit 340, and a generation unit 350, as follows:
acquisition unit 310
The method is used for acquiring data to be stored, an initial Mercker B + tree and an idle identification table, wherein the idle identification table is used for storing idle identifications.
In some embodiments, the initial merkel B + tree is a first initial merkel B + tree or a second initial merkel B + tree, when the initial merkel B + tree is the first initial merkel B + tree, the data to be stored is a first bond value pair, and the method for obtaining the initial merkel B + tree includes:
acquiring a plurality of data tables to be stored, wherein the data tables to be stored are used for storing a first key value pair;
generating a first initial Merck B + tree according to the first key value pair in each data table to be stored;
when the initial Mercker B + tree is the second initial Mercker B + tree, the data to be stored is the second key value pair, and the method for acquiring the initial Mercker B + tree comprises the following steps:
acquiring a data table identifier of a data table to be stored, and acquiring a root node identifier of a first initial Mercker B + tree;
generating a second key value pair according to a data table identifier corresponding to the data table to be stored and a root node identifier of a first initial Mercker B + tree corresponding to the data table to be stored aiming at each data table to be stored;
generating a second initial Mercker B + tree according to all the second key-value pairs.
(II) memory cell 320
And the target node is used for storing the data to be stored into the initial Mercker B + tree.
(III) determination unit 330
And the node updating method is used for determining the target node and the ancestor node of the target node as the nodes to be updated.
(IV) update Unit 340
And the node updating module is used for updating the node to be updated according to the idle identification table.
In some embodiments, the updating unit 340 may specifically be configured to:
splitting nodes to be split to obtain a plurality of first nodes, wherein the nodes to be split are nodes which meet preset splitting conditions in the nodes to be updated;
and determining the identifier of a second node according to the idle identifier, wherein the second node comprises the first node, the node to be updated which does not meet the preset splitting condition, the ancestor node of the first node and the ancestor node of the node to be updated which does not meet the preset splitting condition.
In some embodiments, splitting a node to be split to obtain a plurality of first nodes may include:
determining a node to be split in a target node according to a preset splitting condition;
splitting a node to be split to obtain a plurality of first nodes when the node to be split exists in the target node;
and determining a node to be split from the father node of the target node according to a preset splitting condition, splitting the node to be split when the node to be split exists in the father node of the target node to obtain a plurality of first nodes until the node to be split is a root node.
In some embodiments, determining the identity of the second node based on the idle identity may include the steps of:
and acquiring the idle identification from the idle identification table as the identification of the second node according to the preset sequence.
(V) generating unit 350
For generating a target merkel B + tree.
In some embodiments, the generating unit 350 may further be used for the steps of:
obtaining rollback information and at least one target Mercker B + tree;
determining identification information corresponding to the rollback information;
and determining a target Mercker B + tree corresponding to the rollback information from at least one target Mercker B + tree according to the identification information corresponding to the rollback information and the identification of the root node.
In some embodiments, the generating unit 350 may further be used for the steps of:
acquiring index nodes in a target Mercker B + tree;
and writing the index file corresponding to the index node into the memory data area through memory mapping.
In a specific implementation, the above units may be implemented as independent entities, or may be combined arbitrarily to be implemented as the same or several entities, and the specific implementation of the above units may refer to the foregoing method embodiments, which are not described herein again.
Therefore, after the data to be stored is stored in the node of the initial merkel B + tree, the identifier of the target node and the identifier of the ancestor node of the target node are determined again according to the idle identifier, so that the identifier of the root node of the target merkel B + tree is different from that of the root node of the initial merkel B + tree, that is, the identifier of the root node of the merkel B + tree before and after the data to be stored is different. In the application, as the multiple target tachr B + trees corresponding to different versions are stored, and the identifiers of the root nodes of the multiple target tachr B + trees are different, when the stored data needs to be rolled back to any version, the root node is only required to be pointed to the root node of the corresponding target tachr B + tree, so that the data recovery cost can be reduced.
Correspondingly, the embodiment of the present application further provides a computer device, where the computer device may be a terminal or a server, and the terminal may be a terminal device such as a smart phone, a tablet computer, a notebook computer, a touch screen, a game machine, a Personal computer, and a Personal Digital Assistant (PDA).
As shown in fig. 8, fig. 8 is a schematic structural diagram of a computer device 400 according to an embodiment of the present application, where the computer device 400 includes a processor 410 having one or more processing cores, a memory 420 having one or more computer-readable storage media, and a computer program stored in the memory 420 and running on the processor. The processor 410 is electrically connected to the memory 420. Those skilled in the art will appreciate that the computer device configurations illustrated in the figures are not meant to be limiting of computer devices and may include more or fewer components than those illustrated, or some components may be combined, or a different arrangement of components.
The processor 410 is a control center of the computer device 400, connects various parts of the entire computer device 400 using various interfaces and lines, performs various functions of the computer device 400 and processes data by running or loading software programs and/or modules stored in the memory 420 and calling data stored in the memory 420, thereby monitoring the computer device 400 as a whole.
In the embodiment of the present application, the processor 410 in the computer device 400 loads instructions corresponding to processes of one or more applications into the memory 420, and the processor 410 executes the applications stored in the memory 420 according to the following steps, so as to implement various functions:
acquiring data to be stored, an initial Mercker B + tree and an idle identification table, wherein the idle identification table is used for storing idle identifications; storing data to be stored into a target node of an initial Mercker B + tree; determining the target node and the ancestor node of the target node as nodes to be updated; updating the nodes to be updated according to the idle identification table; generating a target merkel B + tree.
The above operations can be implemented in the foregoing embodiments, and are not described in detail herein.
Optionally, as shown in fig. 8, the computer device 400 further includes: touch display 430, radio frequency circuit 440, audio circuit 450, input unit 460 and power supply 470. The processor 410 is electrically connected to the touch display 430, the radio frequency circuit 440, the audio circuit 450, the input unit 460 and the power supply 470, respectively. Those skilled in the art will appreciate that the computer device configuration illustrated in FIG. 8 does not constitute a limitation of computer devices, and may include more or fewer components than those illustrated, or some components may be combined, or a different arrangement of components.
The touch display 430 can be used for displaying a graphical user interface and receiving operation instructions generated by a user acting on the graphical user interface. The touch display screen 430 may include a display panel and a touch panel. The display panel may be used, among other things, to display information entered by or provided to a user and various graphical user interfaces of the computer device, which may be made up of graphics, text, icons, video, and any combination thereof. Alternatively, the Display panel may be configured in the form of a Liquid Crystal Display (LCD), an Organic Light-Emitting Diode (OLED), or the like. The touch panel may be used to collect touch operations of a user on or near the touch panel (for example, operations of the user on or near the touch panel using any suitable object or accessory such as a finger, a stylus pen, and the like), and generate corresponding operation instructions, and the operation instructions execute corresponding programs. Alternatively, the touch panel may include two parts, a touch detection device and a touch controller. The touch detection device detects the touch direction of a user, detects a signal brought by touch operation and transmits the signal to the touch controller; the touch controller receives touch information from the touch sensing device, converts the touch information into touch point coordinates, sends the touch point coordinates to the processor 410, and can receive and execute commands sent by the processor 410. The touch panel may overlay the display panel, and when the touch panel detects a touch operation thereon or nearby, the touch panel transmits the touch operation to the processor 410 to determine the type of the touch event, and then the processor 410 provides a corresponding visual output on the display panel according to the type of the touch event. In the embodiment of the present application, the touch panel and the display panel may be integrated into the touch display screen 430 to implement input and output functions. However, in some embodiments, the touch panel and the display panel may be implemented as two separate components to perform the input and output functions. That is, the touch display 430 can also be used as a part of the input unit 460 to implement an input function.
The rf circuit 440 may be used for transceiving rf signals to establish wireless communication with a network device or other computer device via wireless communication, and for transceiving signals with the network device or other computer device.
The audio circuit 450 may be used to provide an audio interface between a user and a computer device through a speaker, microphone. The audio circuit 450 may transmit the electrical signal converted from the received audio data to a speaker, and convert the electrical signal into a sound signal for output; on the other hand, the microphone converts the collected sound signal into an electrical signal, which is received by the audio circuit 450 and converted into audio data, which is then processed by the audio data output processor 410, and then passed through the radio frequency circuit 440 to be sent to, for example, another computer device, or output to the memory 420 for further processing. The audio circuit 450 may also include an earbud jack to provide communication of peripheral headphones with the computer device.
The input unit 460 may be used to receive input numbers, character information, or user characteristic information (e.g., fingerprint, iris, facial information, etc.), and generate keyboard, mouse, joystick, optical, or trackball signal inputs related to user settings and function control.
The power supply 470 is used to power the various components of the computer device 400. Optionally, the power supply 470 may be logically connected to the processor 410 through a power management system, so as to implement functions of managing charging, discharging, power consumption management, and the like through the power management system. The power supply 470 may also include any component of one or more dc or ac power sources, recharging systems, power failure detection circuitry, power converters or inverters, power status indicators, and the like.
Although not shown in fig. 8, the computer device 400 may further include a camera, a sensor, a wireless fidelity module, a bluetooth module, etc., which are not described in detail herein.
In the foregoing embodiments, the descriptions of the respective embodiments have respective emphasis, and for parts that are not described in detail in a certain embodiment, reference may be made to related descriptions of other embodiments.
As can be seen from the above, the computer device provided in this embodiment may determine the identifier of the target node and the ancestor node of the target node again according to the idle identifier after the data to be stored is stored in the node of the initial mercker B + tree, so that the identifier of the root node of the target mercker B + tree is different from that of the initial mercker B + tree, that is, the identifier of the root node of the mercker B + tree before and after the data to be stored is different. In the application, as the multiple target tachr B + trees corresponding to different versions are stored, and the identifiers of the root nodes of the multiple target tachr B + trees are different, when the stored data needs to be rolled back to any version, the root node is only required to be pointed to the root node of the corresponding target tachr B + tree, so that the data recovery cost can be reduced.
It will be understood by those skilled in the art that all or part of the steps of the methods of the above embodiments may be performed by instructions or by associated hardware controlled by the instructions, which may be stored in a computer readable storage medium and loaded and executed by a processor.
To this end, the present application provides a computer-readable storage medium, in which a plurality of computer programs are stored, and the computer programs can be loaded by a processor to execute the steps in any data storage method provided by the present application. For example, the computer program may perform the steps of:
acquiring data to be stored, an initial Mercker B + tree and an idle identification table, wherein the idle identification table is used for storing idle identifications; storing data to be stored into a target node of an initial Mercker B + tree; determining the target node and the ancestor node of the target node as nodes to be updated; updating the nodes to be updated according to the idle identification table; generating a target merkel B + tree.
The above operations can be implemented in the foregoing embodiments, and are not described in detail herein.
Wherein the storage medium may include: read Only Memory (ROM), Random Access Memory (RAM), magnetic or optical disks, and the like.
Since the computer program stored in the storage medium can execute the steps in any data storage method provided in the embodiments of the present application, the beneficial effects that can be achieved by any data storage method provided in the embodiments of the present application can be achieved, and detailed descriptions are omitted here for the foregoing embodiments.
The data storage method, the data storage device, the data storage medium, and the computer device provided in the embodiments of the present application are described in detail above, and a specific example is applied in the present application to explain the principles and embodiments of the present application, and the description of the above embodiments is only used to help understand the method and the core idea of the present application; meanwhile, for those skilled in the art, according to the idea of the present application, there may be variations in the specific embodiments and the application scope, and in summary, the content of the present specification should not be construed as a limitation to the present application.

Claims (10)

1. A method of storing data, comprising:
acquiring data to be stored, an initial Mercker B + tree and an idle identification table, wherein the idle identification table is used for storing idle identifications;
storing the data to be stored into a target node of the initial Mercker B + tree;
determining the target node and the ancestor node of the target node as nodes to be updated;
updating the node to be updated according to the idle identification table;
generating a target merkel B + tree.
2. The data storage method according to claim 1, wherein the initial merkel B + tree is a first initial merkel B + tree or a second initial merkel B + tree, and when the initial merkel B + tree is the first initial merkel B + tree, the data to be stored is a first bond value pair, and the initial merkel B + tree is obtained by a method comprising:
acquiring a plurality of data tables to be stored, wherein the data tables to be stored are used for storing a first key value pair;
generating a first initial Mercker B + tree according to the first key value pair in each data table to be stored;
when the initial merkel B + tree is the second initial merkel B + tree, the data to be stored is a second key-value pair, and the method for acquiring the initial merkel B + tree includes:
acquiring a data table identifier of the data table to be stored and acquiring a root node identifier of the first initial Mercker B + tree;
for each data table to be stored, generating a second key value pair according to a data table identifier corresponding to the data table to be stored and a root node identifier of the first initial Mercker B + tree corresponding to the data table to be stored;
and generating a second initial Mercker B + tree according to all the second key value pairs.
3. The data storage method of claim 1, wherein the updating the node to be updated according to the free identification table comprises:
splitting nodes to be split to obtain a plurality of first nodes, wherein the nodes to be split are nodes which meet preset splitting conditions in the nodes to be updated;
and determining an identifier of a second node according to the idle identifier, wherein the second node comprises the first node, the node to be updated which does not meet the preset splitting condition, an ancestor node of the first node and the ancestor node of the node to be updated which does not meet the preset splitting condition.
4. The data storage method of claim 3, wherein the splitting the node to be split to obtain a plurality of first nodes comprises:
determining a node to be split in the target node according to a preset splitting condition;
splitting the node to be split to obtain a plurality of first nodes when the node to be split exists in the target node;
and determining a node to be split from the father node of the target node according to a preset splitting condition, splitting the node to be split when the node to be split exists in the father node of the target node to obtain a plurality of first nodes until the node to be split is a root node.
5. The data storage method of claim 3, wherein said determining an identity of a second node based on said idle identity comprises:
and acquiring the idle identification from the idle identification table as the identification of the second node according to a preset sequence.
6. The data storage method of claim 1, after said generating a target merkel B + tree, further comprising:
obtaining rollback information and at least one target Mercker B + tree;
determining identification information corresponding to the rollback information;
and determining the target Mercker B + tree corresponding to the rollback information from the at least one target Mercker B + tree according to the identification information corresponding to the rollback information and the identification of the root node.
7. The data storage method of any one of claims 1 to 6, further comprising, after the generating the target merkel B + tree:
acquiring index nodes in the target Mercker B + tree;
and writing the index file corresponding to the index node into a memory data area through memory mapping.
8. A data storage device, comprising:
the device comprises an acquisition unit, a storage unit and a processing unit, wherein the acquisition unit is used for acquiring data to be stored, an initial Mercker B + tree and an idle identification table, and the idle identification table is used for storing idle identifications;
the storage unit is used for storing the data to be stored into a target node of the initial Mercker B + tree;
the determining unit is used for determining the target node and an ancestor node of the target node as nodes to be updated;
the updating unit is used for updating the node to be updated according to the idle identification table;
and the generating unit is used for generating the target Mercker B + tree.
9. A computer device comprising a processor and a memory, the memory storing a plurality of instructions; the processor loads instructions from the memory to perform the steps of the data storage method of any one of claims 1 to 7.
10. A computer readable storage medium storing instructions adapted to be loaded by a processor to perform the steps of the data storage method according to any one of claims 1 to 7.
CN202111664816.0A 2021-12-31 2021-12-31 Data storage method and device, computer equipment and storage medium Pending CN114356927A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111664816.0A CN114356927A (en) 2021-12-31 2021-12-31 Data storage method and device, computer equipment and storage medium
PCT/CN2022/122208 WO2023124323A1 (en) 2021-12-31 2022-09-28 Data storage method, apparatus, computer device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111664816.0A CN114356927A (en) 2021-12-31 2021-12-31 Data storage method and device, computer equipment and storage medium

Publications (1)

Publication Number Publication Date
CN114356927A true CN114356927A (en) 2022-04-15

Family

ID=81105065

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111664816.0A Pending CN114356927A (en) 2021-12-31 2021-12-31 Data storage method and device, computer equipment and storage medium

Country Status (2)

Country Link
CN (1) CN114356927A (en)
WO (1) WO2023124323A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023124323A1 (en) * 2021-12-31 2023-07-06 杭州趣链科技有限公司 Data storage method, apparatus, computer device, and storage medium

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109408551B (en) * 2018-08-06 2021-07-06 杭州复杂美科技有限公司 Data query method and system, consensus method and system, device and storage medium
CN109359222B (en) * 2018-08-06 2021-07-06 杭州复杂美科技有限公司 Data storage method and system, equipment and storage medium
EP3627343A1 (en) * 2018-09-19 2020-03-25 censhare AG Efficient in-memory multi-version concurrency control for a trie data structure based database
CN109992998A (en) * 2019-03-31 2019-07-09 杭州复杂美科技有限公司 A kind of information storage means and system, equipment and storage medium
CN110471795B (en) * 2019-07-31 2020-10-02 阿里巴巴集团控股有限公司 Block chain state data recovery method and device and electronic equipment
CN112579602B (en) * 2020-12-22 2023-06-09 杭州趣链科技有限公司 Multi-version data storage method, device, computer equipment and storage medium
CN114356927A (en) * 2021-12-31 2022-04-15 杭州趣链科技有限公司 Data storage method and device, computer equipment and storage medium

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023124323A1 (en) * 2021-12-31 2023-07-06 杭州趣链科技有限公司 Data storage method, apparatus, computer device, and storage medium

Also Published As

Publication number Publication date
WO2023124323A1 (en) 2023-07-06

Similar Documents

Publication Publication Date Title
CN113157810B (en) Block synchronization method, computer equipment and storage medium
CN110765143A (en) Data processing method, device, server and storage medium
CN110035120A (en) Information push method, device, electronic equipment and storage medium
CN114356927A (en) Data storage method and device, computer equipment and storage medium
CN109710502B (en) Log transmission method, device and storage medium
CN112667636A (en) Index establishing method, device and storage medium
CN111984293A (en) Information processing method, device and storage medium
CN113568645B (en) Software updating method, device, electronic equipment and storage medium
CN115630122A (en) Data synchronization method and device, storage medium and computer equipment
CN113890753A (en) Digital identity management method, device, system, computer equipment and storage medium
CN115578096A (en) Block chain parallel transaction method, device, equipment and storage medium
CN107729579A (en) Database separate design method and device
CN113641769A (en) Data processing method and device
CN114547184A (en) Personnel information synchronization method, terminal device and storage medium
CN110688344A (en) File scanning method and device, computer readable storage medium and terminal
CN113110868B (en) File merging method, device, computer equipment and storage medium
CN114968595A (en) NFT owner information processing method and device, computer equipment and storage medium
CN115563142A (en) Financial data stream processing method and device, electronic equipment and storage medium
CN114844911A (en) Data storage method and device, electronic equipment and computer readable storage medium
CN112905563A (en) Processing method and device of sign-in data, storage medium and computer equipment
CN116954606A (en) Control drawing method, device, computer equipment and computer readable storage medium
CN113190506A (en) Object attribute saving method and device
CN116271848A (en) File updating method, device, electronic equipment and computer readable storage medium
CN114691623A (en) External link file reading method and device, computer equipment and storage medium
CN116681846A (en) Map generation method and device, electronic equipment and storage medium

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination