CN110704506A - 状态数据存储方法和数据查询方法 - Google Patents
状态数据存储方法和数据查询方法 Download PDFInfo
- Publication number
- CN110704506A CN110704506A CN201910907134.4A CN201910907134A CN110704506A CN 110704506 A CN110704506 A CN 110704506A CN 201910907134 A CN201910907134 A CN 201910907134A CN 110704506 A CN110704506 A CN 110704506A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- value pair
- value pairs
- block
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2468—Fuzzy queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Automation & Control Theory (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种状态数据存储方法、数据查询方法、设备和存储介质,该方法包括:根据待存储的第一区块的各交易生成若干第一键值对;分别根据各第一键值对生成第二键值以更新全局索引表;分别根据各第一键值对生成第三键值对;第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对,第三键值对用于通过模糊查询查找出符合查询条件的所有第三键,判断所查找出的第三键的第三值是否不大于目标区块高度:是,则根据所查找出的第三键和所查找出的第三键对应的第三值从全局索引表中读取目标数据;否,则根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。本发明查询效率高,且支持在区块链的状态数据库中进行模糊查询。
Description
技术领域
本申请涉及区块链技术领域,具体涉及一种状态数据存储方法、数据查询方法、设备和存储介质。
背景技术
在申请人先前提出的案卷中(申请号为CN201810884295.1),申请人在区块链的状态数据库中实现多版本并发控制,大幅提高数据的查询效率;
上述机制有效提高数据的查询效率,却无法实现模糊查询的功能。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种查询效率高,且支持在区块链的状态数据库中进行模糊查询的状态数据存储方法、数据查询方法、设备和存储介质。
第一方面,本发明提供一种适用于区块链的节点的状态数据存储方法,包括:
根据待存储的第一区块的各交易生成若干第一键值对;
分别根据各第一键值对生成第二键值对并存入状态数据库以更新全局索引表;
分别根据各第一键值对生成第三键值对并存入状态数据库;
其中,第二键值对的第二键包括所对应的第一键值对的第一键和第一区块的区块高度,第二键值对的第二值包括所对应的第一键值对的第一值;
第三键值对的第三键包括所对应的第一键值对的第一键,第三键值对的第三值包括第一区块的区块高度,第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对;
第三键值对用于通过模糊查询查找出符合查询条件的所有第三键,判断所查找出的第三键的第三值是否不大于目标区块高度:
是,则根据所查找出的第三键和所查找出的第三键对应的第三值从全局索引表中读取目标数据;
否,则根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。
第二方面,本发明提供一种适用于区块链的节点的数据查询方法,包括:
根据查询条件和上述第一方面的状态数据存储方法所存储的第二键值对和第三键值对模糊查找出符合查询条件的所有第三键;
判断所查找出的第三键的第三值是否不大于目标区块高度:
是,则根据所查找出的第三键和所查找出的第三键对应的第三值从全局索引表中读取目标数据;
否,则根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。
第三方面,本发明提供一种适用于区块链的节点的状态数据存储方法,包括:
根据待存储的第一区块的各交易生成若干第一键值对;
分别根据各第一键值对生成第二键值对并存入状态数据库以更新全局索引表;
分别根据各第一键值对生成第三键值对并存入状态数据库;
其中,第二键值对的第二键包括所对应的第一键值对的第一键和第一区块的区块高度,第二键值对的第二值包括所对应的第一键值对的第一值;
第三键值对的第三键包括所对应的第一键值对的第一键,第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对;
第三键值对用于通过模糊查询查找出符合查询条件的所有第三键,根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。
第四方面,本发明提供一种适用于区块链的节点的数据查询方法,包括:
根据查询条件和上述第三方面的状态数据存储方法所存储的第二键值对和第三键值对模糊查找出符合查询条件的所有第三键;
根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。
第五方面,本发明提供一种适用于区块链的节点的状态数据存储方法,包括:
根据待存储的第一区块的各交易生成若干第一键值对;
分别根据各第一键值对生成第二键值对并存入状态数据库以更新全局索引表;
分别根据各第一键值对生成第三键值对,根据第三键值对的第三键从状态数据库中读取第四键值对,合并第三键值对和第四键值对以生成第五键值对并存入状态数据库;
其中,第二键值对的第二键包括所对应的第一键值对的第一键和第一区块的区块高度,第二键值对的第二值包括所对应的第一键值对的第一值;
第三键值对的第三键包括所对应的第一键值对的第一键,第三键值对的第三值包括第一区块的区块高度;
第五键值对的存储方式为覆盖第四键值对;
第五键值对用于通过模糊查询查找出符合查询条件的所有第五键,从所查找出的第五键的第五值中选取不大于目标区块高度的最大的区块高度,并根据所查找出的第五键和所选取的区块高度从全局索引表中读取出目标数据。
第六方面,本发明提供一种适用于区块链的节点的数据查询方法,包括:
根据查询条件和上述第五方面的状态数据存储方法所存储的第二键值对和第五键值对模糊查找出符合查询条件的所有第五键;
从所查找出的第五键的第五值中选取不大于目标区块高度的最大的区块高度,并根据所查找出的第五键和所选取的区块高度从全局索引表中读取出目标数据。
第七方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的状态数据存储方法和数据查询方法。
第八方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的状态数据存储方法和数据查询方法。
本发明诸多实施例提供的状态数据存储方法、数据查询方法、设备和存储介质通过根据待存储的第一区块的各交易生成若干第一键值对;分别根据各第一键值对生成第二键值对并存入状态数据库以更新全局索引表;分别根据各第一键值对生成第三键值对并存入状态数据库;第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对,第三键值对用于通过模糊查询查找出符合查询条件的所有第三键,判断所查找出的第三键的第三值是否不大于目标区块高度:是,则根据所查找出的第三键和所查找出的第三键对应的第三值从全局索引表中读取目标数据;否,则根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据的方法,保证查询效率高,且支持在区块链的状态数据库中进行模糊查询。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例提供的一种状态数据存储方法的流程图。
图2为本发明一实施例提供的一种数据查询方法的流程图。
图3为图2所示方法的一种优选实施方式的流程图。
图4为本发明一实施例提供的另一种状态数据存储方法的流程图。
图5为本发明一实施例提供的另一种数据查询方法的流程图。
图6为图5所示方法的一种优选实施方式的流程图。
图7为本发明一实施例提供的另一种状态数据存储方法的流程图。
图8为本发明一实施例提供的另一种数据查询方法的流程图。
图9为图8所示方法的一种优选实施方式的流程图。
图10为本发明一实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明一实施例提供的一种状态数据存储方法的流程图。如图1所示,在本实施例中,本发明提供一种适用于区块链的节点的状态数据存储方法,包括:
S12:根据待存储的第一区块的各交易生成若干第一键值对;
S14:分别根据各第一键值对生成第二键值对并存入状态数据库以更新全局索引表;
S16:分别根据各第一键值对生成第三键值对并存入状态数据库;
其中,第二键值对的第二键包括所对应的第一键值对的第一键和第一区块的区块高度,第二键值对的第二值包括所对应的第一键值对的第一值;
第三键值对的第三键包括所对应的第一键值对的第一键,第三键值对的第三值包括第一区块的区块高度,第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对;
第三键值对用于通过模糊查询查找出符合查询条件的所有第三键,判断所查找出的第三键的第三值是否不大于目标区块高度:
是,则根据所查找出的第三键和所查找出的第三键对应的第三值从全局索引表中读取目标数据;
否,则根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。
具体地,假设节点A待存储的第一区块为block(100),block(100)只包含一条交易tx1,根据tx1生成的第一键值对为(hello0,world0),且在block(50)时,曾生成第一键值对(hello0,world0');
在步骤S12中,A根据block(100)的tx1生成若干第一键值对(hello0,world0);
在步骤S14中,A根据(hello0,world0)生成第二键值对并存入状态数据库以更新全局索引表;由于第二键值对的第二键包括所对应的第一键值对的第一键和第一区块的区块高度,第二键值对的第二值包括所对应的第一键值对的第一值,因此,第二键为hello0.100,第二值为world0,第二键值对为(hello0.100,world0);
在步骤S16中,A根据(hello0,world0)对生成第三键值对并存入状态数据库;由于第三键值对的第三键包括所对应的第一键值对的第一键,第三键值对的第三值包括第一区块的区块高度,第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对,因此,第三键为hello0,第三值为100,状态数据库中的第三键值对由(hello0,50)被覆盖为(hello0,100)。
假设查询条件为“查询包括hello字段的所有键对应的值”,且假设目标区块高度为75;通过模糊查询查找出符合查询条件的所有第三键查找到包括hello字段的所有键为hello0和hello1,对应返回的键值对为(hello0,100)和(hello1,70);
对于(hello0,100):
A判断所查找出的第三键的第三值是否不大于目标区块高度:
由于100大于75,则根据所查找出的第三键hello0,和目标区块高度75从全局索引表中查找目标数据。
需要这样查找的原因是,由于100大于75,且第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对,A无法判断出目标区块高度前是否还存储有第三键相同的第三键值对,因此需要向前滑动查询,向前滑动查询的具体方法在申请人先前提出的案卷中(申请号为CN201810884295.1,说明书[0051]-[0063])中提出,此处不再赘述。
对于(hello1,70):
A判断所查找出的第三键的第三值是否不大于目标区块高度:
由于70小于75,则根据所查找出的第三键hello1和所查找出的第三键对应的第三值70从全局索引表中读取目标数据。
由于70小于75,且第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对,A不用再判断70前是否还存储有第三键相同的第三键值对,因此,直接使用hello1和70从全局索引表中精确查找目标数据。
在更多实施例中,为区分不同的键值对,还可以在不同的键值对前添加前缀,例如,在第二键值对前添加“d.”,在第三键值对前添加“final.”,可实现相同的技术效果。
图2为本发明一实施例提供的一种数据查询方法的流程图。如图2所示,在本实施例中,本发明提供一种适用于区块链的节点的数据查询方法,包括:
S22:根据查询条件和图1所示的状态数据存储方法所存储的第二键值对和第三键值对模糊查找出符合查询条件的所有第三键;
S24:判断所查找出的第三键的第三值是否不大于目标区块高度:
是,则执行步骤S26:根据所查找出的第三键和所查找出的第三键对应的第三值从全局索引表中读取目标数据;
否,则执行步骤S28:根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。
上述实施例的数据查询原理可参考图1所示的方法,此处不再赘述。
图3为图2所示方法的一种优选实施方式的流程图。如图3所示,在一优选实施例中,步骤S24前还包括:
S23:根据目标区块的状态哈希查找目标区块高度。
在更多实施例中,还可以根据目标区块的其它唯一识别标识查找目标区块高度,例如,将唯一标识配置为区块id;只要可以通过唯一标识可以查找到目标区块高度,可实现相同的技术效果。
图4为本发明一实施例提供的另一种状态数据存储方法的流程图。如图4所示,在本实施例中,本发明提供一种适用于区块链的节点的状态数据存储方法,包括:
S32:根据待存储的第一区块的各交易生成若干第一键值对;
S34:分别根据各第一键值对生成第二键值对并存入状态数据库以更新全局索引表;
S36:分别根据各第一键值对生成第三键值对并存入状态数据库;
其中,第二键值对的第二键包括所对应的第一键值对的第一键和第一区块的区块高度,第二键值对的第二值包括所对应的第一键值对的第一值;
第三键值对的第三键包括所对应的第一键值对的第一键,第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对;
第三键值对用于通过模糊查询查找出符合查询条件的所有第三键,根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。
具体地,假设节点A待存储的第一区块为block(200),block(200)只包含一条交易tx2,根据tx2生成的第一键值对为(hi2,world2),且在block(50)时,曾生成第一键值对(hi2,world2');假设第三键值对的第三值为null;
在步骤S32中,A根据block(200)的tx2生成若干第一键值对(hi2,world2);
在步骤S34中,A根据(hi2,world2)生成第二键值对并存入状态数据库以更新全局索引表;由于第二键值对的第二键包括所对应的第一键值对的第一键和第一区块的区块高度,第二键值对的第二值包括所对应的第一键值对的第一值,因此,第二键为hi2.200,第二值为world2,第二键值对为(hi2.200,world2);
在步骤S36中,A根据(hi2,world2)对生成第三键值对并存入状态数据库;由于第三键值对的第三键包括所对应的第一键值对的第一键,第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对,因此,第三键为hi2,状态数据库中的第三键值对由(hi2,null)被覆盖为(hi2,null)。
假设查询条件为“查询包括hi字段的所有键对应的值”,且假设目标区块高度为75;通过模糊查询查找出符合查询条件的所有第三键查找到包括hi字段的所有键包括hi2,对应返回的键值对为(hi2,null);
A根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据,即,A根据hi2和75从全局索引表中查找目标数据。
上述实施例与图1所示的实施例的区别之处在于,本实施例全部采用向前滑动查询方法查询,而图1所示的实施例通过“判断所查找出的第三键的第三值是否不大于目标区块高度”的判断机制,当判断为是时可以实现部分精确查找,部分精确查找可以提高数据的查询效率。
由于本实施例全部采用向前滑动查询方法查询,因此第三键值对的第三值可以被配置为任何可以被识别的合法字符。在更多实施例中,还可以根据实际需求,将第三键值对的第三值配置为其它字段,例如,配置为AAA,可实现相同的技术效果。
图5为本发明一实施例提供的另一种数据查询方法的流程图。如图5所示,在本实施例中,本发明提供一种适用于区块链的节点的数据查询方法,包括:
S42:根据查询条件和上述第三方面的状态数据存储方法所存储的第二键值对和第三键值对模糊查找出符合查询条件的所有第三键;
S44:根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。
上述实施例的数据查询原理可参考图4所示的方法,此处不再赘述。
图6为图5所示方法的一种优选实施方式的流程图。如图6所示,在一优选实施例中,步骤S44前还包括:
S43:根据目标区块的状态哈希查找目标区块高度。
图7为本发明一实施例提供的另一种状态数据存储方法的流程图。如图7所示,在本实施例中,本发明提供一种适用于区块链的节点的状态数据存储方法,包括:
S52:根据待存储的第一区块的各交易生成若干第一键值对;
S54:分别根据各第一键值对生成第二键值对并存入状态数据库以更新全局索引表;
S56:分别根据各第一键值对生成第三键值对,根据第三键值对的第三键从状态数据库中读取第四键值对,合并第三键值对和第四键值对以生成第五键值对并存入状态数据库;
其中,第二键值对的第二键包括所对应的第一键值对的第一键和第一区块的区块高度,第二键值对的第二值包括所对应的第一键值对的第一值;
第三键值对的第三键包括所对应的第一键值对的第一键,第三键值对的第三值包括第一区块的区块高度;
第五键值对的存储方式为覆盖第四键值对;
第五键值对用于通过模糊查询查找出符合查询条件的所有第五键,从所查找出的第五键的第五值中选取不大于目标区块高度的最大的区块高度,并根据所查找出的第五键和所选取的区块高度从全局索引表中读取出目标数据。
具体地,假设节点A待存储的第一区块为block(300),block(300)只包含一条交易tx3,根据tx3生成的第一键值对为(ha3,world3),且在block(70)时,曾生成第一键值对(ha3,world3”);
在步骤S52中,A根据block(300)的tx3生成若干第一键值对(ha3,world3);
在步骤S54中,A根据(ha3,world3)生成第二键值对并存入状态数据库以更新全局索引表;由于第二键值对的第二键包括所对应的第一键值对的第一键和第一区块的区块高度,第二键值对的第二值包括所对应的第一键值对的第一值,因此,第二键为ha3.300,第二值为world3,第二键值对为(ha3.300,world3);
在步骤S56中,A根据(ha3,world3)生成第三键值对(ha3,300),根据第三键值对的第三键ha3从状态数据库中读取第四键值对(第四键值对为(ha3,70)),合并第三键值对和第四键值对以生成第五键值对(ha3,70-300),第五键值对的存储方式为覆盖第四键值对,因此状态数据库中存储有(ha3,70-300)。
假设查询条件为“查询包括ha字段的所有键对应的值”,且假设目标区块高度为75;通过模糊查询查找出符合查询条件的所有第五键查找到包括ha字段的所有键为ha3,对应返回的键值对为(ha3,70-300);
A从(ha3,70-300)中选取不大于75的最大的区块高度,即70,并根据所查找出的第五键ha3和所选取的区块高度70从全局索引表中读取出目标数据。
图8为本发明一实施例提供的另一种数据查询方法的流程图。图5所示,在本实施例中,本发明提供一种适用于区块链的节点的数据查询方法,包括:
S62:根据查询条件和图7所示的实施例的状态数据存储方法所存储的第二键值对和第五键值对模糊查找出符合查询条件的所有第五键;
S64:从所查找出的第五键的第五值中选取不大于目标区块高度的最大的区块高度,并根据所查找出的第五键和所选取的区块高度从全局索引表中读取出目标数据。
上述实施例的数据查询原理可参考图7所示的方法,此处不再赘述。
图9为图8所示方法的一种优选实施方式的流程图。如图9所示,在一优选实施例中,步骤S64前还包括:
S63:根据目标区块的状态哈希查找目标区块高度。
图10为本发明一实施例提供的一种设备的结构示意图。
如图10所示,作为另一方面,本申请还提供了一种设备1000,包括一个或多个中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM1003中,还存储有设备1000操作所需的各种程序和数据。CPU1001、ROM1002以及RAM1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本公开的实施例,上述任一实施例描述的状态数据存储方法和数据查询方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行状态数据存储方法和数据查询方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的状态数据存储方法和数据查询方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (11)
1.一种状态数据存储方法,其特征在于,适用于区块链的节点,所述方法包括:
根据待存储的第一区块的各交易生成若干第一键值对;
分别根据各所述第一键值对生成第二键值对并存入状态数据库以更新全局索引表;
分别根据各所述第一键值对生成第三键值对并存入所述状态数据库;
其中,所述第二键值对的第二键包括所对应的第一键值对的第一键和所述第一区块的区块高度,所述第二键值对的第二值包括所对应的第一键值对的第一值;
所述第三键值对的第三键包括所对应的第一键值对的第一键,所述第三键值对的第三值包括所述第一区块的区块高度,所述第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对;
所述第三键值对用于通过模糊查询查找出符合查询条件的所有第三键,判断所查找出的第三键的第三值是否不大于所述目标区块高度:
是,则根据所查找出的第三键和所查找出的第三键对应的第三值从所述全局索引表中读取目标数据;
否,则根据所查找出的第三键和目标区块高度从所述全局索引表中查找目标数据。
2.一种数据查询方法,其特征在于,适用于区块链的节点,所述方法包括:
根据查询条件和权利要求1所述的状态数据存储方法所存储的第二键值对和第三键值对模糊查找出符合所述查询条件的所有第三键;
判断所查找出的第三键的第三值是否不大于目标区块高度:
是,则根据所查找出的第三键和所查找出的第三键对应的第三值从全局索引表中读取目标数据;
否,则根据所查找出的第三键和目标区块高度从所述全局索引表中查找目标数据。
3.根据权利要求2所述的方法,其特征在于,所述判断所查找出的第三键的第三值是否不大于目标区块高度前还包括:
根据目标区块的状态哈希查找目标区块高度。
4.一种状态数据存储方法,其特征在于,适用于区块链的节点,所述方法包括:
根据待存储的第一区块的各交易生成若干第一键值对;
分别根据各所述第一键值对生成第二键值对并存入状态数据库以更新全局索引表;
分别根据各所述第一键值对生成第三键值对并存入所述状态数据库;
其中,所述第二键值对的第二键包括所对应的第一键值对的第一键和所述第一区块的区块高度,所述第二键值对的第二值包括所对应的第一键值对的第一值;
所述第三键值对的第三键包括所对应的第一键值对的第一键,所述第三键值对的存储方式为覆盖存储状态数据库中第三键相同的第三键值对;
所述第三键值对用于通过模糊查询查找出符合查询条件的所有第三键,根据所查找出的第三键和目标区块高度从所述全局索引表中查找目标数据。
5.一种数据查询方法,其特征在于,适用于区块链的节点,所述方法包括:
根据查询条件和权利要求4所述的状态数据存储方法所存储的第二键值对和第三键值对模糊查找出符合所述查询条件的所有第三键;
根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据。
6.根据权利要求5所述的方法,其特征在于,所述根据所查找出的第三键和目标区块高度从全局索引表中查找目标数据前还包括:
根据目标区块的状态哈希查找目标区块高度。
7.一种状态数据存储方法,其特征在于,适用于区块链的节点,所述方法包括:
根据待存储的第一区块的各交易生成若干第一键值对;
分别根据各所述第一键值对生成第二键值对并存入状态数据库以更新全局索引表;
分别根据各所述第一键值对生成第三键值对,根据所述第三键值对的第三键从所述状态数据库中读取第四键值对,合并所述第三键值对和所述第四键值对以生成第五键值对并存入所述状态数据库;
其中,所述第二键值对的第二键包括所对应的第一键值对的第一键和所述第一区块的区块高度,所述第二键值对的第二值包括所对应的第一键值对的第一值;
所述第三键值对的第三键包括所对应的第一键值对的第一键,所述第三键值对的第三值包括所述第一区块的区块高度;
所述第五键值对的存储方式为覆盖所述第四键值对;
所述第五键值对用于通过模糊查询查找出符合查询条件的所有第五键,从所查找出的第五键的第五值中选取不大于所述目标区块高度的最大的区块高度,并根据所查找出的第五键和所选取的区块高度从所述全局索引表中读取出目标数据。
8.一种数据查询方法,其特征在于,适用于区块链的节点,所述方法包括:
根据查询条件和权利要求7所述的状态数据存储方法所存储的第二键值对和第五键值对模糊查找出符合所述查询条件的所有第五键;
从所查找出的第五键的第五值中选取不大于所述目标区块高度的最大的区块高度,并根据所查找出的第五键和所选取的区块高度从所述全局索引表中读取出目标数据。
9.根据权利要求8所述的方法,其特征在于,所述从所查找出的第五键的第五值中选取不大于所述目标区块高度的最大的区块高度,并根据所查找出的第五键和所选取的区块高度从所述全局索引表中读取出目标数据前还包括:
根据目标区块的状态哈希查找目标区块高度。
10.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-9中任一项所述的方法。
11.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910907134.4A CN110704506B (zh) | 2019-09-24 | 2019-09-24 | 状态数据存储方法和数据查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910907134.4A CN110704506B (zh) | 2019-09-24 | 2019-09-24 | 状态数据存储方法和数据查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704506A true CN110704506A (zh) | 2020-01-17 |
CN110704506B CN110704506B (zh) | 2022-05-24 |
Family
ID=69195664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910907134.4A Active CN110704506B (zh) | 2019-09-24 | 2019-09-24 | 状态数据存储方法和数据查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704506B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112364209A (zh) * | 2020-12-09 | 2021-02-12 | 杭州复杂美科技有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
CN112417054A (zh) * | 2020-12-09 | 2021-02-26 | 杭州复杂美科技有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109359222A (zh) * | 2018-08-06 | 2019-02-19 | 杭州复杂美科技有限公司 | 数据存储方法及系统、设备和存储介质 |
CN109684333A (zh) * | 2018-12-24 | 2019-04-26 | 杭州复杂美科技有限公司 | 一种数据存储及裁剪方法、设备和存储介质 |
CN110175188A (zh) * | 2019-05-31 | 2019-08-27 | 杭州复杂美科技有限公司 | 一种区块链状态数据缓存和查询方法、设备及存储介质 |
-
2019
- 2019-09-24 CN CN201910907134.4A patent/CN110704506B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109359222A (zh) * | 2018-08-06 | 2019-02-19 | 杭州复杂美科技有限公司 | 数据存储方法及系统、设备和存储介质 |
CN109684333A (zh) * | 2018-12-24 | 2019-04-26 | 杭州复杂美科技有限公司 | 一种数据存储及裁剪方法、设备和存储介质 |
CN110175188A (zh) * | 2019-05-31 | 2019-08-27 | 杭州复杂美科技有限公司 | 一种区块链状态数据缓存和查询方法、设备及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112364209A (zh) * | 2020-12-09 | 2021-02-12 | 杭州复杂美科技有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
CN112417054A (zh) * | 2020-12-09 | 2021-02-26 | 杭州复杂美科技有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
CN112364209B (zh) * | 2020-12-09 | 2023-11-28 | 杭州复杂美科技有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
CN112417054B (zh) * | 2020-12-09 | 2024-03-05 | 北京万古科技股份有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110704506B (zh) | 2022-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2421802C2 (ru) | Функции ранжирования, использующие смещенное расстояние, измеряемое количеством последовательных переходов, до документа в сети | |
AU2005239366B2 (en) | Partial query caching | |
CN110704506B (zh) | 状态数据存储方法和数据查询方法 | |
KR20210038859A (ko) | 검색 방법, 장치, 전자기기 및 저장매체 | |
Lu et al. | Flexible and efficient resolution of skyline query size constraints | |
CN109885576A (zh) | 一种哈希表创建方法及系统、计算设备及存储介质 | |
US20130159347A1 (en) | Automatic and dynamic design of cache groups | |
CN110442580B (zh) | 一种区块链状态数据存储方法、设备和存储介质 | |
CN103198361B (zh) | 基于多种优化机制的xacml策略评估引擎系统 | |
Cheema et al. | A safe zone based approach for monitoring moving skyline queries | |
EP1503304A2 (en) | Method and apparatus for late binding/dynamic pathname resolution | |
CN109815238A (zh) | 用严格平衡二叉树实现数据库的动态添加方法及装置 | |
Zheng et al. | Location-dependent skyline query | |
CN112148738A (zh) | 哈希冲突处理方法及系统 | |
CN102117305B (zh) | 查询数据的系统、方法和数据管理系统 | |
US7676457B2 (en) | Automatic index based query optimization | |
CN109446293A (zh) | 一种并行的高维近邻查询方法 | |
CN112699134A (zh) | 基于图剖分的分布式图数据库的存储与查询方法 | |
CN110955712A (zh) | 基于多数据源的开发api处理方法及装置 | |
CN110263108A (zh) | 一种基于道路网的关键词Skyline模糊查询方法及系统 | |
CN115880508A (zh) | 图像数据处理方法、装置、设备以及存储介质 | |
CN113473153B (zh) | 一种点云属性预测方法、编码方法、解码方法及其设备 | |
CN112487111A (zh) | 基于kv数据库的数据表关联方法及装置 | |
CN106202303A (zh) | 一种Chord路由表压缩方法及优化文件查找方法 | |
CN111641666B (zh) | 一种主链选择方法、装置及计算机可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |