CN115793992B - 数据存储方法、装置、电子设备及可读存储介质 - Google Patents
数据存储方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN115793992B CN115793992B CN202310075940.6A CN202310075940A CN115793992B CN 115793992 B CN115793992 B CN 115793992B CN 202310075940 A CN202310075940 A CN 202310075940A CN 115793992 B CN115793992 B CN 115793992B
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- target
- tree
- 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.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 541
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000013500 data storage Methods 0.000 title claims abstract description 66
- 238000012512 characterization method Methods 0.000 claims abstract description 35
- 238000003780 insertion Methods 0.000 claims description 98
- 230000037431 insertion Effects 0.000 claims description 98
- 238000004590 computer program Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 12
- 238000002474 experimental method Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 240000002044 Rhizophora apiculata Species 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据存储方法、装置、电子设备及可读存储介质,属于计算机技术领域,该数据存储方法包括:确定待存储数据在区块链上对应的目标区块;对于任一目标区块,根据目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的成本表征参数;根据各多叉树存储结构的成本表征参数,从多个多叉树存储结构中选择成本表征参数符合预设要求的多叉树存储结构,作为目标区块对应的目标存储结构;将目标子数据按照目标存储结构存储至目标区块中。避免数据存储结构单一、存储效果较差的问题,可以提高区块链的数据存储结构的多样性。
Description
技术领域
本申请属于计算机技术领域,特别是涉及一种数据存储方法、装置、电子设备及可读存储介质。
背景技术
区块链是一种按照时间顺序,将数据区块以顺序相连的方式组合成的链式数据结构,且以密码学方式保证链上存储的数据不可篡改和不可伪造,成为一种可靠的数据存储方式。
现有技术中通过区块链存储数据时,对于待存储数据中的所有子数据均直接采用相同的数据存储结构存储到区块中,存在数据存储结构单一,存储效果较差的问题。
发明内容
本申请提供一种数据存储方法、装置、电子设备及可读存储介质,以便解决现有的区块链存在数据存储结构单一、存储效果较差的问题。
为了解决上述技术问题,本申请是这样实现的:
第一方面,本申请提供一种数据存储方法,所述方法包括:
确定待存储数据在区块链上对应的目标区块;
对于任一目标区块,根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的成本表征参数;所述多个多叉树存储结构包括不同种类的多叉树存储结构,所述目标子数据是所述待存储数据中与所述目标区块对应的数据,所述成本表征参数表征所述多叉树存储结构的存储成本和查询成本;
根据所述各多叉树存储结构的成本表征参数,从所述多个多叉树存储结构中选择成本表征参数符合预设要求的多叉树存储结构,作为所述目标区块对应的目标存储结构;
将所述目标子数据按照所述目标存储结构存储至所述目标区块中。
可选的,所述确定待存储数据在区块链上对应的目标区块,包括:
根据预设分组条件对所述待存储数据进行分组,以获得待存储数据组;
根据第一组数和所述区块链中区块对应的最大存储组数,确定所述待存储数据在所述区块链上对应的目标区块;所述第一组数是所述待存储数据组的数量。
可选的,所述根据第一组数和所述区块链中区块对应的最大存储组数,确定所述待存储数据在所述区块链上对应的目标区块,包括:
在所述第一组数大于所述最大存储组数的情况下,根据所述第一组数和所述最大存储组数,确定目标数量;所述目标数量与所述最大存储组数的乘积不小于所述第一组数;在所述区块链上生成与所述目标数量一致的区块作为目标区块;
在所述第一组数不大于所述最大存储组数的情况下,在所述区块链上生成一个区块作为目标区块。
可选的,所述根据所述第一组数和所述最大存储组数,确定目标数量,包括:
将所述第一组数和所述最大存储组数进行除法运算,得到运算结果,并对所述运算结果进行向上取整操作,得到所述目标数量;
在所述运算结果包括余数的情况下,所述在所述区块链上生成与所述目标数量一致的区块作为目标区块,包括:
在所述区块链上生成x个区块,作为第一目标区块;所述x是所述运算结果中的整数部分;
在最后一个所述第一目标区块的后面生成一个区块,作为第二目标区块。
可选的,所述根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的成本表征参数,包括:
根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;所述存储空间参数和所述插入时间参数表征所述多叉树存储结构的存储成本,所述查询时间参数表征所述多叉树存储结构的查询成本;
根据所述各多叉树存储结构的存储空间参数、插入时间参数、查询时间参数和预设权重,确定所述各多叉树存储结构的成本表征参数。
可选的,所述根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,包括:
根据所述目标区块的目标子数据,确定所述目标子数据对应的数据组数,作为第二组数;
根据所述第二组数,确定所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
可选的,所述根据所述第二组数,确定所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,包括:
在所述第二组数等于所述区块链中区块对应的最大存储组数的情况下,将预设的所述最大存储组数对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;
在所述第二组数不大于所述最大存储组数的情况下,从预设参数表中查询与所述第二组数相匹配的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
第二方面,本申请提供一种数据存储装置,所述装置包括:
第一确定模块,用于确定待存储数据在区块链上对应的目标区块;
第二确定模块,用于对于任一目标区块,根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的成本表征参数;所述多个多叉树存储结构包括不同种类的多叉树存储结构,所述目标子数据是所述待存储数据中与所述目标区块对应的数据,所述成本表征参数表征所述多叉树存储结构的存储成本和查询成本;
选择模块,用于根据所述各多叉树存储结构的成本表征参数,从所述多个多叉树存储结构中选择成本表征参数符合预设要求的多叉树存储结构,作为所述目标区块对应的目标存储结构;
存储模块,用于将所述目标子数据按照所述目标存储结构存储至所述目标区块中。
可选的,所述第一确定模块具体用于:
根据预设分组条件对所述待存储数据进行分组,以获得待存储数据组;
根据第一组数和所述区块链中区块对应的最大存储组数,确定所述待存储数据在所述区块链上对应的目标区块;所述第一组数是所述待存储数据组的数量。
可选的,所述第一确定模块具体还用于:
在所述第一组数大于所述最大存储组数的情况下,根据所述第一组数和所述最大存储组数,确定目标数量;所述目标数量与所述最大存储组数的乘积不小于所述第一组数;在所述区块链上生成与所述目标数量一致的区块作为目标区块;
在所述第一组数不大于所述最大存储组数的情况下,在所述区块链上生成一个区块作为目标区块。
可选的,所述第一确定模块具体还用于:
将所述第一组数和所述最大存储组数进行除法运算,得到运算结果,并对所述运算结果进行向上取整操作,得到所述目标数量;
在所述运算结果包括余数的情况下,在所述区块链上生成x个区块,作为第一目标区块;所述x是所述运算结果中的整数部分;在最后一个所述第一目标区块的后面生成一个区块,作为第二目标区块。
可选的,所述第二确定模块具体用于:
根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;所述存储空间参数和所述插入时间参数表征所述多叉树存储结构的存储成本,所述查询时间参数表征所述多叉树存储结构的查询成本;
根据所述各多叉树存储结构的存储空间参数、插入时间参数、查询时间参数和预设权重,确定所述各多叉树存储结构的成本表征参数。
可选的,所述第二确定模块具体还用于:
根据所述目标区块的目标子数据,确定所述目标子数据对应的数据组数,作为第二组数;
根据所述第二组数,确定所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
可选的,所述第二确定模块具体还用于:
在所述第二组数等于所述区块链中区块对应的最大存储组数的情况下,将预设的所述最大存储组数对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;
在所述第二组数不大于所述最大存储组数的情况下,从预设参数表中查询与所述第二组数相匹配的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
第三方面,本申请提供一种电子设备,包括:处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据存储方法。
第四方面,本申请提供一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述数据存储方法。
在本申请实施例中,通过确定待存储数据在区块链上对应的目标区块;对于任一目标区块,根据目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的成本表征参数;多个多叉树存储结构包括不同种类的多叉树存储结构,目标子数据是待存储数据中与目标区块对应的数据,成本表征参数表征多叉树存储结构的存储成本和查询成本;根据各多叉树存储结构的成本表征参数,从多个多叉树存储结构中选择成本表征参数符合预设要求的多叉树存储结构,作为目标区块对应的目标存储结构;将目标子数据按照目标存储结构存储至目标区块中。这样,对于任一目标区块,根据该目标区块的目标子数据适应性地从多个多叉树存储结构中为该目标区块选择目标区块对应的数据存储结构,从而一定程度上可以提高区块链的数据存储结构的多样性,避免数据存储结构单一的问题。且由于各多叉树存储结构的成本表征参数是根据目标区块的目标子数据确定的,因此,根据成本表征参数,可以从预设的多个多叉树存储结构中选择与目标子数据相匹配的多叉树存储结构,使得区块链的数据存储结构与所存储的数据更加匹配,进而一定程度上提高存储效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据存储方法的步骤流程图;
图2是现有技术中红黑树存储结构的示意图;
图3是现有技术中B树存储结构的示意图;
图4是现有技术中B+树存储结构的示意图;
图5是现有技术中区块链的默克尔树存储结构的示意图;
图6是本申请实施例提供的数据存储测试实验的结果示意图;
图7是本申请实施例提供的一种数据存储方法的应用场景示意图;
图8是本申请实施例提供的一种数据存储装置的结构图;
图9是本申请实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1是本申请实施例提供的一种数据存储方法的步骤流程图,如图1所示,该方法可以包括:
步骤101,确定待存储数据在区块链上对应的目标区块。
本申请实施例中,待存储数据可以是需要被存储到区块链上的数据,例如产品生产数据、图像处理数据等。区块链是一种分布式数据库,是由连续的区块组成的链式数据结构。其中,区块是一种被包含在区块链里的容器数据结构,区块由一个包含元数据的区块头和紧跟其后的构成区块主体的一长串数据组成。目标区块可以是区块链上生成的用于存放待存储数据的一个或多个新区块。
本申请实施例中,可以根据待存储数据的数据量和区块链上的区块所对应的数据量之间的数量关系,在区块链上生成相应数量的新区块,作为待存储数据在区块链上对应的目标区块。具体的,若待存储数据的数据量小于等于区块链上的一个区块所对应的数据量,则可以在区块链上生成一个区块作为目标区块,用来存储该待存储数据。若待存储数据的数据量大于区块链上的一个区块所对应的数据量,则可以根据待存储数据的数据量和区块链上的区块所对应的数据量之间的倍数关系,确定需要生成的新区块的数量,并在区块链上生成相应数量的区块,作为目标区块,用来存储该待存储数据。
步骤102,对于任一目标区块,根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的成本表征参数;所述多个多叉树存储结构包括不同种类的多叉树存储结构,所述目标子数据是所述待存储数据中与所述目标区块对应的数据,所述成本表征参数表征所述多叉树存储结构的存储成本和查询成本。
本申请实施例中,多叉树存储结构可以是一颗以一个根节点开始,每个节点包含不超过N个子节点的树。其中,N可以是不小于2的正整数。例如,当N等于2时,多叉树存储结构为二叉树存储结构,每个节点所包含的子节点的数量不超过2个。本申请实施例中,不同种类的多叉树存储结构可以根据实际需求设置,例如多个多叉树存储结构可以包括红黑树(RBTree)存储结构、B树(BTree)存储结构和B+树(B+Tree)存储结构。需要说明的是,虽然不同种类的多叉树存储结构均属于多叉树存储结构,但不同种类的多叉树存储结构的存储特性并不相同,因此,不同种类的多叉树存储结构相当于是不同的数据存储结构。
具体的,红黑树是一种特殊的二叉树,红黑树的每个节点上都有颜色,节点颜色可以是红(Red)或黑(Black),所以称为红黑树。红黑树在插入和删除数据时,通过叶子节点的旋转和重新着色的方法保持树的平衡性,红黑树是一种平衡的二叉树。平衡的二叉树是由深度差绝对值小于或等于1的左右子树构成的二叉树,这种对称的结构形式使得平衡的二叉树相比于不平衡的二叉树在查询时路径更短,具有较低的查询成本。B树是一种多路搜索树,由一系列有序数组挂在一棵平衡多叉树下面组成,B树每个节点都存储有索引和数据。B+树的结构与B树类似,区别在于每个节点只存储关键字索引,并且每组有序数组之间用指针连接,B+树的最底层存储有所有节点的索引和数据指针。此处仅是举例说明,本申请实施例对此不做限制。
本申请实施例中,一个目标区块的目标子数据可以是全部待存储数据中需要存储在该目标区块内的一部分数据,即待存储数据中与目标区块对应的数据。成本表征参数可以是用于表征多叉树存储结构的存储成本和查询成本的指标值。其中,存储成本可以包括按照任一多叉树存储结构存储一定量的数据到区块链上,区块中的数据所需占用的存储空间大小和存储过程所消耗的时间多少。查询成本可以包括查询区块链上的区块中按照任一多叉树存储结构存储的数据时,查询过程所消耗的时间多少。
本申请实施例中,对于任一多叉树存储结构,可以根据按照该多叉树存储结构在区块链上存储目标子数据时占用的存储空间大小、存储过程消耗的时长以及存储后查询该目标子数据时所消耗的时长,计算该多叉树存储结构对应的成本表征参数。具体的,可以将占用的存储空间大小、存储过程消耗的时长以及查询过程所消耗的时长各自对应的实际数值,按照一定的比例关系相加得到一个数值,作为该多叉树存储结构的成本表征参数。其中,比例关系可以根据实际应用场景下,对于占用的存储空间大小、存储过程消耗的时长以及查询过程所消耗的时长三个指标的重视程度预先定义。
例如,如以下公式所示:
其中,M用于表示区块所占用空间内存大小,I用于表示数据插入时间消耗,S用于表示数据查询时间消耗。Q为权指数即成本表征参数,用于表征多叉树存储结构的存储成本和时间成本。其中,数据插入时间消耗即存储过程消耗的时长。可以理解的是,权指数越小,表示多叉树存储结构对应的存储成本和时间成本越小,则该多叉树存储结构与目标子数据越匹配。
本申请实施例中,实际应用过程中,可以预先通过数据存储实验测试出不同数据量的数据,分别按照各多叉树存储结构存储时对应的成本表征参数,然后制定成参数表,在数据存储时通过查表的方式确定目标区间的目标子数据对应的各多叉树存储结构的成本表征参数。
步骤103,根据所述各多叉树存储结构的成本表征参数,从所述多个多叉树存储结构中选择成本表征参数符合预设要求的多叉树存储结构,作为所述目标区块对应的目标存储结构。
本申请实施例中,预设要求可以根据实际应用场景下对于数据存储结构的存储成本和查询成本的要求进行设置。预设要求可以是所选的多叉树存储结构对应的成本表征参数小于预设阈值,或者所选的多叉树存储结构对应的成本表征参数是各多叉树存储结构的成本表征参数中最小的。其中,预设阈值可以根据服务器的存储空间大小,以及对于存储时间和查询时间的要求具体设置。可以从多个多叉树存储结构中选择成本表征参数小于预设阈值的多叉树存储结构,作为目标区块对应的目标存储结构。或者,可以通过计算各多叉树存储结构的成本表征参数的最小值,将最小值对应的多叉树存储结构作为目标区块对应的目标存储结构。
步骤104,将所述目标子数据按照所述目标存储结构存储至所述目标区块中。
本申请实施例中,目标区块的区块体采用目标存储结构,可以根据目标存储结构的数据存储方式将目标子数据存储在目标区块的区块体中。例如,如图2所示,若目标存储结构为红黑树,则生成一个黑色的根节点并将目标子数据中的一个数据存储到该根节点中,生成根节点的两个叶子节点,将两个叶子节点着色为红色并存入两个数据,然后依次为叶子节点插入新的叶子节点,为新叶子节点着色并存入数据。其中,图2中虚线圆形表示红色的节点,实线圆形表示黑色的节点。在此过程中通过旋转叶子节点或者重新着色的方法,保证如果一个节点是红色的则它的子节点必须是黑色的,以及从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点,为空的叶子节点即没有存储数据的叶子节点的颜色必须为黑色,以满足红黑树的结构要求。其中,旋转叶子节点的方法可以参考现有技术中的旋转方法,本申请实施例对此不做限制。
示例性的,如图3所示,若目标存储结构为B树,可以将目标子数据进行分组得到多组数据,并生成每组数据对应的索引,根据各组数据和对应的索引生成有序数组,并将有序数组挂在一棵平衡多叉树下面,每个节点都包括索引和数据。参见图3,根节点中关键字15表示索引,P1表示数据指针用于指向根节点的第一个叶子节点,根节点中还存储关键字15对应的数据。根节点的两个叶子节点中也存储各自的关键字、数据指针和相应的数据,数据指针分别指向底层的叶子节点,底层的叶子节点中只存储索引和对应的数据。图3中的纯数字表示关键字,P1-P3、P1’-P3’和P1”-P3”表示数据指针。
可选的,如图4所示,若目标存储结构为B+树,可以将目标子数据进行分组并排序,生成有序数组,并将有序数据之间通过数据指针箭头连接生成链表,以及,有序数组作为B+树的最底层,每三个数组向上生成一个叶子节点,叶子节点中存储有对应数组的数据指针例如P1’,然后将各叶子节点对应的指针例如P1存储在根节点中,从而实现将目标子数据按照目标存储结构存储至目标区块中。图4中的纯数字表示关键字,是数据对应的索引,P1’-P4’、P1”-P4”和P1”’-P4’”表示数组对应的指针,P1-P4表示叶子节点对应的指针。
在本申请实施例中,通过确定待存储数据在区块链上对应的目标区块;对于任一目标区块,根据目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的成本表征参数;多个多叉树存储结构包括不同种类的多叉树存储结构,目标子数据是待存储数据中与目标区块对应的数据,成本表征参数表征多叉树存储结构的存储成本和查询成本;根据各多叉树存储结构的成本表征参数,从多个多叉树存储结构中选择成本表征参数符合预设要求的多叉树存储结构,作为目标区块对应的目标存储结构;将目标子数据按照目标存储结构存储至目标区块中。这样,为各目标区块根据该目标区块的目标子数据适应性地从多个多叉树存储结构中为目标区块选择目标区块对应的数据存储结构,从而一定程度上可以提高区块链的数据存储结构的多样性,避免数据存储结构单一的问题。且由于各多叉树存储结构的成本表征参数是根据目标区块的目标子数据确定的,因此,根据成本表征参数,可以从预设的多个多叉树存储结构中选择与目标子数据相匹配的多叉树存储结构,使得区块链的数据存储结构与所存储的数据更加匹配,进而一定程度上提高存储效果。
可选的,步骤101可以包括以下步骤:
步骤1011,根据预设分组条件对所述待存储数据进行分组,以获得待存储数据组。
本申请实施例中,预设分组条件可以是以预设长度的键值对(Key值和Value值)为一组。例如,每组数据由224位长的Key值和256位长的Value值组成。其中,Value值表示数据,Key值表示数据对应的索引值。此处仅是举例说明,本申请实施例对此不做限制。可以将待存储数据按照预设长度进行分组,然后生成每组数据对应的索引值,根据每组数据和对应的索引值生成数据组,并将生成的数据组作为待存储数据组。
步骤1012,根据第一组数和所述区块链中区块对应的最大存储组数,确定所述待存储数据在所述区块链上对应的目标区块;所述第一组数是所述待存储数据组的数量。
本申请实施例中,区块链中区块对应的最大存储组数表示区块所能存储的待存储数据组的最大数量。可以将第一组数与最大存储组数进行比较,根据第一组数和最大存储组数的大小关系,确定区块链上用于存储待存储数据的区块的数量,根据区块的数量生成新的区块,并将新区块确定为待存储数据对应的目标区块。
在本申请实施例中,通过根据预设分组条件对待存储数据进行分组,以获得待存储数据组;根据第一组数和区块链中区块对应的最大存储组数,确定待存储数据在区块链上对应的目标区块;第一组数是待存储数据组的数量。这样,可以通过分组方便地确定待存储数据的数据量,然后根据待存储数据的数据量即第一组数以及区块的最大存储组数,为待存储数据方便地确定区块链上的目标区块,从而提高本申请的数据存储方法的存储效率。
可选的,步骤1012可以包括以下步骤:
步骤10121,在所述第一组数大于所述最大存储组数的情况下,根据所述第一组数和所述最大存储组数,确定目标数量;所述目标数量与所述最大存储组数的乘积不小于所述第一组数;在所述区块链上生成与所述目标数量一致的区块作为目标区块。
本申请实施例中,可以将第一组数与最大存储组数进行比较,若第一组数大于最大存储组数,说明需要多个区块存储待存储数据。在第一组数大于最大存储组数的情况下,可以根据第一组数和最大存储组数的倍数关系,确定区块链上用于存储待存储数据所需的区块的数量,作为目标数量。其中,目标数量与最大存储组数的乘积表征目标区块所能存储的最多的数据组数量。目标数量与最大存储组数的乘积不小于第一组数,则表示目标区块可以完整的存储待存储数据,不会出现数据溢出的问题。
本申请实施例中,在确定区块链上用于存储待存储数据所需的区块的数量即目标数量之后,可以基于区块链上的最后一个区块生成新区块,直至生成与目标数量一致的新区块作为目标区块。需要说明的是,本步骤中新区块的生成方法可以参考现有技术中区块链的区块生成方法,本申请实施例对此不做限制。
步骤10122,在所述第一组数不大于所述最大存储组数的情况下,在所述区块链上生成一个区块作为目标区块。
本申请实施例中,可以将第一组数与最大存储组数进行比较,若第一组数不大于最大存储组数,说明只需一个区块就可以存储待存储数据。在第一组数不大于最大存储组数的情况下,可以基于区块链上的最后一个区块生成一个新区块作为目标区块。需要说明的是,本步骤中新区块的生成方法可以参考现有技术中区块链的区块生成方法,本申请实施例对此不做限制。
在本申请实施例中,通过在第一组数大于最大存储组数的情况下,根据第一组数和最大存储组数,确定目标数量;目标数量与最大存储组数的乘积不小于第一组数;在区块链上生成与目标数量一致的区块作为目标区块;在第一组数不大于最大存储组数的情况下,在区块链上生成一个区块作为目标区块。这样,可以根据第一组数和最大存储组数方便地确定目标区块的数量,并生成相应数量的目标区块,保证待存储数据能够存储在区块链的区块中,且可以节约所占用的区块的数量,一定程度上提高区块链的资源利用率。
可选的,步骤10121可以包括以下步骤:
步骤10121a,将所述第一组数和所述最大存储组数进行除法运算,得到运算结果,并对所述运算结果进行向上取整操作,得到所述目标数量。
本申请实施例中,可以将第一组数除以最大存储组数,得到运算结果。其中,整除的情况下,运算结果只包括整数部分,否则,运算结果包括整数部分和余数。然后,对运算结果进行向上取整操作,得到目标数量。具体的,运算结果包括余数的情况下,整数部分加一作为目标数量,整除即运算结果不包括余数的情况下,直接将整数部分作为目标数量。
步骤10121b,在所述运算结果包括余数的情况下,在所述区块链上生成x个区块,作为第一目标区块;所述x是所述运算结果中的整数部分。
步骤10121c,在最后一个所述第一目标区块的后面生成一个区块,作为第二目标区块。
本申请实施例中,在运算结果包括余数的情况下,说明待存储数据不能存满目标区块,即区块链上最后一个目标区块中存储的数据组的数量小于最大存储组数。可以根据运算结果中的整数部分x,先在区块链上生成x个区块作为第一目标区块。其中,x可以是大于等于1的正整数,第一目标区块中存储的待存储数据组的数量等于最大存储组数。然后,在最后一个第一目标区块的后面生成一个区块,作为第二目标区块。其中,第二目标区块中存储的待存储数据组的数量等于余数。需要说明的是,区块链上的新区块的生成方法可以参考现有技术中区块链的区块生成方法,本申请实施例对此不做限制。
在本申请实施例中,通过将第一组数和最大存储组数进行除法运算,得到运算结果,并对运算结果进行向上取整操作,得到目标数量;在运算结果包括余数的情况下,在区块链上生成x个区块,作为第一目标区块;x是运算结果中的整数部分;在最后一个第一目标区块的后面生成一个区块,作为第二目标区块。这样,可以通过除法运算和取整操作方便地获得目标数量,并根据运算结果中的整数部分和余数,生成第一目标区块和第二目标区块,分别用于存储整除部分对应的待存储数据和余数部分的待存储数据,一定程度上可以提高本申请的数据存储方法的存储效率。
可选的,步骤102可以包括以下步骤:
步骤1021,根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;所述存储空间参数和所述插入时间参数表征所述多叉树存储结构的存储成本,所述查询时间参数表征所述多叉树存储结构的查询成本。
本申请实施例中,多叉树存储结构的存储空间参数可以是按照该多叉树存储结构存储一定量的数据到区块链上,区块中的数据所需占用的存储空间大小,插入时间参数可以是存储过程所消耗的时间多少,存储空间参数和插入时间参数表征多叉树存储结构的存储空间成本和存储时间成本。多叉树存储结构的查询时间参数可以是查询区块链上的区块中按照任一多叉树存储结构存储的数据时,查询过程所消耗的时间多少,查询时间参数表征多叉树存储结构的查询时间成本。
本申请实施例中,对于任一多叉树存储结构,可以根据按照该多叉树存储结构在区块链上存储目标子数据时对应的存储空间大小、存储过程消耗的时长以及存储后查询该目标子数据时所消耗的时长,确定该多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。其中,可以将存储目标子数据时对应的存储空间大小的实际数值作为存储空间参数,将存储过程消耗的时长作为插入时间参数,将查询该目标子数据时所消耗的时长作为查询时间参数。
可选的,实际应用过程中,可以预先通过数据存储实验,测试按照各多叉树存储结构存储与目标子数据的数据量相同的数据时,对应的存储空间参数、插入时间参数和查询时间参数,然后制定成参数表,在目标子数据存储时通过查表的方式确定目标区间的目标子数据对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
步骤1022,根据所述各多叉树存储结构的存储空间参数、插入时间参数、查询时间参数和预设权重,确定所述各多叉树存储结构的成本表征参数。
本申请实施例中,可以根据实际应用场景下,对于存储空间参数、插入时间参数和查询时间参数三个指标的重视程度预先定义指标权重,作为预设权重。如公式(1)所示,M可以表示存储空间参数,I可以表示插入时间参数,S可以表示查询时间参数,则存储空间参数、插入时间参数和查询时间参数三个指标对应的预设权重之比可以是。可选的,M、I、S各自对应的预设权重分别为2、3、4。
本申请实施例中,可以将多叉树存储结构的存储空间参数、插入时间参数、查询时间参数与各自对应的预设权重的乘积求和,并将求和结果作为该多叉树存储结构的成本表征参数。如公式(2)所示,将M、I、S分别与各自对应的预设权重相乘,然后再求和得到权指数Q,则可以将权指数Q确定为多叉树存储结构的成本表征参数。
在本申请实施例中,通过根据目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;存储空间参数和插入时间参数表征多叉树存储结构的存储成本,查询时间参数表征多叉树存储结构的查询成本;根据各多叉树存储结构的存储空间参数、插入时间参数、查询时间参数和预设权重,确定各多叉树存储结构的成本表征参数。这样,可以通过存储空间参数、插入时间参数和查询时间参数直观地体现多叉树存储结构的存储成本和查询成本,且由于成本表征参数是根据各多叉树存储结构的存储空间参数、插入时间参数、查询时间参数和预设权重确定的,因此可以通过预设权重方便地调整三个指标在确定成本表征参数时所占的比重,使得获得的成本表征参数更加灵活,从而提高本申请的数据存储方法的实用性。
可选的,步骤1021可以包括以下步骤:
步骤10211,根据所述目标区块的目标子数据,确定所述目标子数据对应的数据组数,作为第二组数。
本申请实施例中,可以根据预设分组条件对待存储数据进行分组,以获得待存储数据组,具体实现方式可以参考步骤1011的相关描述,此处不再赘述。目标区块的目标子数据可以是目标区块对应的待存储数据组中的数据,对于任一目标区块,该目标区块对应的待存储数据组可以根据该目标区块在全部目标区块中的顺序,需要存储在该目标区块的数据组数,以及全部待存储数据组的顺序,确定需要存储在该目标区块的待存储数据组,作为该目标区块对应的待存储数据组。目标子数据可以包括待存储数据组中的Key值和Value值。其中,Value值表示数据,Key值表示数据对应的索引值。可以将目标区块对应的待存储数据组的数量确定为目标子数据对应的数据组数,并将目标子数据对应的数据组数作为第二组数。
步骤10212,根据所述第二组数,确定所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
本申请实施例中,第二组数可以表征目标区块中存储的待存储数据的数据量。实际应用过程中,可以预先通过数据存储实验,测试按照各多叉树存储结构存储不同数据量的数据时,对应的存储空间参数、插入时间参数和查询时间参数,然后制定成参数表。可以通过查表的方式确定第二组数所表征的数据量对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,作为目标区块对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
在本申请实施例中,通过根据目标区块的目标子数据,确定目标子数据对应的数据组数,作为第二组数;根据第二组数,确定目标区块对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。这样,可以通过第二组数直观地体现目标子数据的数据量,并根据第二组数方便地确定目标区块对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,可以提高存储空间参数、插入时间参数和查询时间参数的获取效率,一定程度上提高本申请的数据存储方法的存储效率。
可选的,步骤10212可以包括以下步骤:
步骤10212a,在所述第二组数等于所述区块链中区块对应的最大存储组数的情况下,将预设的所述最大存储组数对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
本申请实施例中,数据量相同的目标子数据对应的目标区块所采用的数据存储结构可以是相同的多叉树存储结构。在第二组数等于区块链中区块对应的最大存储组数的情况下,说明该目标区块的目标子数据是该目标区块所能存储的最多的数据。实际应用过程中,可以预先通过数据存储实验,测试按照各多叉树存储结构存储最大存储组数所表征的数据量的数据时,对应的存储空间参数、插入时间参数和查询时间参数,然后数据存储时,直接将最大存储组数对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,作为目标区块对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
步骤10212b,在所述第二组数不大于所述最大存储组数的情况下,从预设参数表中查询与所述第二组数相匹配的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
本申请实施例中,在第二组数不大于区块链中区块对应的最大存储组数的情况下,可以根据第二组数的实际数值,从预设参数表中查询该实际数值对应的存储空间参数、插入时间参数和查询时间参数,得到与第二组数相匹配的存储空间参数、插入时间参数和查询时间参数,并作为目标区块对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。其中,预设参数表可以参照步骤10212中的相关描述获得,此处不再赘述。
在本申请实施例中,通过在第二组数等于区块链中区块对应的最大存储组数的情况下,将预设的最大存储组数对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,作为目标区块对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;在第二组数不大于最大存储组数的情况下,从预设参数表中查询与第二组数相匹配的存储空间参数、插入时间参数和查询时间参数,作为目标区块对应的各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。这样,通过第二组数和最大存储组数的大小关系进行区分处理,在第二组数等于区块链中区块对应的最大存储组数的情况下,直接根据最大存储组数得到存储空间参数、插入时间参数和查询时间参数,而在第二组数不大于最大存储组数的情况下,通过查表的方式得到存储空间参数、插入时间参数和查询时间参数,可以进一步提高存储空间参数、插入时间参数和查询时间参数的获取效率,从而提高本申请的数据存储方法的存储效率。
目前,现有技术中通常是采用默克尔树作为固定的数据存储结构,即,对于待存储数据中的所有子数据均直接采用默克尔树存储结构存储到区块中。图5是现有技术中区块链的默克尔树存储结构的示意图,如图5所示,区块链的区块头中存储有版本号、本区块根哈希(hash)值、前区块根哈希值和时间戳,区块体中存储有入链前数据和哈希运算生成的哈希数据。具体的,默克尔树将一定时间内的入链前数据进行第一次哈希运算,得到入链前数据各自对应的哈希值,将入链前数据和各自对应的哈希值作为第一次哈希数据。再以第一次哈希数据中相邻两个哈希数据为一组取哈希值,最后一组如果为奇数则对单个原始数据进行哈希运算,再对相邻哈希值进行递归顺序哈希运算取哈希值,直至最终生成一个哈希值作为区块根哈希,并存储在区块链的区块头中。图5中001-009表示数据,A、B、C和D分别表示第一次至第四次哈希运算对应的哈希值。默克尔树存储结构有两种存在形式,第一种是仅存储校验原始数据,并不存储中间哈希运算的哈希值,当查询验证数据时,再执行哈希运算临时生成哈希值,这种形式虽然减少区块占用内存,但会增加每次查询的时间。第二种是既存储校验原始数据,也存储中间校验数据即哈希值,这样虽然增加区块存储成本,但可以加快查询数据时的验证效率。
但是,默克尔树存储结构中,计算得到的哈希值被存储时需要占用大量的空间,在数据量大的情况下,较大的区块可能需要占用几十兆内存,增加数据存储成本。且由于默克尔树存储结构在数据查询验证时需要相邻哈希值的支持,相邻哈希值的存储或计算会带来一定的空间和时间消耗,增加数据查询成本。因此,采用默克尔存储结构的区块链存在数据存储结构单一、数据存储和数据查询成本高的问题。
图6是本申请实施例提供的数据存储测试实验的结果示意图,该存储测试实验通过按照不同的多叉树存储结构存储一定数据量的数据到区块链,测试各多叉树存储结构对应的成本表征参数。其中,待存储数据可以是农产品生产数据,此处仅用于测试,本申请实施例对此不做限制。各多叉树存储结构的成本表征参数包括存储空间参数、插入时间参数和查询时间参数,以224位长的Key值和256位长的Value值为分组条件对农产品生产数据进行分组,得到1000组数据,分别以二叉搜索树(BinaryTree)、红黑树(RBTree)、3-6阶的B树(BTree)和3-6阶的B+树(B+Tree)为数据存储结构,将1000组农产品生产数据存储到区块链的区块中,得到各多叉树存储结构对应的存储空间参数、插入时间参数和查询时间参数三个指标值。参见图6,直方图表示存储空间参数,曲线1表示查询时间参数,曲线2表示插入时间参数,存储时间参数的单位为千字节(KB),插入时间参数和查询时间参数的单位为纳秒(ns)。需要说明的是,若采用默克尔树存储结构存储相同的1000组农产品生产数据到区块链的区块中,默克尔树对应的查询时间参数在1E+7纳秒至2E+7纳秒区间内,而插入时间参数高达4E+7纳秒,远大于各多叉树存储结构对应的插入时间参数。多叉树存储结构在数据查询时与默克尔树的不同在于,多叉树存储结构进行数据查验时,仅以Key值为索引,校验Value值与预设的数据是否一致,而无需进行哈希值重新计算,因此比默克尔树的查询验证过程高效,且哈希值被存储时也需要占用大量的空间,因此默克尔树的数据存储成本和数据查询成本高于多叉树存储结构。定义存储空间参数M、插入时间参数I和查询时间参数S三个指标值各自的权重为2、3、4,则成本表征参数即权指数,根据图6中各多叉树存储结构对应的存储空间参数、插入时间参数和查询时间参数三个指标值计算权指数Q,可以选择成本表征参数即权指数Q最小的多叉树存储结构,作为农产品生产数据的数据存储结构。
图7是本申请实施例提供的数据存储方法的应用场景示意图,如图7所示,对于区块链上的任一区块,可以根据区块中存储的数据的数据量的大小,适应性地选择多叉树存储结构作为目标区块的目标子数据对应的数据存储结构。参见图7,区块1为创世区块,区块2、3、4分别根据各自存储的数据的数据量大小,选择红黑树、B+树和B树作为各自对应的数据存储结构来存储数据。其中,红黑树、B+树和B树的结构形式可以参考步骤104的相关描述,此处不再赘述。需要说明的是,区块链的特性是某段时间内或某些数据经网络节点共识并存储至各个节点后,数据不允许再被更改,即上链后的每一个区块不允许再被更改,只能提供数据查验功能,即区块链上的数据仅供查验,每一个区块体的数据存储结构可以是不一样的。
图8是本申请实施例提供的一种数据存储装置的结构图,该装置30可以包括:
第一确定模块301,用于确定待存储数据在区块链上对应的目标区块;
第二确定模块302,用于对于任一目标区块,根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的成本表征参数;所述多个多叉树存储结构包括不同种类的多叉树存储结构,所述目标子数据是所述待存储数据中与所述目标区块对应的数据,所述成本表征参数表征所述多叉树存储结构的存储成本和查询成本;
选择模块303,用于根据所述各多叉树存储结构的成本表征参数,从所述多个多叉树存储结构中选择成本表征参数符合预设要求的多叉树存储结构,作为所述目标区块对应的目标存储结构;
存储模块304,用于将所述目标子数据按照所述目标存储结构存储至所述目标区块中。
可选的,所述第一确定模块301具体用于:
根据预设分组条件对所述待存储数据进行分组,以获得待存储数据组;
根据第一组数和所述区块链中区块对应的最大存储组数,确定所述待存储数据在所述区块链上对应的目标区块;所述第一组数是所述待存储数据组的数量。
可选的,所述第一确定模块301具体还用于:
在所述第一组数大于所述最大存储组数的情况下,根据所述第一组数和所述最大存储组数,确定目标数量;所述目标数量与所述最大存储组数的乘积不小于所述第一组数;在所述区块链上生成与所述目标数量一致的区块作为目标区块;
在所述第一组数不大于所述最大存储组数的情况下,在所述区块链上生成一个区块作为目标区块。
可选的,所述第一确定模块301具体还用于:
将所述第一组数和所述最大存储组数进行除法运算,得到运算结果,并对所述运算结果进行向上取整操作,得到所述目标数量;
在所述运算结果包括余数的情况下,在所述区块链上生成x个区块,作为第一目标区块;所述x是所述运算结果中的整数部分;在最后一个所述第一目标区块的后面生成一个区块,作为第二目标区块。
可选的,所述第二确定模块302具体用于:
根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;所述存储空间参数和所述插入时间参数表征所述多叉树存储结构的存储成本,所述查询时间参数表征所述多叉树存储结构的查询成本;
根据所述各多叉树存储结构的存储空间参数、插入时间参数、查询时间参数和预设权重,确定所述各多叉树存储结构的成本表征参数。
可选的,所述第二确定模块302具体还用于:
根据所述目标区块的目标子数据,确定所述目标子数据对应的数据组数,作为第二组数;
根据所述第二组数,确定所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
可选的,所述第二确定模块302具体还用于:
在所述第二组数等于所述区块链中区块对应的最大存储组数的情况下,将预设的所述最大存储组数对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;
在所述第二组数不大于所述最大存储组数的情况下,从预设参数表中查询与所述第二组数相匹配的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
所述数据存储装置与如上述所述的数据存储方法相对于现有技术所具有的优势相同,此处不再赘述。
本申请还提供了一种电子设备40,参见图9,包括:处理器401、存储器402以及存储在所述存储器402上并可在所述处理器401上运行的计算机程序4021,所述处理器401执行所述程序时实现前述实施例的数据存储方法。
本申请还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述实施例的数据存储方法。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其他设备固有相关。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本申请并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图,或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请的排序设备中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本申请的保护范围之内。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
需要说明的是,本申请实施例中获取各种数据相关过程,都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
Claims (15)
1.一种数据存储方法,其特征在于,所述方法包括:
确定待存储数据在区块链上对应的目标区块;
对于预设的多个多叉树存储结构中的任一多叉树存储结构,根据按照所述多叉树存储结构在所述区块链上存储目标子数据时占用的存储空间大小、存储过程消耗的时长以及存储后查询所述目标子数据时所消耗的时长,计算所述多叉树存储结构对应的成本表征参数;所述多个多叉树存储结构包括不同种类的多叉树存储结构,所述目标子数据是所述待存储数据中与所述目标区块对应的数据,所述成本表征参数表征所述多叉树存储结构的存储成本和查询成本;根据所述各多叉树存储结构的成本表征参数,从所述多个多叉树存储结构中选择成本表征参数符合预设要求的多叉树存储结构,作为所述目标区块对应的目标存储结构;所述存储成本包括按照所述多叉树存储结构存储预设数量的数据到所述区块链上,区块中的数据所需占用的存储空间大小和存储过程所消耗的时长;所述查询成本包括查询所述区块链上的区块中按照所述多叉树存储结构存储的数据时,查询过程所消耗的时长;
将所述目标子数据按照所述目标存储结构存储至所述目标区块中。
2.根据权利要求1所述的方法,其特征在于,所述确定待存储数据在区块链上对应的目标区块,包括:
根据预设分组条件对所述待存储数据进行分组,以获得待存储数据组;
根据第一组数和所述区块链中区块对应的最大存储组数,确定所述待存储数据在所述区块链上对应的目标区块;所述第一组数是所述待存储数据组的数量。
3.根据权利要求2所述的方法,其特征在于,所述根据第一组数和所述区块链中区块对应的最大存储组数,确定所述待存储数据在所述区块链上对应的目标区块,包括:
在所述第一组数大于所述最大存储组数的情况下,根据所述第一组数和所述最大存储组数,确定目标数量;所述目标数量与所述最大存储组数的乘积不小于所述第一组数;在所述区块链上生成与所述目标数量一致的区块作为目标区块;
在所述第一组数不大于所述最大存储组数的情况下,在所述区块链上生成一个区块作为目标区块。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一组数和所述最大存储组数,确定目标数量,包括:
将所述第一组数和所述最大存储组数进行除法运算,得到运算结果,并对所述运算结果进行向上取整操作,得到所述目标数量;
在所述运算结果包括余数的情况下,所述在所述区块链上生成与所述目标数量一致的区块作为目标区块,包括:
在所述区块链上生成x个区块,作为第一目标区块;所述x是所述运算结果中的整数部分;
在最后一个所述第一目标区块的后面生成一个区块,作为第二目标区块。
5.根据权利要求1所述的方法,其特征在于,所述对于预设的多个多叉树存储结构中的任一多叉树存储结构,根据按照所述多叉树存储结构在所述区块链上存储目标子数据时占用的存储空间大小、存储过程消耗的时长以及存储后查询所述目标子数据时所消耗的时长,计算所述多叉树存储结构对应的成本表征参数,包括:
根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;所述存储空间参数和所述插入时间参数表征所述多叉树存储结构的存储成本,所述查询时间参数表征所述多叉树存储结构的查询成本;所述存储空间参数用于表征所述存储空间大小,所述插入时间参数用于表征所述存储过程消耗的时长,所述查询时间参数用于表征查询所述目标子数据时所消耗的时长;
根据所述各多叉树存储结构的存储空间参数、插入时间参数、查询时间参数和预设权重,确定所述各多叉树存储结构的成本表征参数。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,包括:
根据所述目标区块的目标子数据,确定所述目标子数据对应的数据组数,作为第二组数;
根据所述第二组数,确定所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第二组数,确定所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,包括:
在所述第二组数等于所述区块链中区块对应的最大存储组数的情况下,将预设的所述最大存储组数对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;
在所述第二组数不大于所述最大存储组数的情况下,从预设参数表中查询与所述第二组数相匹配的存储空间参数、插入时间参数和查询时间参数,作为所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
8.一种数据存储装置,其特征在于,所述装置包括:
第一确定模块,用于确定待存储数据在区块链上对应的目标区块;
第二确定模块,用于对于预设的多个多叉树存储结构中的任一多叉树存储结构,根据按照所述多叉树存储结构在所述区块链上存储目标子数据时占用的存储空间大小、存储过程消耗的时长以及存储后查询所述目标子数据时所消耗的时长,计算所述多叉树存储结构对应的成本表征参数;所述多个多叉树存储结构包括不同种类的多叉树存储结构,所述目标子数据是所述待存储数据中与所述目标区块对应的数据,所述成本表征参数表征所述多叉树存储结构的存储成本和查询成本;所述存储成本包括按照所述多叉树存储结构存储预设数量的数据到所述区块链上,区块中的数据所需占用的存储空间大小和存储过程所消耗的时长;所述查询成本包括查询所述区块链上的区块中按照所述多叉树存储结构存储的数据时,查询过程所消耗的时长;
选择模块,用于根据所述各多叉树存储结构的成本表征参数,从所述多个多叉树存储结构中选择成本表征参数符合预设要求的多叉树存储结构,作为所述目标区块对应的目标存储结构;
存储模块,用于将所述目标子数据按照所述目标存储结构存储至所述目标区块中。
9.根据权利要求8所述的装置,其特征在于,所述第一确定模块具体用于:
根据预设分组条件对所述待存储数据进行分组,以获得待存储数据组;
根据第一组数和所述区块链中区块对应的最大存储组数,确定所述待存储数据在所述区块链上对应的目标区块;所述第一组数是所述待存储数据组的数量。
10.根据权利要求9所述的装置,其特征在于,所述第一确定模块具体还用于:
在所述第一组数大于所述最大存储组数的情况下,根据所述第一组数和所述最大存储组数,确定目标数量;所述目标数量与所述最大存储组数的乘积不小于所述第一组数;在所述区块链上生成与所述目标数量一致的区块作为目标区块;
在所述第一组数不大于所述最大存储组数的情况下,在所述区块链上生成一个区块作为目标区块。
11.根据权利要求10所述的装置,其特征在于,所述第一确定模块具体还用于:
将所述第一组数和所述最大存储组数进行除法运算,得到运算结果,并对所述运算结果进行向上取整操作,得到所述目标数量;
在所述运算结果包括余数的情况下,在所述区块链上生成x个区块,作为第一目标区块;所述x是所述运算结果中的整数部分;在最后一个所述第一目标区块的后面生成一个区块,作为第二目标区块。
12.根据权利要求8所述的装置,其特征在于,所述第二确定模块具体用于:
根据所述目标区块的目标子数据,确定预设的多个多叉树存储结构中各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数;所述存储空间参数和所述插入时间参数表征所述多叉树存储结构的存储成本,所述查询时间参数表征所述多叉树存储结构的查询成本;所述存储空间参数用于表征所述存储空间大小,所述插入时间参数用于表征所述存储过程消耗的时长,所述查询时间参数用于表征查询所述目标子数据时所消耗的时长;
根据所述各多叉树存储结构的存储空间参数、插入时间参数、查询时间参数和预设权重,确定所述各多叉树存储结构的成本表征参数。
13.根据权利要求12所述的装置,其特征在于,所述第二确定模块具体还用于:
根据所述目标区块的目标子数据,确定所述目标子数据对应的数据组数,作为第二组数;
根据所述第二组数,确定所述目标区块对应的所述各多叉树存储结构的存储空间参数、插入时间参数和查询时间参数。
14.一种电子设备,其特征在于,包括:处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-7中任一所述的数据存储方法。
15.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行权利要求1-7中任一所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310075940.6A CN115793992B (zh) | 2023-02-07 | 2023-02-07 | 数据存储方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310075940.6A CN115793992B (zh) | 2023-02-07 | 2023-02-07 | 数据存储方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115793992A CN115793992A (zh) | 2023-03-14 |
CN115793992B true CN115793992B (zh) | 2023-06-23 |
Family
ID=85430314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310075940.6A Active CN115793992B (zh) | 2023-02-07 | 2023-02-07 | 数据存储方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115793992B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111340623B (zh) * | 2020-02-21 | 2023-10-24 | 度小满科技(北京)有限公司 | 一种数据存储方法及装置 |
CN112311596B (zh) * | 2020-10-22 | 2023-05-12 | 深圳前海微众银行股份有限公司 | 数据管理方法、装置、设备及计算机存储介质 |
CN112765271B (zh) * | 2020-12-31 | 2023-02-07 | 杭州趣链科技有限公司 | 区块链交易索引的存储方法、装置、计算机设备及介质 |
CN114936039A (zh) * | 2022-05-31 | 2022-08-23 | 北京达佳互联信息技术有限公司 | 程序数据处理方法、装置、电子设备、存储介质 |
CN115394408A (zh) * | 2022-08-05 | 2022-11-25 | 东软集团股份有限公司 | 基于区块链的数据存储与验证方法、装置及存储介质 |
-
2023
- 2023-02-07 CN CN202310075940.6A patent/CN115793992B/zh active Active
Non-Patent Citations (2)
Title |
---|
基于区块链的传染病监测与预警技术;欧阳丽炜;袁勇;郑心湖;张俊;王飞跃;;智能科学与技术学报(第02期);全文 * |
基于多叉树和Spark的改进Apriori算法;曹佳豪;刘宇;;信息技术(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115793992A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fu et al. | Toward efficient multi-keyword fuzzy search over encrypted outsourced data with accuracy improvement | |
AU2005201890B2 (en) | Query to task mapping | |
CN101404032B (zh) | 一种基于内容的视频检索方法及系统 | |
CN107040585A (zh) | 一种业务校验的方法及装置 | |
US10664481B2 (en) | Computer system programmed to identify common subsequences in logs | |
US8856138B1 (en) | Faster substring searching using hybrid range query data structures | |
CN105574054B (zh) | 一种分布式缓存范围查询方法、装置及系统 | |
CN108897761A (zh) | 一种聚簇存储方法及装置 | |
CN106326475A (zh) | 一种高效的静态哈希表实现方法及系统 | |
US8805767B1 (en) | Machine learning memory management and distributed rule evaluation | |
CA2369912A1 (en) | Computerized information search and indexing method, software and device | |
CN105204920B (zh) | 一种基于映射聚合的分布式计算作业的实现方法及装置 | |
CN106453122A (zh) | 一种流数据传输节点的选取方法和装置 | |
CN104021223B (zh) | 一种集群数据库测点的访问方法及装置 | |
CN104636349A (zh) | 一种索引数据压缩以及索引数据搜索的方法和设备 | |
CN108304409A (zh) | 一种基于进位的Sketch数据结构的数据频度估计方法 | |
CN105447030A (zh) | 一种索引处理方法与设备 | |
CN108763536A (zh) | 数据库访问方法及装置 | |
CN106844288A (zh) | 一种随机字符串生成方法及装置 | |
US8271500B2 (en) | Minimal perfect hash functions using double hashing | |
GB2602902A (en) | Knowledge graph-based query in artificial intelligence chatbot with base query element detection and graph path generation | |
CN106126721A (zh) | 一种实时计算平台的数据处理方法和装置 | |
CN111475511A (zh) | 基于树状结构的数据存储方法、访问方法、装置及设备 | |
CN108154024A (zh) | 一种数据检索方法、装置及电子设备 | |
CN115793992B (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 | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing Patentee before: Tianyiyun Technology Co.,Ltd. |