CN116204581A - 一种数据写入方法、装置、计算机设备和存储介质 - Google Patents
一种数据写入方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116204581A CN116204581A CN202211537563.5A CN202211537563A CN116204581A CN 116204581 A CN116204581 A CN 116204581A CN 202211537563 A CN202211537563 A CN 202211537563A CN 116204581 A CN116204581 A CN 116204581A
- Authority
- CN
- China
- Prior art keywords
- node
- target
- array
- tree
- updated
- 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
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- 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
- G06F16/2308—Concurrency control
-
- 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/2455—Query execution
- G06F16/24552—Database cache management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据写入方法、装置、计算机设备和存储介质,其中,该方法包括:响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;目标数组包括当前建立的可验证结构数组中每层的最大节点序号;可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与节点树一致的层级结构;根据目标数据生成新的叶子节点的节点摘要信息,并根据目标数组确定新的叶子节点的节点序号;根据新的叶子节点的节点摘要信息,对节点树进行更新,得到更新后的节点树,并利用新的叶子节点的节点序号,对目标数组进行更新,得到更新后的目标数组;其中,节点树更新完成用于表征目标数据写入成功。
Description
技术领域
本公开涉及区块链技术领域,具体而言,涉及一种数据写入方法、装5置、计算机设备和存储介质。
背景技术
在区块链技术中,服务端在存储来自客户端的交易数据时,通常采集默克尔树(Merkle Tree)的方式进行数据存储,但传统的Merkle Tree不仅
存在冗余的中间节点的计算,还会在数据***和删除时频繁进行随机I/O的0读取,导致数据写入的复杂度较高,降低了数据写入的效率。
发明内容
本公开实施例至少提供一种数据写入方法、装置、计算机设备和存储介质。
第一方面,本公开实施例提供了一种数据写入方法,包括:5响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;
所述目标数组包括当前建立的可验证结构数组中每层的最大节点序号;所述可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与所述节点树一致的层级结构;所述节点树中的节点用于表征已写入数据的摘要信息;
0根据所述目标数据生成新的叶子节点的节点摘要信息,并根据所述目标数组确定所述新的叶子节点的节点序号;
根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,并利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组;其中,所述节点树更新完成用于表征所述目标数据写入成功。
在一种可能的实施方式中,所述根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,包括:
在所述节点序号为偶数的情况下,根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树;所述目标节点的节点摘要信息存储在所述缓存中。
在一种可能的实施方式中,所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组,包括:
根据所述更新后的节点树对应的各个新生成节点的节点序号和节点连接关系,对所述可验证结构数组进行更新,得到更新后的可验证结构数组;所述新生成节点至少包括所述新的叶子节点和所述新的叶子节点的父节点;
根据所述更新后的可验证结构数组的每层的最大节点序号,对所述目标数组进行更新,得到更新后的目标数组;
在得到所述更新后的目标数组之后,还包括:
利用所述更新后的目标数组,对所述缓存中存储的目标数组进行更新。
在一种可能的实施方式中,在所述节点序号为奇数的情况下,所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组,包括:
将所述新的叶子节点的所述节点序号,添加在所述可验证结构数组与叶子节点所匹配的层级中,得到更新后的所述可验证结构数组;
将所述目标数组中排序顺序位为首位的最大节点序号替换为所述新的叶子节点的节点序号,得到更新后的目标数组;其中,所述目标数组中的各个最大节点序号的排序顺序位,为根据各个最大节点序号在所述节点树中所属的层级,按照从低到高的顺序确定的。
在一种可能的实施方式中,所述根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,包括:
根据所述新的叶子节点的节点摘要信息和所述目标数组中排序顺序位为首位的最大节点序号对应的目标节点的节点摘要信息,生成所述新的叶子节点的目标父节点以及所述目标父节点的节点摘要信息;
确定所述目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点;
若否,则根据所述目标父节点的节点摘要信息和所述下一个最大节点序号对应的目标节点的节点摘要信息,生成新的目标父节点以及所述新的目标父节点的节点摘要信息;
返回所述确定所述目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点的步骤,直至所述目标数组遍历完成或存在已生成父节点;
根据已生成的各个所述目标父节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树。
在一种可能的实施方式中,所述方法还包括:
在所述目标数组中的下一个最大节点序号对应的目标节点存在已生成父节点的情况下,根据所述新的叶子节点的目标父节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树。
在一种可能的实施方式中,在得到更新后的节点树之后,还包括:
根据所述更新后的节点树,确定所述新的叶子节点对应的根集摘要;所述根集摘要中包括所述新的叶子节点对应的各个根集节点以及所述根集节点的节点摘要信息;
将所述新的叶子节点对应的根集摘要存储在第一目标文件中,以及,将所述更新后的节点树中除所述新的叶子节点以外的各个新生成节点的节点摘要信息存储在第二目标文件中。
第二方面,本公开实施例还提供一种数据写入装置,包括:
获取模块,用于响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;所述目标数组包括当前建立的可验证结构数组中每层的最大节点序号;所述可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与所述节点树一致的层级结构;所述节点树中的节点用于表征已写入数据的摘要信息;
确定模块,用于根据所述目标数据生成新的叶子节点的节点摘要信息,并根据所述目标数组确定所述新的叶子节点的节点序号;
更新模块,用于根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,并利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组;其中,所述节点树更新完成用于表征所述目标数据写入成功。
第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述数据写入装置、计算机设备、及计算机可读存储介质的效果描述参见上述数据写入方法的说明,这里不再赘述。
本公开实施例提供的数据写入方法、装置、计算机设备和存储介质,利用从缓存中获取的目标数组,对根据待写入的目标数据生成的新的叶子节点的节点序号进行确定,以及对节点树进行更新,可以实现整个数据写入过程仅需对缓存进行一次数据读取,有效降低了数据写入的复杂度,提高了数据写入的效率。并且,由于目标数组中仅存储可验证结构数组中每
层的最大节点序号,所以目标数组的体积较小,继而通过存储的目标数组5进行数据写入,有效降低了数据存储的压力。
进一步的,本公开实施例提供的数据写入方法、装置、计算机设备和存储介质,还可以利用存储在缓存中的最大节点序号对应的目标节点的节点摘要信息,进行新的叶子节点的上级父节点的生成,也即实现了仅需对
缓存进行一次数据读取,即可实现上级父节点的生成,有效了避免了频繁0I/O的问题,提高了数据写入的效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
5为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施
例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在0不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种数据写入方法的流程图;
图2示出了本公开实施例所提供的一种节点树的示意图;
图3示出了本公开实施例所提供的一种可验证结构数组的结构示意图;
图4示出了本公开实施例所提供的一种数据写入装置的示意图;
图5示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
另外,本公开实施例中的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
经研究发现,受限于传统的Merkle Tree的生成方式,导致Merkle Tree模型在进行树结构的维护时具有较高的复杂度。例如,在进行数据***时,需要通过多次的随机I/O进行数据读取才可以完成。如此,不可避免地带来了数据写入效率低的问题。
基于上述研究,本公开提供了一种数据写入方案,利用从缓存中获取的目标数组,对根据待写入的目标数据生成的新的叶子节点的节点序号进行确定,以及对节点树进行更新,可以实现整个数据写入过程仅需对缓存进行一次数据读取,有效降低了数据写入的复杂度,提高了数据写入的效率。并且,由于目标数组中仅存储可验证结构数组中每层的最大节点序号,所以目标数组的体积较小,继而通过存储的目标数组进行数据写入,有效降低了数据存储的压力。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据写入方法进行详细介绍,本公开实施例所提供的数据写入方法的执行主体一般为具有一定计算能力的终端设备或其他处理设备,其中终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、个人数字助理设备(Personal Digital Assistant,PDA)、手持设备、计算机设备等;在一些可能的实现方式中,该数据写入方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为计算机设备为例对本公开实施例提供的数据写入方法加以说明。
如图1所示,为本公开实施例提供的一种数据写入方法的流程图,可以包括以下步骤:
S101:响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;目标数组包括当前建立的可验证结构数组中每层的最大节点序号;可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与节点树一致的层级结构;节点树中的节点用于表征已写入数据的摘要信息。
这里,目标数据是需要新写入的数据,具体可以为能够应用于区块链技术中的任一类型的数据,例如,目标数据可以为交易数据、订单数据等等。可选的,目标数组可以存储在缓存cache或内存中。
已构建的节点树根据各条已写入数据构建得到,已写入数据即为已经存储在可信关系数据库中的数据。一条已写入数据用于生成节点树中一个叶子节点的节点摘要信息,节点摘要信息具体可以为对已写入数据进行哈希处理得到的,也即可知,节点树中的各个叶子节点,用于表征该叶子节点对应的已写入数据的摘要信息。节点树中除叶子节点以外的其他节点,可以称为中间节点,不同的中间节点可以根据不同的叶子节点表征的摘要信息生成。例如,由于节点树中位于相邻层级的节点中可以包括具有父子关系的节点,与叶子节点具有父子关系的中间节点,可以根据叶子节点表征的摘要信息生成。
示例性的,已构建的节点树可以如图2所示,其中,节点树中的一个叶子节点对应于一个已写入数据,节点树中的每个叶子节点对应存在一个节点序号,各个叶子节点的节点序号按照叶子节点序号对应的生成规则生成,每个叶子节点用于表征根据该叶子节点对应的已写入数据生成的节点摘要信息。在图2中的示出了节点序号为1~16的叶子节点。节点树中除叶子节点以外的节点可以称为中间节点,叶子节点属于节点树的L0层,叶子节点的父节点属于L1层,叶子节点的父节点的父节点属于L2层,……,依次类推,可以确定属于各个层的节点。示例性的,在图2中示出了5层节点,即L0~L4层。节点树各层的中间节点对应于一个中间节点序号生成规则。示例性的,根据L0层的叶子节点1和2的节点摘要信息,可以生成L1层节点序号为1的中间节点;根据L0层的叶子节点3和4的节点摘要信息,可以生成L1层节点序号为2的中间节点;根据L1层节点序号为1和2的中间节点的节点摘要信息,可以生成L2层节点序号为3的中间节点。关于图2各个中间节点的生成,可以参照图2中节点之间的连线,此处不再赘述。
可验证结构数组(Verifiable Shrubs Array,简称VSA)为根据当前构建的节点树生成的,层级结构与节点树的层级结构一致,在可验证结构数组中仅存储节点树中各层节点的节点序号以及各个节点序号对应的节点之间的连接关系。如图3所示,为本公开实施例提供的一种可验证结构数组的结构示意图。需要说明的是,图3中可验证结构数组对应的节点树的最新叶子节点为叶子节点14,所以图3仅示出了与节点序号14相关的连接关系。突出显示的L3层的节点序号7、L2层的节点序号10号和L0层的节点序号13的原因在于,这三个节点序号对应的节点为叶子节点13的根集摘要(也称根集合root set)中的节点。其中,根集摘要用于表征节点对应的各个根节点,例如,叶子节点3的根集摘要中包括中间节点1和叶子节点3,叶子节点8对应的根集摘要中包括中间节点7,叶子节点16对应的根集摘要中包括中间节点15。
目标数组根据当前建立的可验证结构数组中每层的最大节点序号确定,也即,目标数组中包括当前建立的可验证结构数组中每层的最大节点序号。例如,在当前构建的节点树中的最新叶子节点为叶子节点13的情况下,节点树为4层的树,其中,L3层包括中间节点7,L2层包括中间节点3、6、10,L1层包括中间节点1、2、4、5、8、9,L0层包括叶子节点1~13,相应的,该当前构建的节点树对应的可验证结构数组中的每层也将包括上述节点分别对应的节点序号,进而,筛选出的每层的最大节点序号可以包括L0层的13、L1层的9、L2层的10和L3层的7,也即,目标数组可以为[13,9,10,7]。目标数组中的各个节点序号可以层级从低到高的顺序排列。也即,在目标数组中,排序顺序位为首位的节点序号为L0层中的最大节点序号、排序顺序位为第二位的节点序号为L1层中的最大节点序号、……、依次类推,直至排序顺序位为第M位的节点序号为LN层的最大节点序号,其中,M=N-1,M层为当前的可验证结构数组的最高层。
示例性的,可以响应于针对目标数据的写入操作,从cache中获取当前存储的目标数组。其中,当前存储的目标数组为根据最新生成的节点树对应的可验证结构数组确定的,其中包括当前建立的可验证结构数组中每层的最大节点序号。例如,在可验证结构数组L0层的最大节点序号为8时,目标数组可以为[8,5,6,7];在可验证结构数组L0层的最大节点序号为14时,目标数组可以为[14,11,10,7];在可验证结构数组L0层的最大节点序号为23时,目标数组可以为[23,19,18,15]。
S102:根据目标数据生成新的叶子节点的节点摘要信息,并根据目标数组确定新的叶子节点的节点序号。
在获取目标数据之后,可以执行数据写入操作。具体的,可以为已构建的节点树生成新的叶子节点,并对目标数据执行哈希操作,得到新的叶子节点的节点摘要信息。同时,可以根据目标数组中与L0层相匹配的节点序号(即排序顺序位为首位的节点序号),确定新的叶子节点的节点序号。示例性的,可以将对目标数组中与L0层相匹配的节点序号加1后得到的序号,作为新的叶子节点的节点序号。例如,在目标数组中与L0层相匹配的序号为13的情况下,新的叶子节点的节点序号即为14。
可选的,根据目标数据生成新的叶子节点的节点摘要信息,以及根据目标数组确定新的叶子节点的节点序号的步骤之间,不存在特定的执行顺序。在具体实施时,可以先执行确定节点摘要信息的步骤,也可以先执行确定节点序号的步骤,当然也可以同步执行两个步骤。
S103:根据新的叶子节点的节点摘要信息,对节点树进行更新,得到更新后的节点树,并利用新的叶子节点的节点序号,对目标数组进行更新,得到更新后的目标数组;其中,节点树更新完成用于表征目标数据写入成功。
示例性的,在得到新的叶子节点的节点摘要信息之后,可以利用新的叶子节点的节点摘要信息,对当前构建的节点树进行更新,已得到更新的节点树。在利用新的叶子节点的节点摘要信息对节点树进行更新时,具体可以根据新的叶子节点的节点序号,确定是否需要使用其他叶子节点的节点摘要信息。若是,则需要从缓存中获取其他的节点摘要信息,利用新的叶子节点的节点摘要信息以及其他的节点摘要信息,对节点树进行更新;若否,则可以仅利用新的叶子节点的节点摘要信息完成更新。在得到更新的节点树之后,还可以根据节点树中的各个节点的节点序号,对可验证结构数组进行更新,以得到更新后的可验证结构数组。
同时,可以利用新的叶子节点的节点序号,对获取的目标数组进行更新,得到更新后的目标数组并存储。这里,在仅利用新的叶子节点的节点摘要信息即可完成对节点树的更新的情况下,可以仅利用新的叶子节点的节点序号完成对目标数组的更新,在其他情况下,则说明节点树中还生成了其他的节点,则需要利用新的叶子节点的节点序号和其他节点的节点序号,对目标数组进行更新,以得到更新后的目标数组。
可选的,除可以利用新的叶子节点的节点序号对目标数组进行更新外,若得到了更新后的可验证结构数组,还可以利用更新后的可验证结构数组对目标数组进行更新。
这样,利用从缓存中获取的目标数组,对根据待写入的目标数据生成的新的叶子节点的节点序号进行确定,以及对节点树进行更新,可以实现整个数据写入过程仅需对缓存进行一次数据读取,有效降低了数据写入的复杂度,提高了数据写入的效率。并且,由于目标数组中仅存储可验证结构数组中每层的最大节点序号,所以目标数组的体积较小,继而通过存储的目标数组进行数据写入,有效降低了数据存储的压力。
在一种实施例中,可以根据新的叶子节点的节点序号的奇偶性,确定对节点树进行更新的步骤。具体的,在节点序号为偶数的情况下,根据新的叶子节点的节点摘要信息和目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对节点树进行更新,得到更新后的节点树;目标节点的节点摘要信息存储在缓存中。
这里,目标节点即为目标数组中的最大节点序号对应的节点,目标数组中的各个最大节点序号分别对应的目标节点的节点摘要信息,可以预先存储在缓存中,各个目标节点的节点摘要信息可以在从缓存中获取目标数组时同步获取。
在新的叶子节点的节点序号为偶数的情况下,说明在生成新的叶子节点之后,至少可以根据新的叶子节点和前一叶子节点,生成新的父节点。其中,前一叶子节点的节点序号为新的叶子节点的节点序号减1。由于目标数组中存储有各层最大节点序号,针对叶子节点所在的L0层,在***新的叶子节点之前,L0层最大节点序号一定在目标数组中。因此,可以利用新的叶子节点的节点摘要信息和目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对节点树进行更新,以得到更新后的节点树。
具体实施时,根据新的叶子节点的节点摘要信息和目标节点的节点摘要信息对节点树进行更新的步骤,可以按照以下步骤实施:
步骤一、根据新的叶子节点的节点摘要信息和目标数组中排序顺序位为首位的最大节点序号对应的目标节点的节点摘要信息,生成新的叶子节点的目标父节点以及目标父节点的节点摘要信息。
这里,目标数组中的各个最大节点序号的排序顺序位是根据各个最大节点序号在节点树中所属的层级,按照从低到高的顺序确定的。示例性的,L0层低于L1层低于L2层低于L3层……,也即,目标数组中排序顺序位为首位的最大节点序号为L0层对应的最大节点序号,排序顺序位为第二位的最大节点序号为L1层对应的最大节点序号,排序顺序位为第三位的最大节点序号为L2层对应的最大节点序号。其中,排序顺序位为首位的最大节点序号对应的目标节点为节点树中的一个叶子节点。
具体实施时,可以将新的叶子节点的节点摘要信息和排序顺序位为首位的最大节点序号对应的目标节点的节点摘要信息相加,再对相加后的摘要信息进行哈希处理,得到目标父节点以及目标父节点的摘要信息。同时,可以确定目标父节点的节点序号。例如,可以预先存储节点树中每层节点分别对应的序号,在生成目标父节点之后,可以根据目标父节点所属目标层级,以及目标数组中与目标层级相匹配的最大节点序号,确定目标父节点的序号;也可以根据目标数组中的各个最大节点序号,确定目标父节点的节点序号。
示例性的,在目标数组为[13,9,10,7],新的叶子节点的节点序号为14的情况下,则可以根据叶子节点14的节点摘要信息和最大节点序号13对应的叶子节点13的节点摘要信息,生成节点序号为11的目标父节点以及该目标父节点的节点摘要信息。
步骤二、确定目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点。
这里,在步骤一使用的最大节点序号的排序顺序位为首位时,下一个最大节点序号即为排序顺序位为第二位的最大节点序号;在在步骤一使用的最大节点序号的排序顺序位为N位时,下一个最大节点序号即为排序顺序位为第N+1位的最大节点序号。
示例性的,可以根据下一个最大节点序号对应的目标节点1与下一个最大节点序号的下一个最大节点序号对应的目标节点2之间是否存在父子关系,确定目标节点1是否存在已生成父节点。如,在生成节点序号为11的目标父节点之后,可以确定目标数组中最大节点序号9对应的目标节点和最大节点序号10对应的目标节点之间是否存在父子关系,进而可以确定最大节点序号9对应的目标节点是否存在已生成父节点。
步骤三、若否,则根据目标父节点的节点摘要信息和下一个最大节点序号对应的目标节点的节点摘要信息,生成新的目标父节点以及新的目标父节点的节点摘要信息。
这里,在下一个最大节点序号对应的目标节点不存在已生成父节点的情况下,则可以说明目标父节点可以和该下一个最大节点序号对应的目标节点结合生成新的父节点,因此,可以利用目标父节点的节点摘要信息和该下一个最大节点序号对应的目标节点的节点摘要信息,生成新的目标父节点以及新的目标父节点的节点摘要信息。
步骤四、返回确定目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点的步骤,直至目标数组遍历完成或存在已生成父节点。
步骤五、根据已生成的各个目标父节点的节点摘要信息,对节点树进行更新,得到更新后的节点树。
示例性的,在目标数组为[15,11,10,7],新的叶子节点的节点序号为16的情况下,可以根据新的叶子节点的节点摘要信息和序号15对应的目标节点的节点摘要信息,生成节点序号为12的目标父节点。然后,目标数组中的下一个最大节点序号11不存在已生成父节点,则可以根据节点序号为12的目标父节点的节点摘要信息和下一个最大节点序号11对应的目标节点的节点摘要信息,生成节点序号为13的新的目标父节点。进一步的,由于目标数组中的下一个最大节点序号10不存在已生成父节点,则可以根据最大节点序号10对应的目标节点的节点摘要信息和节点序号为13的新的目标父节点的节点摘要信息,生成节点序号为14的新的目标父节点。再进一步的,由于目标数组中的下一个最大节点序号7不存在已生成父节点,则可以根据最大节点序号7对应的目标节点的节点摘要信息和节点序号为14的新的目标父节点的节点摘要信息,生成节点序号为15的新的目标父节点。此时,由于目标数组遍历完成,则可以利用新的叶子节点16、节点序号为12的目标父节点、节点序号为13的目标父节点、节点序号为14的目标父节点以及节点序号为15的目标父节点及其各个节点的节点摘要信息,对节点树进行更新,得到更新后的节点树。此时,目标数组也将被更新为[16,12,13,14,15]。
另外,在目标数组中的下一个最大节点序号对应的目标节点存在已生成父节点的情况下,可以直接根据新的叶子节点的目标父节点的节点摘要信息,对节点树进行更新,得到更新后的节点树。
这里,在下一个最大节点序号对应的目标节点存在已生成父节点的情况下,则可以说明目标父节点无法与该下一个最大节点序号对应的目标节点结合生成新的目标父节点,也即无法继续对节点树进行更新。因此,可以将新的叶子节点及其节点摘要信息、目标父节点及其节点摘要信息,添加在节点树中,完成对节点树的更新。
示例性的,在目标数组为[13,9,10,7],新的叶子节点的节点序号为14的情况下,在生成节点序号为11的目标父节点之后,可以确定下一个最大节点序号(即节点序号9)对应的目标节点是否存在已生成父节点。这里,由于目标数组中的最大节点序号10对应的目标节点即为最大节点序号9对应的目标节点的已生成父节点,所以可以确定节点序号为11的目标父节点无法与最大节点序号9对应的目标节点结合,因此,可以将新的叶子节点14及其节点摘要信息、节点序号为11的目标父节点及其节点摘要信息添加在节点树中,实现对节点树的更新,此时目标数组也将被更新为[14,11,10,7]。
在一种实施例中,针对利用新的叶子节点的节点序号对目标数组进行更新的步骤,可以按照以下子步骤实施:
子步骤一、根据更新后的节点树对应的各个新生成节点的节点序号,对可验证结构数组进行更新,得到更新后的可验证结构数组;新生成节点至少包括新的叶子节点和新的叶子节点的父节点。
示例性的,在得到了更新后的节点树之后,可以根据更新后的节点树对应的各个新生成节点的节点序号,以及各个新生成节点之间的节点连接关系,对可验证结构数组进行更新,得到更新后的可验证结构数组。
其中,在新的叶子节点的节点序号为偶数的情况下,新生成节点至少可以包括新的叶子节点和新的叶子节点的父节点。在新的叶子节点的节点序号为奇数的情况下,新生成节点可以包括新的叶子节点。
示例性的,在目标数组为[15,11,10,7],新的叶子节点的节点序号为16的情况下,更新后的节点树对应的各个新生成节点包括叶子节点16、节点序号为12的中间节点、节点序号为13的中间节点、节点序号为14的中间节点、节点序号为15的中间节点,继而,可以将节点序号16添加在
可验证结构数组的L0层,将节点序号12添加在可验证结构数组的L1层,5将节点序号13添加在可验证结构数组的L2层,将节点序号14添加在可验
证结构数组的L3层,将节点序号15添加在可验证结构数组的L4层,并在可验证结构数组中建立各个节点序号之间的连接关系。例如,建立L0层的节点序号15和节点序号16与L1层的节点序号12之间的连接关系,建立L1层的节点序号11和12与L2层的节点序号13之间的连接关系,建立L20层的节点序号10和13与L3层的节点序号14之间的连接关系,建立L3层的节点序号7和14与L4层的节点序号15之间的连接关系。基于此,可以实现对待验证数组的更新。
子步骤二、根据更新后的可验证结构数组的每层的最大节点序号,对目标数组进行更新,得到更新后的目标数组。
5示例性的,在目标数组为[15,11,10,7],新的叶子节点的节点序号
为16的情况下,更新后的可验证结构数组的每一层中的最大节点序号即为L0层的16、L1层的12、L2层的13、L3层的14和L4层的15,进而,可以将目标数组由[15,11,10,7]更新为[16,12,13,14,15]。
可选的,在得到更新后的节点树之后,也可以直接根据更新后的节点0树对应的各个新生成节点的节点序号,以及各个新生成节点所属的目标层
级,对目标数组进行更新,以得到更新后的目标数组。
进一步的,在得到更新后的目标数组之后,还可以利用更新后的目标数组,对缓存中存储的目标数组进行更新。
示例性的,可以删除缓存中原本存储的目标数组,并将更新后的目标5数组存储在缓存中,同时,还可以将更新后的目标数组中的各个最大节点
序号分别对应的目标节点的节点摘要信息存储在缓存中,从而实现对缓存中存储的信息的更新。
这样,由于目标数组对应的数据量很小,通常可以控制在几KB内,所以使用缓存存储目标数组,并利用存储的目标缓存进行数据写入的方式,既可以有效减低存储压力,又可以提高数据写入的效率。
在一种实施例中,在叶子节点的节点序号为奇数的情况下,可以直接将新的叶子节点及其表征的节点摘要信息添加在节点树中,从而实现对节点树的更新,得到更新后的节点树。
示例性的,在新的叶子节点的节点序号为15的情况下,可以直接将新的叶子节点添加在当前构建的节点树的L0层,具体的,可以添加在已构建的节点树的L0层的叶子节点14之后,从而实现对节点树的更新。
进一步的,在叶子节点的节点序号为奇数的情况下,针对更新目标数组的步骤,可以先将新的叶子节点的节点序号,添加在可验证结构数组与叶子节点所匹配的层级中,得到更新后的可验证结构数组。这里,叶子节点所匹配的层级即为可验证结构数组中的最低层级。示例性的,可以将新的叶子节点的节点序号15,添加在可验证结构数组的L0层的节点序号14之后,从而得到更新后的可验证结构数组。
然后,可以将目标数组中排序顺序位为首位的最大节点序号替换为新的叶子节点的节点序号,得到更新后的目标数组;其中,目标数组中的各个最大节点序号的排序顺序位,为根据各个最大节点序号在节点树中所属的层级,按照从低到高的顺序确定的。示例性的,L0层低于L1层低于L2层低于L3层……
示例性的,在目标数组为[14,11,10,7],新的叶子节点的节点序号为15的情况下,可以直接利用节点序号15替换排序顺序位为首位的最大节点序号14,得到更新后的目标数组为[15,11,10,7]。
在得到更新后的目标数组之后,可以利用更新后的目标数组,对缓存中存储的目标数组进行更新,并利用更新后的目标数组中的各个最大节点序号对应的目标节点的节点摘要信息,对缓存中存储的节点摘要信息进行更新。
在一种实施方式中,为减少更新目标数组时的资源消耗,还可以在新的叶子节点的节点序号为偶数时,可以根据更新后的节点树对应的各个新生成节点中、除新的叶子节点以外的各个节点的节点序号,对目标数组进行更新,得到更新后的目标数组。在新的叶子节点的节点序号为奇数时,直接将目标数组中排序顺序位为首位的最大节点序号替换为新的叶子节点的节点序号,以得到更新后的目标数组。
示例性的,在目标数组为[13,9,10,7]的情况下,若生成了节点序号为14的叶子节点,则可以将目标数组更新为[13,11,10,7]。之后,在生成了节点序号为15的叶子节点时,可以将目标数组由[13,11,10,7]更新为[15,11,10,7]。进一步的,在生成了节点序号为16的叶子节点时,可以将目标数组由[15,11,10,7]更新为[15,12,13,14,15]。如此,基于新的叶子节点的节点序号,判断是否需要对排序顺序位为首位的最大节点序号进行更新,可以有效减少在节点序号为偶数时更新目标数组的写入次数,减少了更新目标数组时的资源消耗。
在一种实施例中,在得到更新后的节点树之后,还可以根据更新后的节点树,确定新的叶子节点对应的根集摘要;根集摘要中包括新的叶子节点对应的各个根集节点以及根集节点的节点摘要信息。
这里,根集摘要即为叶子节点的root set。示例性的,针对图2中的叶子节点1而言,对应的根集摘要中包括叶子节点1和叶子节点1的节点摘要信息。针对图2中的叶子节点4而言,对应的根集摘要中包括L2层的节点序号为3的节点和该节点的节点摘要信息。针对图2中的叶子节点13而言,对应的根集摘要中包括叶子节点13、L2层的节点序号为10的节点、L3层的节点序号为7的节点,以及这三个节点的节点摘要信息。针对图2中的叶子节点16而言,对应的根集摘要中包括L4层的节点序号为15的节点以及该节点的节点摘要信息。
在确定新的叶子节点对应的根集摘要之后,可以将新的叶子节点对应的根集摘要存储在第一目标文件中,以及,将更新后的节点树中除新的叶子节点以外的各个新生成节点的节点摘要信息存储在第二目标文件中。
这里,更新后的节点树中除新的叶子节点以外的各个新生成节点可以为更新后的节点树中各个最新添加的中间节点,也即更新后的节点树中除L0层以外的各层中最新添加的节点。示例性的,在新的叶子节点为叶子节点16的情况下,更新后的节点树中除L0层以外的各层中最新添加的节点包括中间节点12、中间节点13、中间节点14和中间节点15。第一目标文件和第二目标文件不同,存储的位置也不同。通过将新的叶子节点对应的根集摘要和除新的叶子节点以外的各个新生成节点的节点摘要信息存储在不同的文件中,以便于根据所需的节点摘要信息对应的节点类型,快速从不同文件中找到所需的信息。其中,节点类型包括叶子节点类型和中间节点类型。
如若需要寻找叶子节点的节点摘要信息,则可以从第一目标文件中寻找;若需要寻找中间节点的节点摘要信息,则可以从第二目标文件中寻找。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与数据写入方法对应的数据写入装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据写入方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,为本公开实施例提供的一种数据写入装置的示意图,包括:
获取模块401,用于响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;所述目标数组包括当前建立的可验证结构数组中每层的最大节点序号;所述可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与所述节点树一致的层级结构;所述节点树中的节点用于表征已写入数据的摘要信息;
确定模块402,用于根据所述目标数据生成新的叶子节点的节点摘要信息,并根据所述目标数组确定所述新的叶子节点的节点序号;
更新模块403,用于根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,并利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组;其中,所述节点树更新完成用于表征所述目标数据写入成功。
在一种可能的实施方式中,所述更新模块403,在所述根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树时,用于:
在所述节点序号为偶数的情况下,根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树;所述目标节点的节点摘要信息存储在所述缓存中。
在一种可能的实施方式中,所述更新模块403,在所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组时,用于:
根据所述更新后的节点树对应的各个新生成节点的节点序号和节点连接关系,对所述可验证结构数组进行更新,得到更新后的可验证结构数组;所述新生成节点至少包括所述新的叶子节点和所述新的叶子节点的父节点;
根据所述更新后的可验证结构数组的每层的最大节点序号,对所述目标数组进行更新,得到更新后的目标数组;
以及,所述更新模块403,在得到所述更新后的目标数组之后,还用于:
利用所述更新后的目标数组,对所述缓存中存储的目标数组进行更新。
在一种可能的实施方式中,在所述节点序号为奇数的情况下,所述更新模块403,在所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组时,用于:
将所述新的叶子节点的所述节点序号,添加在所述可验证结构数组与叶子节点所匹配的层级中,得到更新后的所述可验证结构数组;
将所述目标数组中排序顺序位为首位的最大节点序号替换为所述新的叶子节点的节点序号,得到更新后的目标数组;其中,所述目标数组中的各个最大节点序号的排序顺序位,为根据各个最大节点序号在所述节点树中所属的层级,按照从低到高的顺序确定的。
在一种可能的实施方式中,所述更新模块403,在所述根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树时,用于:
根据所述新的叶子节点的节点摘要信息和所述目标数组中排序顺序位为首位的最大节点序号对应的目标节点的节点摘要信息,生成所述新的叶子节点的目标父节点以及所述目标父节点的节点摘要信息;
确定所述目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点;
若否,则根据所述目标父节点的节点摘要信息和所述下一个最大节点序号对应的目标节点的节点摘要信息,生成新的目标父节点以及所述新的目标父节点的节点摘要信息;
返回所述确定所述目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点的步骤,直至所述目标数组遍历完成或存在已生成父节点;
根据已生成的各个所述目标父节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树。
在一种可能的实施方式中,所述更新模块403,还用于:
在所述目标数组中的下一个最大节点序号对应的目标节点存在已生成父节点的情况下,根据所述新的叶子节点的目标父节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树。
在一种可能的实施方式中,所述装置还包括存储模块404:
所述存储模块404,在得到更新后的节点树之后,用于:
根据所述更新后的节点树,确定所述新的叶子节点对应的根集摘要;所述根集摘要中包括所述新的叶子节点对应的各个根集节点以及所述根集节点的节点摘要信息;
将所述新的叶子节点对应的根集摘要存储在第一目标文件中,以及,将所述更新后的节点树中除所述新的叶子节点以外的各个新生成节点的节点摘要信息存储在第二目标文件中。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本申请实施例还提供了一种计算机设备。参照图5所示,为本申请实施例提供的一种计算机设备的结构示意图,包括:
处理器51、存储器52和总线53。其中,存储器52存储有处理器51可执行的机器可读指令,处理器51用于执行存储器52中存储的机器可读指令,所述机器可读指令被处理器51执行时,处理器51执行下述步骤:S101:响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;目标数组包括当前建立的可验证结构数组中每层的最大节点序号;可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与节点树一致的层级结构;节点树中的节点用于表征已写入数据的摘要信息;S102:根据目标数据生成新的叶子节点的节点摘要信息,并根据目标数组确定新的叶子节点的节点序号以及S103:根据新的叶子节点的节点摘要信息,对节点树进行更新,得到更新后的节点树,并利用新的叶子节点的节点序号,对目标数组进行更新,得到更新后的目标数组;其中,节点树更新完成用于表征目标数据写入成功。
上述存储器52包括内存521和外部存储器522;这里的内存521也称内存储器,用于暂时存放处理器51中的运算数据,以及与硬盘等外部存储器522交换的数据,处理器51通过内存521与外部存储器522进行数据交换,当计算机设备运行时,处理器51与存储器52之间通过总线53通信,使得处理器51在执行上述方法实施例中所提及的执行指令。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据写入方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的数据写入方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据写入方法的步骤,具体可参见上述方法实施例,在此不再赘述。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式、处理的个人信息种类等信息。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数据写入方法,其特征在于,包括:
响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;所述目标数组包括当前建立的可验证结构数组中每层的最大节点序号;所述可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与所述节点树一致的层级结构;所述节点树中的节点用于表征已写入数据的摘要信息;
根据所述目标数据生成新的叶子节点的节点摘要信息,并根据所述目标数组确定所述新的叶子节点的节点序号;
根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,并利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组;其中,所述节点树更新完成用于表征所述目标数据写入成功。
2.根据权利要求1所述的方法,其特征在于,所述根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,包括:
在所述节点序号为偶数的情况下,根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树;所述目标节点的节点摘要信息存储在所述缓存中。
3.根据权利要求2所述的方法,其特征在于,所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组,包括:
根据所述更新后的节点树对应的各个新生成节点的节点序号和节点连接关系,对所述可验证结构数组进行更新,得到更新后的可验证结构数组;所述新生成节点至少包括所述新的叶子节点和所述新的叶子节点的父节点;
根据所述更新后的可验证结构数组的每层的最大节点序号,对所述目标数组进行更新,得到更新后的目标数组;
在得到所述更新后的目标数组之后,还包括:
利用所述更新后的目标数组,对所述缓存中存储的目标数组进行更新。
4.根据权利要求1所述的方法,其特征在于,在所述节点序号为奇数的情况下,所述利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组,包括:
将所述新的叶子节点的所述节点序号,添加在所述可验证结构数组与叶子节点所匹配的层级中,得到更新后的所述可验证结构数组;
将所述目标数组中排序顺序位为首位的最大节点序号替换为所述新的叶子节点的节点序号,得到更新后的目标数组;其中,所述目标数组中的各个最大节点序号的排序顺序位,为根据各个最大节点序号在所述节点树中所属的层级,按照从低到高的顺序确定的。
5.根据权利要求2所述的方法,其特征在于,所述根据所述新的叶子节点的节点摘要信息和所述目标数组中的至少一个最大节点序号对应的目标节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,包括:
根据所述新的叶子节点的节点摘要信息和所述目标数组中排序顺序位为首位的最大节点序号对应的目标节点的节点摘要信息,生成所述新的叶子节点的目标父节点以及所述目标父节点的节点摘要信息;
确定所述目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点;
若否,则根据所述目标父节点的节点摘要信息和所述下一个最大节点序号对应的目标节点的节点摘要信息,生成新的目标父节点以及所述新的目标父节点的节点摘要信息;
返回所述确定所述目标数组中的下一个最大节点序号对应的目标节点是否存在已生成父节点的步骤,直至所述目标数组遍历完成或存在已生成父节点;
根据已生成的各个所述目标父节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述目标数组中的下一个最大节点序号对应的目标节点存在已生成父节点的情况下,根据所述新的叶子节点的目标父节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树。
7.根据权利要求1所述的方法,其特征在于,在得到更新后的节点树之后,还包括:
根据所述更新后的节点树,确定所述新的叶子节点对应的根集摘要;所述根集摘要中包括所述新的叶子节点对应的各个根集节点以及所述根集节点的节点摘要信息;
将所述新的叶子节点对应的根集摘要存储在第一目标文件中,以及,将所述更新后的节点树中除所述新的叶子节点以外的各个新生成节点的节点摘要信息存储在第二目标文件中。
8.一种数据写入装置,其特征在于,包括:
获取模块,用于响应于针对目标数据的写入操作,从缓存中获取当前存储的目标数组;所述目标数组包括当前建立的可验证结构数组中每层的最大节点序号;所述可验证结构数组根据当前构建的节点树中各个节点的节点序号和节点连接关系确定,且具有与所述节点树一致的层级结构;所述节点树中的节点用于表征已写入数据的摘要信息;
确定模块,用于根据所述目标数据生成新的叶子节点的节点摘要信息,并根据所述目标数组确定所述新的叶子节点的节点序号;
更新模块,用于根据所述新的叶子节点的节点摘要信息,对所述节点树进行更新,得到更新后的节点树,并利用所述新的叶子节点的节点序号,对所述目标数组进行更新,得到更新后的目标数组;其中,所述节点树更新完成用于表征所述目标数据写入成功。
9.一种计算机设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至7任意一项所述的数据写入方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机设备运行时,所述计算机设备执行如权利要求1至7任意一项所述的数据写入方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211537563.5A CN116204581A (zh) | 2022-12-02 | 2022-12-02 | 一种数据写入方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211537563.5A CN116204581A (zh) | 2022-12-02 | 2022-12-02 | 一种数据写入方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116204581A true CN116204581A (zh) | 2023-06-02 |
Family
ID=86511912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211537563.5A Pending CN116204581A (zh) | 2022-12-02 | 2022-12-02 | 一种数据写入方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116204581A (zh) |
-
2022
- 2022-12-02 CN CN202211537563.5A patent/CN116204581A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108769111A (zh) | 一种服务器连接方法、计算机可读存储介质及终端设备 | |
CN111143368A (zh) | 一种关系型数据库数据对比方法及*** | |
CN114936188A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112434027A (zh) | 多维度数据的索引方法、装置、计算机设备和存储介质 | |
CN116521956A (zh) | 一种图数据库查询方法、装置、电子设备及存储介质 | |
CN110059088B (zh) | 一种块链式账本中的数据属性标识方法、装置及设备 | |
US11150993B2 (en) | Method, apparatus and computer program product for improving inline pattern detection | |
CN112269839B (zh) | 区块链中的数据存储方法、装置、电子设备及存储介质 | |
CN109165712A (zh) | 分布式分期号的生成方法、装置和计算机存储介质 | |
CN110059087B (zh) | 一种块链式账本中的数据属性标识方法、装置及设备 | |
CN116204581A (zh) | 一种数据写入方法、装置、计算机设备和存储介质 | |
CN112416966A (zh) | 即席查询方法、装置、计算机设备和存储介质 | |
CN108614838B (zh) | 一种用户群索引处理方法、装置及*** | |
US8849866B2 (en) | Method and computer program product for creating ordered data structure | |
CN117112574B (zh) | 树形业务数据构建方法、装置、计算机设备及存储介质 | |
CN116700628B (zh) | 区块链数据处理方法、装置、计算机设备和存储介质 | |
CN108073712A (zh) | 信息***中的主数据删除方法、装置和计算机设备 | |
CN113411395B (zh) | 访问请求路由方法、装置、计算机设备和存储介质 | |
CN109947775B (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
US11138275B1 (en) | Systems and methods for filter conversion | |
CN114237977A (zh) | 交易回滚方法、装置、计算机设备和存储介质 | |
CN116204541A (zh) | 多维数据库更新方法、装置、计算机设备和存储介质 | |
CN109766367B (zh) | 热点事件确定方法及装置、计算机设备及存储介质 | |
CN114139028A (zh) | 一种api组合推荐方法、装置、计算机设备以及可存储介质 | |
CN118245640A (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 |