CN110442577A - 一种状态数据存储、查询和管理方法、设备及存储介质 - Google Patents
一种状态数据存储、查询和管理方法、设备及存储介质 Download PDFInfo
- Publication number
- CN110442577A CN110442577A CN201910633124.6A CN201910633124A CN110442577A CN 110442577 A CN110442577 A CN 110442577A CN 201910633124 A CN201910633124 A CN 201910633124A CN 110442577 A CN110442577 A CN 110442577A
- Authority
- CN
- China
- Prior art keywords
- node
- block
- index
- index node
- height
- 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
Links
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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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
- G06F16/2246—Trees, e.g. B+trees
-
- 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
-
- 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/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种状态数据存储、查询和管理方法、设备及存储介质,属于区块链技术领域。根据区块高度Hi‑ΔHB之前的索引节点的键值,采用以上所述的一种状态数据查询方法查询区块高度Hi‑ΔHB之前的索引节点;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点;其中,Hi为当前区块高度,ΔHB为区块回滚区间。针对现有技术中的索引节点存在冗余数据的问题,本申请的技术方案不需要遍历整个索引节点的键值去更新索引节点,及管理状态数据,提高数据库的IO读写能力,数据吞吐能力。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种状态数据存储、查询和管理方法、设备及存储介质。
背景技术
区块链运行时间越久,区块高度会越高,产生的区块数据越多,鉴于区块链分布式存储的特性,区块及区块内的默克尔树均存储在各个区块链节点本地的数据库中,占用较大的空间。其中,默克尔树占用空间最大,默克尔树上主要记录区块链的状态数据,如交易地址的账户余额等数据,而账户余额数据主要以最新数据为准,除去区块回滚因素需要查看区块回滚高度内的状态数据的历史数据外,状态数据的历史数据对于大多数区块链节点及节点上钱包的交易地址账户来说是无用的,同时随着区块的产生,状态数据的历史数据会不断积累,默克尔状态树的节点数目不断增加,受限于硬盘IO读写瓶颈,每次存储一个默克尔树节点或者读取一个默克尔树节点的数据时,都会降低区块链节点本地数据库的读写效率;同时也会占用较大磁盘存储空间,因此状态数据的历史数据成了冗余数据,占用区块链节点本地存储空间,亟待处理。
中国发明专利申请,公开号:CN109684333A;公开日:2019.04.26;提供一种数据存储及裁剪方法、设备和存储介质,该方法包括:在本地数据库中存储第一默克尔树除根节点外的各节点的父节点信息;以及,在向第一默克尔树中插入第一叶子节点时,在本地数据库中存储对应于第一叶子节点的第一索引节点;其中,第一索引节点的第二键值包括第一叶子节点的第一键值、第一区块高度和第一哈希值;其中,第二键值用于查找与第一键值相同的若干索引节点和对应的叶子节点,父节点信息用于查找冗余的父节点。该发明通过存储叶子节点对应的索引节点,根据索引节点删除冗余的状态数据,在不影响正常的账户状态的前提下,大大提高了数据同步的速率,以及提高了读写效率。该方案随着区块越来越多,索引节点也会越来越多,因此导致利用该数据存储方法保存索引节点,所花费的时间过长,进而影响到冗余数据的裁剪速度和进度,从而会出现索引节点不能跟随区块的最新高度,进行及时更新的情况,反而不利于提高区块链节点本地数据库中数据同步的速率,以及读写效率,如果从索引节点查询最新状态数据,可能还会带来查询到的最新状态数据不准确的技术问题。
发明内容
1.发明要解决的技术问题
为了克服上述技术问题,本发明提供了一种状态数据存储、查询和管理方法、设备及存储介质。不需要遍历整个索引节点的键值去更新索引节点,及管理状态数据,提高数据库的IO读写能力,数据吞吐能力。
2.技术方案
为解决上述问题,本发明提供的技术方案为:
第一方面,本发明提供了一种状态数据存储方法,适用于区块链节点,包括:将叶子节点所在的区块高度、叶子节点的键值、叶子节点哈希值放在一起,形成所述叶子节点对应的索引节点。
进一步地,所述索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。
进一步地,所述叶子节点的键值为所述索引节点的键值,所述叶子节点所在的区块高度为所述索引节点的区块高度Hi,将所述键值相同的索引节点存储在一起。
进一步地,所述索引节点还包括由区间号和标记号形成的前缀,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点。
进一步地,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,Hi为任一区块高度,ΔH为区块裁剪高度。
第二方面,本发明提供了一种状态数据查询方法,适用于区块链节点,包括根据键值查询以上所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点。
进一步地,根据键值查询以上所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点,叶子节点哈希值,以及叶子节点的默克尔状态树路径上的中间节点哈希值,以验证或管理所述叶子节点哈希值。
进一步地,所述的索引节点包含前缀,所述前缀由区间号和标记号形成,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点。
进一步地,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,Hi为任一区块高度,ΔH为区块裁剪高度。
第三方面,本发明提供了一种状态数据管理方法,适用于区块链节点,包括:根据区块高度Hi-ΔHB之前的索引节点的键值,采用以上所述的一种状态数据查询方法查询区块高度Hi-ΔHB之前的索引节点;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点;其中,Hi为当前区块高度,ΔHB为区块回滚区间。
进一步地,包括:所述索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点,以及所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。
进一步地,每一个区块形成后,均执行上述方法,以管理所述状态数据。
进一步地,区块高度每隔一个区块裁剪高度ΔH执行一次上述方法,包括:当离当前区块高度Hi最近的一个区块裁剪区间ΔHi内的索引节点根据以上所述的一种状态数据存储方法保存结束后,根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用以上所述的一种状态数据查询方法去查询前一区块裁剪区间ΔHi-1及其之前的索引节点;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点。其中,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],前一区块裁剪区间ΔHi-1范围为:[Hi-2ΔH,Hi-ΔH],其中,ΔH为区块裁剪高度,ΔH≥ΔHB。
进一步地,所述叶子节点的键值为所述索引节点的键值,所述叶子节点所在的区块高度Hi为所述索引节点的区块高度Hi,将所述键值相同的索引节点存储在一起,以便根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用以上所述的一种状态数据查询方法去查询前一区块裁剪区间ΔHi-1及其之前的索引节点。
进一步地,所述索引节点还包括由区间号和标记号形成的前缀,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点,以便根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用以上所述的一种状态数据查询方法查询前一区块裁剪区间ΔHi-1及其之前的索引节点。
第四方面,本发明提供了一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。
第五方面,本发明提供了一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上任一项所述的方法。
3.有益效果
采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:
本发明不需要遍历整个索引节点的键值去更新索引节点,及管理状态数据;只需要针对区块裁剪区间的索引节点涉及到的键值进行查询,从而对键值进行更新,删除索引节点的冗余数据,以及区块链节点存储的叶子节点,及其默克尔树路径上的中间节点,删除区块链节点本地数据库的冗余状态数据,提高数据库的IO读写能力,提高区块链节点本地数据库中数据同步的速率,以及数据吞吐能力。
附图说明
图1为实施例1提供的一种状态数据存储方法的流程图。
图2为实施例1提供的一种状态数据存储系统的结构示意图。
图3为实施例2提供的一种状态数据查询系统的结构示意图。
图4为实施例3提供的一种状态数据管理方法的流程图。
图5为图4优选的一种状态数据管理方法的流程图。
图6为实施例3提供的一种状态数据管理系统的结构示意图。
图7为实施例4提供的叶子节点更新示意图。
图8为本发明的一种设备结构示意图。
图9为实施例3和实施例4中所述第一种情况的时间进程示意图。
图10为实施例3和实施例4中所述第二种情况的时间进程示意图。
图11为实施例3和实施例4中所述第三种情况的时间进程示意图。
具体实施方式
为进一步了解本发明的内容,结合附图及实施例对本发明作详细描述。
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
本发明中所述的第一、第二等词语,是为了描述本发明的技术方案方便而设置,并没有特定的限定作用,均为泛指,对本发明的技术方案不构成限定作用。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
实施例1
本实施例提供一种状态数据存储方法,如图1所示,包括:
S101、将叶子节点所在的区块高度、叶子节点的键值、叶子节点哈希值放在一起,形成所述叶子节点的索引节点;
S103、索引节点存储在区块链节点上,可以缓存起来,如果采用缓存的方式,那么在后期查找读取叶子节点数据时都将会非常迅速,体验好,也可以存储在区块链节点本地数据库中。
进一步地,所述叶子节点的索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。将叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值也保存在索引节点内,便于后期查找,读取和管理方便,不需要到本地数据库中去读取,可以很快地获取中间节点,与叶子节点一起,能够对查询到的交易数据进行快速的验证,进一步提高用户体验性。叶子节点上保存的是键值,以及交易地址的账户余额,键值里面存储的是交易地址和区块高度。
进一步地,所述叶子节点的键值为所述索引节点的键值,所述叶子节点所在的区块高度Hi为所述索引节点的区块高度Hi,将所述键值相同的索引节点存储在一起。采用这种方式,是为了叶子节点及其对应的索引节点后期的状态数据查询及管理方便,键值相同的索引节点存储在一起,能够很快获取到对应的叶子节点,方便查询及管理。
进一步地,所述索引节点还包括由区间号和标记号形成的前缀,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,便于后期索引节点的分区间查询和管理,所述标记号(标记号可以为任何可以区别于现有的叶子节点或中间节点的内容)用以标识所述节点为索引节点,便于状态数据查询时,尽快锁定查找对象。
进一步地,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,ΔH为区块裁剪高度。对索引节点进行区块裁剪区间的划分,一方面,便于定期管理索引节点,减少索引节点自身存在的状态数据冗余,比如一个键值对应多个索引节点的情况;另一方面定期管理,而不是每个区块高度都对索引节点进行管理,在一定程度上也节省了区块链节点的算力。
本实施例所述方法对应的一种状态数据存储系统,如图2所示,包括索引节点构建模块,用于将叶子节点所在的区块高度、叶子节点的键值、叶子节点哈希值放在一起,形成所述叶子节点的索引节点;索引节点存储模块,用于存储索引节点。
实施例2
本实施例提出了一种状态数据查询方法,适用于区块链节点,根据键值查询实施例1中任一技术方案所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点。
因索引节点自身存储的内容包含叶子节点的键值,叶子节点的区块高度、叶子节点哈希值,那么根据键值,可以快速查找到叶子节点哈希值,同时可以索引到默克尔树中叶子节点所在的位置,查找到叶子节点的值。
进一步地,当所述叶子节点对应的索引节点中还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值时。根据键值,和/或对应键值的叶子节点所在的区块高度,查询实施例1所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点、叶子节点哈希值,以及叶子节点的默克尔状态树路径上的中间节点哈希值,可以验证查询到的所述叶子节点原始信息及其哈希值,是否正确。
进一步地,所述的索引节点包含前缀,所述前缀由区间号和标记号形成,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点。查询时可以根据前缀快速锁定查询的目标——索引节点,根据区间号,可以判断索引节点所在的区块裁剪区间ΔHi。
其中,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,ΔH为区块裁剪高度,区块裁剪高度可根据需要进行设置,比如如果键值数据经常更新,说明索引节点需要经常维护更新,则将区块裁剪高度ΔH设置的数值小点,便于及时删除索引节点上产生的冗余数据;如果键值数据更新的节奏不快,说明索引节点更新的节奏也不快,则可以将区块裁剪高度ΔH设置的数值大点。
本实施例所述的方法对应一个状态数据查询模块,如图3所示,从实施例1所述的索引节点存储模块中查询键值对应的索引节点,即键值对应的区块高度及叶子节点哈希值,或叶子节点的默克尔状态树路径上的中间节点哈希值。
实施例3
本实施例提出了一种状态数据管理方法,如图4所示,包括:
S201、根据区块高度Hi-ΔHB之前的索引节点的键值,采用实施例2中任一技术方案所述的一种状态数据查询方法查询区块高度Hi-ΔHB之前的索引节点,如图9所示;
S203、当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点,因为索引节点中包含叶子节点的键值、区块高度和哈希值,删除了区块链节点本地数据库中的叶子节点键值和Value值,以及叶子节点哈希值。
其中,Hi为当前区块高度,ΔHB为区块回滚区间。通过限定区块回滚区间,为区块回滚保存了完整的状态数据。
所述键值对应若干个索引节点包括两种情况:
其一:所述键值对应一个索引节点时,则保留该索引节点即可;
其二:所述键值对应两个及以上索引节点时,则保留区块高度最高的索引节点,删除其余索引节点。
进一步地,删除其余索引节点,因所述索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点,以及所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值;就删除了区块链节点本地数据库中的叶子节点键值和Value值,哈希值,以及所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。
进一步地,每一个区块形成后,均执行上述方法,以管理所述状态数据。本实施例的一种状态数据管理方法,其执行的时间,可根据需要而定,可能存在以下几种情况:
第一种情况,设定当前区块高度Hi为HC,当前区块高度HC的区块形成后,假设预留足够的区块回滚区间ΔHB后,针对区块高度HC-ΔHB之前的索引节点进行管理,如图9为对应的时间进程;对于每一个新的区块形成后均进行上述处理,这种方式处理过于频繁,除非键值在每个区块高度均进行部分或全部的更新,否则无疑会给区块链节点带来一定负担,浪费一定的算力;
第二种情况,设定当前区块高度Hi为HC,区块裁剪区间ΔHi范围为:[Hi-ΔHB-ΔH,Hi-ΔHB],相应地,区块裁剪区间ΔHi-1范围为:[Hi-ΔHB-2ΔH,Hi-ΔHB-ΔH],其中,ΔH为区块裁剪高度。如图10为对应的时间进程,对于这种情况可以通过区块高度判断的方式,除去区块回滚区间ΔHB后,每形成一个新的区块,立马判断区块高度HC-ΔHB是否达到Hi-ΔHB,若是,则进行索引节点管理。这种方式与第一种方式存在的问题相同,需要每个区块高度均进行判断。但这种两种方式均可以实现对索引节点的管理,去除索引节点中的冗余数据。
进一步地,还有第三种情况,区块高度每隔一个区块裁剪高度ΔH执行一次上述方法,如图5所示,包括:
S301、当离当前区块高度Hi最近的一个区块裁剪区间ΔHi内的索引节点根据实施例1中任一技术方案所述的一种状态数据存储方法保存结束后,根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用实施例2中任一技术方案所述的一种状态数据查询方法去查询前一区块裁剪区间ΔHi-1及其之前的索引节点,如图11为对应的时间进程;
S303、当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点。
其中,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],前一区块裁剪区间ΔHi-1范围为:[Hi-2ΔH,Hi-ΔH],其中,ΔH为区块裁剪高度,ΔH≥ΔHB。为防止区块回滚,通过限定区块回滚区间ΔH≥ΔHB,为区块回滚保存了完整的状态数据。
第三种情况,即将区块裁剪高度ΔH设置成大于等于区块回滚区间ΔHB,当当前区块区块高度达到区块裁剪区间ΔHi范围[Hi-ΔH,Hi]的上限Hi后,自动根据本实施例的一种状态数据管理方法,对前一区块裁剪区间ΔHi-1范围[Hi-2ΔH,Hi-ΔH]的索引节点,进行状态数据的裁剪;不需要消耗区块链节点的算力对区块高度进行判断和比对。
因索引节点包括叶子节点的键值、区块高度和哈希值,删除索引节点及其对应的叶子节点,就是删除索引节点以及区块链节点本地数据库中对应的默克尔树上的叶子节点的键值、叶子节点的区块高度、叶子节点哈希值。
此时存在两种情况:
其一:所述键值对应一个索引节点时,所述索引节点在前一区块裁剪区间ΔHi-1内,保留该索引节点即可;
其二:所述键值对应两个及以上索引节点时,区块高度最高的索引节点在前一区块裁剪区间ΔHi-1内,其余索引节点,可能是全部或部分在前一区块裁剪区间ΔHi-1内,如果本方法执行了一段时间了,那么可能会有一个索引节点在前一个区块裁剪区间ΔHi-1之前的区块裁剪区间内,其余在前一区块裁剪区间ΔHi-1内;则保留区块高度最高的索引节点,删除其余索引节点及其对应的叶子节点。
当所述索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值;所述当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点,以及叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。那么就是删除索引节点以及区块链节点本地数据库中的叶子节点键值和Value值,叶子节点哈希值,以及所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。
进一步地,所述叶子节点的键值为所述索引节点的键值,所述叶子节点所在的区块高度Hi为所述索引节点的区块高度Hi,将所述键值相同的索引节点存储在一起,以便根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用实施例2中任一技术方案所述的一种状态数据查询方法去查询前一区块裁剪区间ΔHi-1及其之前的索引节点。
进一步地,所述索引节点还包括由区间号和标记号形成的前缀,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点,以便根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用实施例2中任一技术方案所述的一种状态数据查询方法去查询前一区块裁剪区间ΔHi-1及其之前的索引节点。在查询数据时,能够根据前缀中的标记号立即锁定查询对象,不会读取区块链节点上无关的数据信息,便于集中管理。
本实施例通过设置区块裁剪高度ΔH,实现以下技术效果:1)便于管理,通过键值查询,比对,进而缩减、删除索引节点,从而减少区块链节点本地数据库中默克尔树上存储的状态数据的冗余;2)区块裁剪高度ΔH的设置便于定期管理索引节点,及时清除索引节点的冗余;3)区块裁剪高度ΔH设置保护了区块回滚所需的状态数据不被删除,即区块裁剪高度ΔH的大小大于区块回滚区间的大小,在区块回滚时也可以发挥积极作用,保护数据的完整性。
与本实施例的一种状态数据管理方法相应地一种状态数据管理系统,如图6所示,包括,状态数据查询模块,用于执行步骤S201,或步骤S301,从实施例2所述的索引节点存储模块中查询对应的索引节点,状态数据管理模块,用于当所述键值对应若干个索引节点时,对索引节点存储模块以及区块链节点本地数据库中的默克尔树进行操作,保留区块高度最高的索引节点,删除其余索引节点。
实施例4
以复杂美公链Chain33为例,对实施例1-3中所述的方法进行详细说明。如图7所示为Chain33上区块高度为67890的默克尔树的节点示意图,区块上包含有若干叶子节点,分别为L1、L2、L3、L4、L5、L6、L7和L8,对应键值分别为Key1、Key2、Key3、Key4、Key5、Key6、Key7和Key8,其中键值Key1后又改变,新的叶子节点A1插入,插入后,形成了中间节点F1’、F12’,以及根节点R1’。
将上述叶子节点按照实施例1所述的一种状态数据存储方法,形成所述索引节点,如表1所示:
表1索引节点的保存内容
叶子节点的键值即为索引节点的键值,叶子节点的区块高度即为索引节点的区块高度;另外索引节点还保存叶子节点所在默克尔树路径上的中间节点,这些索引节点形成索引节点列表或组合,缓存在区块链节点本地,或者是存储在区块链节点本地的数据库中。
区间号和标记号形成索引节点的前缀,本实施例中区间号为ΔH1,标记号为Index;在本实施例中,假设区块裁剪高度ΔH取值为100,区块裁剪区间ΔH1范围为:[67800,67900]。
采用实施例2中所述的一种状态数据查询方法,通过前缀中的识别号Index识别出索引节点,可以查询区块链节点存储的索引节点,比如查询键值Key1的状态数据,根据键值Key1查询索引节点,得到如表2所示,键值Key1的状态数据信息,根据表3中键值Key1的中间节点的信息可以验证键值Key1对应叶子节点的正确性。
表2索引节点的键值Key1对应的状态数据信息
第一种状态数据管理方法,时间进程如图9所示,假设区块回滚区间ΔHB为15,当前区块高度HC为678107,对区块高度为67892之前的索引节点进行管理,而区块高度为67890和67891的索引节点恰好在此范围内,那么根据键值查询索引节点,发现键值Key1的索引节点共有两个,如表2所示,那么保留区块高度为67891的索引节点,删除区块高度为67890的索引节点,及其对应的叶子节点L1,以及叶子节点L1的默克尔树路径上的中间节点F1、F12,那么键值Key1的索引节点内容如表3所示。
表3键值Key1的索引节点更新后的内容
第二种状态数据管理方法,时间进程如图9所示,假设上一个区块裁剪区间范围为:[67700,67800],那么当前区块裁剪区间范围为[67800,67900];在区块高度为67815(考虑到区块回滚区间为15,需预留足够的区块回滚区间,以为区块回滚保存完整的状态数据)时,对区块裁剪区间范围为:[67700,67800]采用状态数据管理方法,对索引节点进行了管理,并消除了冗余;从区块高度67816开始判断,区块高度67816-15=67811是否达到当前区块裁剪区间范围为[67800,67900]的上限67900,若没有达到,则不执行所述状态数据管理方法,直到到达区块高度67915时,区块高度67915-15=67900达到了当前区块裁剪区间范围为[67800,67900]的上限67900,则执行所述状态数据管理方法,键值Key1的索引节点内容更新后如表3所示。
第三种状态数据管理方法,将区块裁剪高度ΔH取值为100,其取值必须大于等于区块回滚区间ΔHB为15,以确保在区块回滚发生时,区块链节点保存有充足的状态数据。
假定区块裁剪区间范围[67800,67900]的索引节点已经保存完毕,根据区块裁剪区间[67700,67800]的索引节点涉及到的键值,查询区块裁剪区间[67700,67800]及其之前的索引节点;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点L1,以及叶子节点L1的默克尔树路径上的中间节点F1、F12。比如键值Key1,更新前后如表2和表3所示。
需要说明的是,Chain33的状态数据若按照本实施例的状态数据管理方法进行管理后,区块裁剪区间[67700,67800]之前的索引节点,即区块高度67700之前的索引节点与键值是一一对应关系,即一个键值对应一个索引节点;那么若一个键值在区块裁剪区间[67700,67800]内没有更新的话,区块裁剪区间[67700,67800]的索引节点的键值中将不存在该键值,那么在利用本实施例的状态数据管理方法对区块裁剪区间[67700,67800]的索引节点更新时,不会去查询该键值对应的索引节点。这也是本实施例的有益效果的体现,即不需要遍历整个索引节点的键值去更新索引节点,及管理状态数据;只需要针对区块裁剪区间[67700,67800]的索引节点涉及到的键值进行查询,从而对键值进行更新,删除索引节点的冗余数据,以及区块链节点存储的叶子节点,及其默克尔树路径上的中间节点,删除区块链节点本地数据库的冗余状态数据,提高数据库的IO读写能力,数据吞吐能力。
实施例5
一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。
一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上实施例1-4任一项技术方案所述的方法。
图8为本发明一实施例提供的一种设备的结构示意图。
如图8所示,作为另一方面,本申请还提供了一种设备500,包括一个或多个中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有设备500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本申请公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一实施例描述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (17)
1.一种状态数据存储方法,其特征在于,适用于区块链节点,包括:将叶子节点所在的区块高度、叶子节点的键值、叶子节点哈希值放在一起,形成所述叶子节点对应的索引节点。
2.根据权利要求1所述的方法,其特征在于,所述索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。
3.根据权利要求1所述的方法,其特征在于,所述叶子节点的键值为所述索引节点的键值,所述叶子节点所在的区块高度为所述索引节点的区块高度Hi,将所述键值相同的索引节点存储在一起。
4.根据权利要求1所述的方法,其特征在于,所述索引节点还包括由区间号和标记号形成的前缀,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点。
5.根据权利要求4所述的方法,其特征在于,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,Hi为当前区块高度,ΔH为区块裁剪高度。
6.一种状态数据查询方法,其特征在于,适用于区块链节点,根据键值查询权利要求1所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点。
7.根据权利要求6所述的方法,其特征在于,根据键值查询权利要求1所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点,叶子节点哈希值,以及叶子节点的默克尔状态树路径上的中间节点哈希值,以验证或管理所述叶子节点哈希值。
8.根据权利要求6所述的方法,其特征在于,所述的索引节点包含前缀,所述前缀由区间号和标记号形成,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点。
9.根据权利要求8所述的方法,其特征在于,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,Hi为当前区块高度,ΔH为区块裁剪高度。
10.一种状态数据管理方法,其特征在于,适用于区块链节点,包括:
根据区块高度Hi-ΔHB之前的索引节点的键值,采用权利要求6所述的一种状态数据查询方法查询区块高度Hi-ΔHB之前的索引节点;
当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点;
其中,Hi为当前区块高度,ΔHB为区块回滚区间。
11.根据权利要求10所述的方法,其特征在于,包括:所述索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点,以及所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。
12.根据权利要求10或11所述的方法,其特征在于,每一个区块形成后,均执行上述方法,以管理所述状态数据。
13.根据权利要求10或11所述的方法,其特征在于,区块高度每隔一个区块裁剪高度ΔH执行一次上述方法,包括:
当离当前区块高度Hi最近的一个区块裁剪区间ΔHi内的索引节点根据权利要求1所述的一种状态数据存储方法保存结束后,根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用权利要求6所述的一种状态数据查询方法去查询前一区块裁剪区间ΔHi-1及其之前的索引节点;
当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点。
其中,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],前一区块裁剪区间ΔHi-1范围为:[Hi-2ΔH,Hi-ΔH],其中,ΔH为区块裁剪高度,ΔH≥ΔHB。
14.根据权利要求13所述的方法,其特征在于,所述叶子节点的键值为所述索引节点的键值,所述叶子节点所在的区块高度Hi为所述索引节点的区块高度Hi,将所述键值相同的索引节点存储在一起,以便根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用权利要求6所述的一种状态数据查询方法去查询前一区块裁剪区间ΔHi-1及其之前的索引节点。
15.根据权利要求13所述的方法,其特征在于,所述索引节点还包括由区间号和标记号形成的前缀,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点,以便根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用权利要求6所述的一种状态数据查询方法查询前一区块裁剪区间ΔHi-1及其之前的索引节点。
16.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-15中任一项所述的方法。
17.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-15中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910633124.6A CN110442577A (zh) | 2019-07-15 | 2019-07-15 | 一种状态数据存储、查询和管理方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910633124.6A CN110442577A (zh) | 2019-07-15 | 2019-07-15 | 一种状态数据存储、查询和管理方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110442577A true CN110442577A (zh) | 2019-11-12 |
Family
ID=68430427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910633124.6A Pending CN110442577A (zh) | 2019-07-15 | 2019-07-15 | 一种状态数据存储、查询和管理方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442577A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110958303A (zh) * | 2019-11-14 | 2020-04-03 | 杭州复杂美科技有限公司 | 一种区块存储和查询方法、设备及存储介质 |
CN111026806A (zh) * | 2019-11-14 | 2020-04-17 | 杭州复杂美科技有限公司 | 一种默克尔状态树同步方法、设备及存储介质 |
CN111046029A (zh) * | 2019-12-04 | 2020-04-21 | 杭州复杂美科技有限公司 | 数据裁剪方法、设备和存储介质 |
CN111309731A (zh) * | 2020-02-18 | 2020-06-19 | 杭州复杂美科技有限公司 | 一种区块存储和查询方法、设备及存储介质 |
CN111355631A (zh) * | 2020-02-18 | 2020-06-30 | 杭州复杂美科技有限公司 | 一种区块链异常识别方法和系统、设备及存储介质 |
CN111444194A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 一种块链式账本中索引的清除方法、装置及设备 |
CN111488396A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 业务数据区块链的数据同步方法及装置 |
CN111611319A (zh) * | 2020-06-08 | 2020-09-01 | 杭州复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
CN111611260A (zh) * | 2020-06-23 | 2020-09-01 | 上海优扬新媒信息技术有限公司 | 一种区块链数据的删除方法及装置 |
CN111651300A (zh) * | 2020-06-05 | 2020-09-11 | 成都质数斯达克科技有限公司 | 一种区块链数据恢复方法、装置、设备及介质 |
CN111797086A (zh) * | 2020-07-03 | 2020-10-20 | 杭州复杂美科技有限公司 | 数据裁剪方法、设备和存储介质 |
CN111796845A (zh) * | 2020-07-03 | 2020-10-20 | 杭州复杂美科技有限公司 | 数据库升级方法、状态数据查询方法、设备和存储介质 |
CN112783927A (zh) * | 2021-01-27 | 2021-05-11 | 浪潮云信息技术股份公司 | 一种数据库查询方法及系统 |
CN113037503A (zh) * | 2021-05-26 | 2021-06-25 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN113127493A (zh) * | 2021-06-16 | 2021-07-16 | 恒生电子股份有限公司 | 区块链状态数据的裁剪方法及装置、电子设备、存储介质 |
CN114240434A (zh) * | 2021-12-07 | 2022-03-25 | 中信银行股份有限公司 | 一种基于Fabric的交易并发控制方法及系统 |
CN114780642A (zh) * | 2022-05-20 | 2022-07-22 | 北京链探科技有限公司 | 一种区块链数据处理方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446376A (zh) * | 2018-03-16 | 2018-08-24 | 众安信息技术服务有限公司 | 数据存储方法与装置 |
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN109359222A (zh) * | 2018-08-06 | 2019-02-19 | 杭州复杂美科技有限公司 | 数据存储方法及系统、设备和存储介质 |
CN109408551A (zh) * | 2018-08-06 | 2019-03-01 | 杭州复杂美科技有限公司 | 数据查询方法及系统、共识方法及系统、设备和存储介质 |
CN109684333A (zh) * | 2018-12-24 | 2019-04-26 | 杭州复杂美科技有限公司 | 一种数据存储及裁剪方法、设备和存储介质 |
-
2019
- 2019-07-15 CN CN201910633124.6A patent/CN110442577A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446376A (zh) * | 2018-03-16 | 2018-08-24 | 众安信息技术服务有限公司 | 数据存储方法与装置 |
CN109359222A (zh) * | 2018-08-06 | 2019-02-19 | 杭州复杂美科技有限公司 | 数据存储方法及系统、设备和存储介质 |
CN109408551A (zh) * | 2018-08-06 | 2019-03-01 | 杭州复杂美科技有限公司 | 数据查询方法及系统、共识方法及系统、设备和存储介质 |
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN109684333A (zh) * | 2018-12-24 | 2019-04-26 | 杭州复杂美科技有限公司 | 一种数据存储及裁剪方法、设备和存储介质 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110958303A (zh) * | 2019-11-14 | 2020-04-03 | 杭州复杂美科技有限公司 | 一种区块存储和查询方法、设备及存储介质 |
CN111026806A (zh) * | 2019-11-14 | 2020-04-17 | 杭州复杂美科技有限公司 | 一种默克尔状态树同步方法、设备及存储介质 |
CN110958303B (zh) * | 2019-11-14 | 2022-06-24 | 杭州复杂美科技有限公司 | 一种区块存储和查询方法、设备及存储介质 |
CN111046029A (zh) * | 2019-12-04 | 2020-04-21 | 杭州复杂美科技有限公司 | 数据裁剪方法、设备和存储介质 |
CN111309731A (zh) * | 2020-02-18 | 2020-06-19 | 杭州复杂美科技有限公司 | 一种区块存储和查询方法、设备及存储介质 |
CN111355631A (zh) * | 2020-02-18 | 2020-06-30 | 杭州复杂美科技有限公司 | 一种区块链异常识别方法和系统、设备及存储介质 |
CN111355631B (zh) * | 2020-02-18 | 2021-07-06 | 杭州复杂美科技有限公司 | 一种区块链异常识别方法和系统、设备及存储介质 |
CN111488396A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 业务数据区块链的数据同步方法及装置 |
CN111651300A (zh) * | 2020-06-05 | 2020-09-11 | 成都质数斯达克科技有限公司 | 一种区块链数据恢复方法、装置、设备及介质 |
CN111611319A (zh) * | 2020-06-08 | 2020-09-01 | 杭州复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
CN111444194B (zh) * | 2020-06-12 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 一种块链式账本中索引的清除方法、装置及设备 |
CN111444194A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 一种块链式账本中索引的清除方法、装置及设备 |
CN111611260A (zh) * | 2020-06-23 | 2020-09-01 | 上海优扬新媒信息技术有限公司 | 一种区块链数据的删除方法及装置 |
CN111796845B (zh) * | 2020-07-03 | 2022-05-24 | 杭州复杂美科技有限公司 | 数据库升级方法、状态数据查询方法、设备和存储介质 |
CN111797086A (zh) * | 2020-07-03 | 2020-10-20 | 杭州复杂美科技有限公司 | 数据裁剪方法、设备和存储介质 |
CN111796845A (zh) * | 2020-07-03 | 2020-10-20 | 杭州复杂美科技有限公司 | 数据库升级方法、状态数据查询方法、设备和存储介质 |
CN112783927A (zh) * | 2021-01-27 | 2021-05-11 | 浪潮云信息技术股份公司 | 一种数据库查询方法及系统 |
CN112783927B (zh) * | 2021-01-27 | 2023-03-17 | 浪潮云信息技术股份公司 | 一种数据库查询方法及系统 |
CN113037503A (zh) * | 2021-05-26 | 2021-06-25 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN113037503B (zh) * | 2021-05-26 | 2021-10-15 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN113127493A (zh) * | 2021-06-16 | 2021-07-16 | 恒生电子股份有限公司 | 区块链状态数据的裁剪方法及装置、电子设备、存储介质 |
CN114240434A (zh) * | 2021-12-07 | 2022-03-25 | 中信银行股份有限公司 | 一种基于Fabric的交易并发控制方法及系统 |
CN114780642A (zh) * | 2022-05-20 | 2022-07-22 | 北京链探科技有限公司 | 一种区块链数据处理方法、装置及电子设备 |
CN114780642B (zh) * | 2022-05-20 | 2022-08-26 | 北京链探科技有限公司 | 一种区块链数据处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110442577A (zh) | 一种状态数据存储、查询和管理方法、设备及存储介质 | |
CN110175188A (zh) | 一种区块链状态数据缓存和查询方法、设备及存储介质 | |
CN109684333A (zh) | 一种数据存储及裁剪方法、设备和存储介质 | |
US8380702B2 (en) | Loading an index with minimal effect on availability of applications using the corresponding table | |
CN109359222A (zh) | 数据存储方法及系统、设备和存储介质 | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
US7970728B2 (en) | Dynamically building and populating data marts with data stored in repositories | |
KR101105363B1 (ko) | 롱 트랜잭션 데이터 스트림을 위한 빈발항목집합 탐색 방법 | |
CN109933592A (zh) | 数据存储方法、数据回滚方法、设备和存储介质 | |
US11314717B1 (en) | Scalable architecture for propagating updates to replicated data | |
US7734618B2 (en) | Creating adaptive, deferred, incremental indexes | |
US20090063400A1 (en) | Apparatus, system, and method for improving update performance for indexing using delta key updates | |
CN104750720B (zh) | 多线程并发访问环境下高性能数据处理的实现 | |
CN108388632A (zh) | 数据分群、分段、以及并行化 | |
CN109902130A (zh) | 一种数据存储方法、数据查询方法和装置、存储介质 | |
CN109313640A (zh) | 用于数据库优化的方法和系统 | |
CN103314377A (zh) | 稀疏索引表组织 | |
MX2010012866A (es) | Compaginacion de datos jerarquicos. | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
CN109670975A (zh) | 计算机系统中生成单号的方法、介质及电子设备 | |
CN105787058A (zh) | 一种用户标签系统及基于用户标签系统的数据推送系统 | |
US8495041B2 (en) | Data structure, computer system, method and computer program for searching database | |
CN107766355B (zh) | 层级数据管理方法、层级数据管理系统及即时通信系统 | |
CN111782654B (zh) | 一种分布式数据库中数据分区存放的方法 | |
CN105512325B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191112 |
|
RJ01 | Rejection of invention patent application after publication |