CN112463889A - 区块链数据存储方法、装置、设备和介质 - Google Patents
区块链数据存储方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN112463889A CN112463889A CN202011424777.2A CN202011424777A CN112463889A CN 112463889 A CN112463889 A CN 112463889A CN 202011424777 A CN202011424777 A CN 202011424777A CN 112463889 A CN112463889 A CN 112463889A
- Authority
- CN
- China
- Prior art keywords
- fragment
- data
- current
- determining
- slice
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000013500 data storage Methods 0.000 title claims abstract description 19
- 239000012634 fragment Substances 0.000 claims abstract description 294
- 238000013467 fragmentation Methods 0.000 claims abstract description 82
- 238000006062 fragmentation reaction Methods 0.000 claims abstract description 82
- 230000001360 synchronised effect Effects 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012423 maintenance Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
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/2291—User-Defined Types; Storage management thereof
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种区块链数据存储方法、装置、设备和介质。该方法包括:获取当前区块号;基于当前区块号确定与当前区块号对应的当前分片号集合;判断当前分片号集合中是否存在至少一个未同步分片数据的分片号;若存在,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据。解决了全节点区块链网络维护成本高的问题。
Description
技术领域
本申请一般涉及区块链技术领域,具体涉及一种区块链数据存储方法、装置、设备和介质。
背景技术
区块链网络是一种分布式数据存储网络,具有去中心化(即不依赖第三方)、不可篡改、全程留痕、可以溯源、集体维护和公开透明等特点,已经被广泛的应用于社会生活的各个领域。
区块链网络由多个节点组成,当区块链网络中有新区块生成时,每个节点可以通过数据同步技术,将与该新区块对应的数据存储于该节点维护的区块链账本中,得到该区块链网络的完整账本数据,这种存储了完整账本数据的节点称为全节点。
通常情况下,区块链网络中的全节点数量越多,完整账本数据被保存的份数也就越多,区块链网络的稳定性和安全性越好,但是,随着区块链网络中的区块数量增多,全节点上存储数据的数据量越来越大,导致全节点维护难度大,成本高。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种可以降低区块链网络维护成本并保证区块链网络安全性的区块链数据存储方法、装置、设备和介质。
第一方面,本申请提供了一种区块链数据存储方法,包括:
获取当前区块号;
基于当前区块号确定与当前区块号对应的当前分片号集合,当前分片号集合包括至少一个与分片数据对应的分片号,分片数据为区块数据中的部分数据元素;
判断当前分片号集合中是否存在至少一个未同步分片数据的分片号;
若存在,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据;
第二方面,本申请提供了一种区块链数据存储装置,包括:
获取模块,被配置为获取当前区块号;
确定模块,被配置为基于当前区块号确定与当前区块号对应的当前分片号集合,当前分片号集合包括至少一个与分片数据对应的分片号,分片数据为区块数据中的部分数据元素;
判断模块,被配置为判断当前分片号集合中是否存在至少一个未同步分片数据的分片号;
存储模块,被配置为若是,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据;
第三方面,本申请提供了一种计算机设备,计算机设备包括存储器、处理器以及存储在存储器并可在处理器上运行的计算机程序,处理器用于执行程序时实现如第一方面的方法;
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序用于实现如第一方面的方法。
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请实施例提供的区块链数据存储方法、装置、设备和介质,可以获取当前区块号;基于当前区块号确定与当前区块号对应的当前分片号集合;判断当前分片号集合中是否存在至少一个未同步分片数据的分片号;若是,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据。减少了区块链网络中全节点的数量减低了节点的维护成本,同时保证区块链网络中有足够份数的完整区块数据,保证了区块链网络的安全性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请实施例提供的一种区块链网络的结构示意图;
图2为本申请实施例提供的一种区块链数据存储方法的流程示意图;
图3为本申请实施例提供的另一种区块链数据存储方法的流程示意图;
图4为本申请实施例提供的另一种区块链数据存储方法的流程示意图;
图5为本申请实施例提供的一种区块链数据存储装置的结构示意图;
图6为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1是本申请实施例提供的一种区块链网络的结构示意图,如图1所示,该系统包括多个节点,该节点可以分为两种类型,全节点110和非全节点120,该全节点110用于存储区块链网络的区块数据中的全部数据元素,即区块链网络中的全节点可以存储区块链网络中生成的完整账本数据,该非全节点120用于存储区块链网络的区块数据中的部分最新数据元素,即区块链网络中的非全节点可以存储区块链网络中生成的部分账本数据;其中,数据元素为区块数据中与任一区块号对应区块的数据,该全节点110与非全节点120之间可以建立有线网络连接或者无线网络连接。可以理解的是,该系统中节点的类型是基于节点配置文件中的配置信息确定的,该节点可以是具备数据处理能力的终端设备,例如计算机或者服务器等。
其中,该非全节点120可以为分片非全节点和普通非全节点,在区块链网络中,普通非全节点可以存储该普通非全节点需要维护的部分账本数据,分片非全节点不仅可以存储该分片非全节点需要维护的部分账本数据,也可以存储至少一个分片数据,该分片数据为区块数据中的部分数据元素,该分片数据存储于配置有与该分片数据对应的分片号的分片非全节点中,分片号为分片非全节点中配置的用于同步与分片号对应的分片数据的分片标识,该区块链网络中的至少一个分片非全节点可以共同存储该区块链网络中至少一份完整账本数据。示例的,如图1所示,该区块链数据存储系统中包括4个节点,其中,节点1为全节点,维护一份完整账本数据,节点2、节点3和节点4为分片非全节点,可以共同维护一份完整账本数据。
在本申请实施例提供的区块链网络中,当区块链网络中有新区块生成时,区块链网络中的全节点可以同步与当前区块(该新区块)对应的数据元素,更新该全节点维护的完整账本数据;非全节点(包括普通非全节点和分片非全节点)可以同步与当前区块对应的数据元素,更新该非全节点维护的部分账本数据,其中,非全节点可以存储的区块数据中部分最新数据元素的数据量可以基于实际需要确定,本申请实施例对此不做限定,且非全节点在获取到当前区块对应的数据元素后,可以将最先存储的数据元素丢弃,保证该非全节点中存储的数据元素的数据量不变。
如图1所示,假设该区块链网络中最新生成区块的区块号为30000,则节点1可以将与该区块号30000对应的数据元素同步至节点1,以更新节点1中的完整账本数据,节点2、节点3和节点4分别可以将与该区块号30000对应的数据元素同步至各自节点,以更新各节点中的部分账本数据。其中,节点1作为全节点,在与节点1对应的更新后的完整账本数据中,存储了该区块链网络生成的区块数据中区块号1至区块号30000对应的30000个数据元素;节点2、节点3和节点4作为分片非全节点,假设配置信息中配置的非全节点需要同步的部分最新数据元素为:区块数据中与最新的2000个区块号对应的数据元素,则在与节点2、节点3和节点4分别对应的更新后的部分账本数据中,分别存储了区块数据中2000个最新数据元素,该最新数据元素为与区块号28001至区块号30000对应的数据元素。
进一步的,由于节点2、节点3和节点4为分片非全节点,可以在每个节点更新该分片非全节点维护的部分账本数据后,且整个区块链网络处于区块数据中无新的数据元素生成的空闲状态时,可以获取当前区块号;基于当前区块号确定与当前区块号对应的当前分片号集合;判断当前分片号集合中是否存在至少一个未同步分片数据的分片号;若是,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据。其中,当前区块号为区块链网络中已经生成的区块数据中的最新区块号,当前分片号集合包括至少一个与分片数据的分片号。可以理解的是,通过将区块链网络中的区块数据进行分节点以及分片存储,减少区块链网络中的全节点数量,降低节点的维护成本,同时保证区块链网络中完整区块数据的份数,保证区块链网络的安全性。且该分片数据的存储过程在区块链网络处于空闲状态时进行,不会影响区块链网络中账本数据的同步存储过程,不影响区块链网络中新区块的正常生成上链。
本申请实施例提供一种区块链数据存储方法,该方法应用于如图1所示区块链网络中的每个分片非全节点中,本申请实施例以任一个分片非全节点为例,对该区块链数据存储方法进行说明。如图2所示,该方法包括:
步骤201、获取当前区块号。
在本申请实施例中,分片非全节点的终端设备中,配置文件中的配置信息可以包括至少一个分片号、分片存储目录和最大分片存储空间三个配置项,其中,分片存储目录表示在当前节点中,与分片号对应的分片数据的存储位置标识,该最大分片存储空间表示为该分片非全节点存储分片数据分配的存储空间的最大值。
在本步骤中,当前分片非全节点(区块链网络中的任一个分片非全节点)确定区块链网络处于空闲状态时,基于其配置信息中的最大分片存储空间的标记结果,判断该分片非全节点中的最大分片存储空间是否已满,若是,则确定该分片非全节点无法存储分片数据,结束该分片数据的同步过程,若不是,可以获取区块数据的当前区块号,开始分片数据的同步过程。
可以理解的是,在本申请实施例中,当每个分片非全节点存储分片数据后,需要判断最大分片存储空间是否已满,并对该最大分片存储空间的状态进行标记,以便于后续的分片存储顺利进行。
步骤202、基于当前区块号确定与当前区块号对应的当前分片号集合。
在本步骤中,当前分片号集合包括至少一个与分片数据对应的分片号。如图3所示,基于当前区块号确定与当前区块号对应的当前分片号集合的过程可以包括:
步骤2021、基于第一预设规则确定与当前区块号对应的分片号。
在本步骤中,基于第一预设规则确定与当前区块号对应的分片号的过程可以包括:确定第一参数值,该第一参数值为当前区块号与标准值之间的差值;确定第一比值,该第一比值为第一参数值与分片数据量之间的比值;确定第一比值的整数部分为与当前区块号对应的分片号,其中,该分片数据量为区块数据中与分片号对应的部分数据元素的数据量,可以理解的是,在本申请实施例中,分片数据量可以基于实际需要确定,本申请实施例对此不做限定,且该分片数据量可以通过配置于分片非全节点的配置信息中,该区块链网络中每个分片非全节点的配置信息中的分片数据量是一致的。例如,若该分片数据量为10000,表示在该区块量链网络中,与每个分片号可以对应存储区块数据中与10000个区块号对应的数据元素。
需要说明的是,在本申请实施例中,该比值的整数部分,可以基于区块链网络中所有分片非全节点的配置信息包含的所有分片号中的最小分片号确定,示例的,若所有分片号中的最小分片号为0,则可以对第一比值的整数部分进行向下取整,得到与当前区块号对应的分片号;若所有分片号中的最小分片号为1,则可以对第一比值的整数部分进行向上取整,得到与当前区块号对应的分片号。可以理解的是,在本申请实施例中,每个分片非全节点可以向其他分片非全节点同步自身配置信息中的至少一个分片号。
进一步需要说明的是,在本申请实施例中,在对第一比值的整数部分进行取值的过程中,会出现负数情况,分片号中并无负数分片号,此时,确定分片非全节点中没有已同步过分片数据的分片号。
示例的,该确定与当前区块号对应的分片号的过程可以基于如下程序实现:
步骤2022、基于与当前区块号对应的分片号确定当前分片号集合中的最大分片号。
在本步骤中,该确定当前分片号集合中的最大分片号的过程包括:确定第二参数值,该第二参数值为与当前区块号对应的分片号(shardIndex)和标准值之和;确定第三参数值,该第三参数值为第二参数值与分片数据量(ledgersPerShard)之间的乘积;判断当前区块号是否等于第三参数值;若不等于,确定与当前区块号对应的分片号和标准值之差为最大分片号(maxShardIndex);若等于,确定与当前区块号对应的分片号为最大分片号。其中,该标准值为数值1。
示例的,若ledgersPerShard=10000,所有分片非全节点的配置信息中,至少一个分片号的最小分片号为0,假设seq=28001,则可以确定的shardIndex=2,(shardIndex+1)×ledgersPerShard=30000,由于seq≠30000,则maxShardIndex=2-1=1;假设seq=3000,则基于上述步骤2021确定的shardIndex=2,(shardIndex+1)×ledgersPerShard=30000,由于seq=30000,则maxShardIndex=2。
步骤2023、确定当前分片号集合中的最小分片号。
在本步骤中,可以将所有分片非全节点的配置信息中,所有分片号中的最小分片号确定为当前分片号集合中的最小分片号。
步骤2024、确定最小分片号、最大分片号以及最小分片号和最大分片号之间的分片号为当前分片号集合。
示例的,若ledgersPerShard=10000,所有分片非全节点的配置信息中的最小分片号为0,假设seq=28001,则基于上述步骤2021至步骤2022确定的当前分片号集合为[0,1],假设seq=3000,则基于上述步骤2021至步骤2022确定的当前分片号集合为[0,1,2]。
步骤203、判断当前分片号集合中是否存在至少一个未同步分片数据的分片号。
在本申请实施例中,在每次分片数据的同步过程中,每个分片非全节点需要基于配置信息中的至少一个分片号,获取并存储与每个分片号对应的分片数据,并在同步了与该分片号对应的分片数据后,将该分片号标记为已同步分片号,将该已同步分片号同步至其他分片非全节点。
在本步骤中,可以基于当前分片号集合中包含的至少一个分片号,以及获取到的至少一个已同步分片号,判断该当前分片号集合中的至少一个分片号是否与至少一个已同步分片号一致,若不一致,确定当前分片号集合中存在至少一个未同步分片数据的分片号,该至少一个未同步分片数据的分片号为:当前分片号集合中的至少一个分片号与至少一个已同步分片号中的差异分片号,执行步骤204;若一致,确定当前分片号集合中不存在至少一个未同步分片数据的分片号,该当前分片号集合中的每个分片号对应分片数据均已完成同步,结束此次分片数据同步过程,返回步骤201。其中,已同步分片号可以为当前分片非全节点接收到的其他分片非全节点发送的已同步对应的分片数据的分片号,和/或,当前分片非全节点中标记的当前分片非全节点中已同步对应的分片数据的分片号。
示例的,若ledgersPerShard=10000,所有分片非全节点的配置信息中的最小分片号为0,假设seq=28001,确定的当前分片号集合为[0,1],获取到的已同步分片号为分片号0和分片1,当前分片号集合中的至少一个分片号为分片号0和分片1,则可以确定当前分片号集合中不存在未同步分片数据的分片号;假设seq=30000,确定的当前分片号集合为[0,2],获取到的已同步分片分片号为分片号0和分片1,当前分片号集合中的至少一个分片号为分片号0、分片1和分片2,则可以确定当前分片号集合中存在未同步分片数据的分片号2。
需要说明的是,在本申请实施例中,由于需要优先进行账本数据的同步过程,所以会存在生成大量新区块后未能进行分片数据同步的情况,因此,在分片数据同步过程中,会出现确定的当前分片号集合中存在未同步分片数据的分片号的数量大于1。示例的,若ledgersPerShard=10000,所有分片非全节点的配置信息中的最小分片号为0,假设seq=40005,确定的当前分片号集合为[0,3],由于在生成与区块号20001至30000的对应的数据元素的过程中,未进行分片数据同步过程,则可以获取到的已同步分片分片号为分片号0和分片1,则确定当前分片号集合中存在未同步分片数据的分片号2和分片号3。
步骤204、若存在,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据。
在本步骤中,如图4所示,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据的过程可以包括:
步骤2041、基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息确定待同步分片号。
在本申请实施例中,在生成分片非全节点的配置文件的过程中,对于任一分片非全节点,可以仅配置分片存储目录和最大分片存储空间两个配置项,此时,该分片非全节点可以同步任一未同步分片数据的分片号对应的分片数据。
在本步骤中,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息确定待同步分片号的过程可以是:判断当前分片非全节点的配置信息中是否包含至少一个分片号;若未包含,确定至少一个未同步分片数据的分片号中的任一分片号为待同步分片号;若包含,确定至少一个未同步分片数据的分片号与配置信息中的至少一个分片号的交集为待同步分片号。其中,若至少一个未同步分片数据的分片号与配置信息中的至少一个分片号的交集为空集,则证明该分片非全节点在此次分片数据同步过程中无需进行分片数据同步,返回步骤201。
示例的,假设当前分片非全节点的配置信息中配置的分片号包括:分片号0、分片号1和分片号2,确定的未同步分片数据的分片号为2,则将配置信息中的三个分片号和未同步分片数据的分片号取交集,确定该待同步分片号为分片号2;或者,假设当前分片非全节点的配置信息中配置的分片号包括:分片号0、分片号2和分片号3,确定的未同步分片数据的分片号为2和未同步分片数据的分片号3,则将配置信息中的三个分片号和两个未同步分片数据的分片号取交集,确定该待同步分片号为分片号2和分片号3。
步骤2042、基于第二预设规则确定与待同步分片号对应的分片数据。
在本步骤中,对于每个待同步分片号,基于第二预设规则确定与待同步分片号对应的分片数据的过程可以包括:确定第四参数值,该第四参数值为待同步分片号和分片数据量的乘积;确定第四参数值与标准值之和为区块数据中与待同步分片号对应的部分数据元素的最小区块号;确定第五参数值,该第五参数值为待同步分片号与标准值之和;确定第五参数值与分片数据量之积为区块数据中与待同步分片号对应的部分数据元素的最大区块号;确定区块数据中与最小区块号、最大区块号以及最小区块号和最大区块号之间的区块号对应的多个数据元素为与待同步分片号对应的分片数据。其中,标准值为1。
示例的,该确定与待同步分片号对应的分片数据的过程可以基于如下程序实现:
[shardIndex*ledgersPerShard+1,(shardIndex+1)*ledgersPerShard]
其中,shardIndex*ledgersPerShard+1表示与待同步分片号对应的部分数据元素的最小区块号,shardIndex+1)*ledgersPerShard表示与待同步分片号对应的部分数据元素的最大区块号,则确定区块数据中与shardIndex*ledgersPerShard+1对应的数据元素、与最大区块号shardIndex+1)*ledgersPerShard对应的数据元素,以及与最小区块号和最大区块号之间的区块号对应的每个数据元素为与待同步分片号对应的分片数据。
步骤2043、获取与待同步分片号对应的分片数据。
在本步骤中,获取与待同步分片号对应的分片数据的过程可以是:向该区块链网络中的其他节点(全节点和/或非全节点)发送分片数据获取请求,该分片数据获取请求中包含与待同步分片号对应的部分数据元素的最小区块号和最大区块号,对于全节点,在接受到该分片数据获取请求后,可以基于该最小区块号和最大区块号,从全节点维护的完整账本数据中获取与该最小区块号、最大区块号,以及最小区块号和最大区块号之间的每个区块号对应的多个数据元素,将该多个数据元素打包发送给该分片非全节点;对于分片非全全节点,在接受到该分片数据获取请求后,可以基于该最小区块号和最大区块号,从分片非全节点维护的部分账本数据中获取与该最小区块号、最大区块号,以及最小区块号和最大区块号之间的每个区块号对应的多个数据元素,若该部分账本数据中不包括该多个数据元素,或者,该部分账本数据中包括该多个数据元素中的部分数据元素,获取该部分数据元素,并继续从该分片非全节点的分片数据中进行查找,获取该多个数据元素中的剩余数据元素。
可以理解的是,在本申请实施例中,一旦涉及到区块数据中的数据元素的获取过程,对于分片非全节点,均可以先从该分片非全节点维护的部分账本数据中,获取该数据元素,若该部分账本数据不包含该数据元素,或者,包含部分数据元素,则可以从该分片非全节点的分片数据中查找其余数据元素,提高区块数据中数据元素的获取效率。
步骤2044、将分片数据存储于当前分片非全节点中。
在本步骤中,将分片数据存储于当前分片非全节点中的过程可以是:获取当前分片非全节点的配置信息中的分片存储目录,计算该分片存储目录中已经存储的至少一个分片数据的数据量,以及与待同步分片号对应的分片数据的数据量的和值,如果和值大于最大分片存储空间,标记最大分片存储空间已满;反之,将该待同步分片号对应的分片数据存储至分片存储目录,将该待同步分片号标记为已同步,并向其他分片非全节点广播该已同步分片号。
可以理解的是,在本申请实施例提供的区块链网络中,同一分片号可以配置于不同分片非全节点的配置信息中,当某一分片非全节点由于最大分片存储空间不足无法存储该分片非全节点的配置信息中的任一分片号对应的分片数据时,该分片号对应的分片数据可能存储于其他分片非全节点中,可以保证分片数据的完整性,以及保证区块链网络中完整账本数据的份数。例如,分片非全节点A1的配置信息中配置的分片号为分片号0和分片号3,分片非全节点A2的配置信息中配置的分片号为分片号3,假设确定分片号3为待同步分片号,分片非全节点A1由于最大分片存储空间不足无法存储该分片号3对应的分片数据,但是该分片号3对应的分片数据可以存储于分片非全节点A2,保证分片数据的完整性。
可选的,请继续参考图1,假设该区块链网络中最新生成区块的区块号为30000,若该区块链网络的区块数据中继续生成新的数据元素,对新的数据元素的分片存储存储过程可以是:在区块链网络建立之初,在分片非全节点配置文件的配置信息中配合足够多的分片号和存储空间,以满足更多的分片数据的分片存储,或者,在该区块链网络中加入新的分片非全节点,用于对区块数据中后续生成的数据元素进行分片存储,或者,修改现有区块链网络中至少一个分片非全节点的配置文件中的分片号配置项,增加可用于对区块数据中后续生成的数据元素进行分片存储的分片号。
可以理解的是,在本申请实施例中,若对某一分片非全节点的配置文件中的配置信息进行了修改,在该分片非全节点的终端设备重启后,需要判断上一次分片数据的同步过程是否尚未完成,如果未完成,则继续完成上一次分片数据的同步过程。
综上所述,本申请实施例提供的区块链数据存储方法,可以获取当前区块号;基于当前区块号确定与当前区块号对应的当前分片号集合;判断当前分片号集合中是否存在至少一个未同步分片数据的分片号;若是,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据。减少了区块链网络中全节点的数量减低了节点的维护成本,同时保证区块链网络中有足够份数的完整区块数据,保证了区块链网络的安全性。
本申请实施例提供一种区块链数据存储装置,如图5所示,该装置30包括:
获取模块301,被配置为获取当前区块号;
确定模块302,被配置为基于当前区块号确定与当前区块号对应的当前分片号集合,当前分片号集合包括至少一个与分片数据对应的分片号,分片数据为区块数据中的部分数据元素;
判断模块303,被配置为判断当前分片号集合中是否存在至少一个未同步分片数据的分片号;
存储模块304,被配置为若存在,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据。
可选的,确定模块302,被配置为:
基于第一预设规则确定与当前区块号对应的分片号;
基于与当前区块号对应的分片号确定当前分片号集合中的最大分片号;
确定当前分片号集合中的最小分片号;
确定最小分片号、最大分片号以及最小分片号和最大分片号之间的分片号为当前分片号集合。
可选的,确定模块302,被配置为:
确定第一参数值,第一参数值为当前区块号与标准值之间的差值;
确定第一比值,第一比值为第一参数值与分片数据量之间的比值,分片数据量为区块数据中与分片号对应的部分数据元素的数据量;
确定第一比值的整数部分为与当前区块号对应的分片号。
可选的,确定模块302,被配置为:
确定第二参数值,第二参数值为与当前区块号对应的分片号和标准值之和;
确定第三参数值,第三参数值为第二参数值与分片数据量之间的乘积;
判断当前区块号是否等于第三参数值;
若不等于,确定与当前区块号对应的分片号和标准值之差为最大分片号;
若等于,确定与当前区块号对应的分片号为最大分片号。
可选的,存储模块304,被配置为:
基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息确定待同步分片号;
基于第二预设规则确定与待同步分片号对应的分片数据;
获取与待同步分片号对应的分片数据;
将分片数据存储于当前分片非全节点中。
可选的,存储模块304,被配置为:
判断当前分片非全节点的配置信息中是否包含至少一个分片号;
若未包含,确定至少一个未同步分片数据的分片号中的任一分片号为待同步分片号;
若包含,确定至少一个未同步分片数据的分片号与配置信息中的至少一个分片号的交集为待同步分片号。
可选的,存储模块304,被配置为:
确定第四参数值,第四参数值为待同步分片号和分片数据量的乘积;
确定第四参数值与标准值之和为区块数据中与待同步分片号对应的部分数据元素的最小区块号;
确定第五参数值,第五参数值为待同步分片号与标准值之和;
确定第五参数值与分片数据量之积为区块数据中与待同步分片号对应的部分数据元素的最大区块号;
确定区块数据中与最小区块号、最大区块号以及最小区块号和最大区块号之间的区块号对应的多个数据元素为与待同步分片号对应的分片数据。
综上所述,本申请实施例提供的区块链数据存储装置,可以获取当前区块号;基于当前区块号确定与当前区块号对应的当前分片号集合;判断当前分片号集合中是否存在至少一个未同步分片数据的分片号;若是,基于至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与当前分片非全节点对应的分片数据。减少了区块链网络中全节点的数量减低了节点的维护成本,同时保证区块链网络中有足够份数的完整区块数据,保证了区块链网络的安全性。
图6是根据一示例性实施例示出的一种计算机设备,该计算机设备包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM403中,还存储有系统操作所需的各种程序和数据。CPU401、ROM402以及RAM403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
特别地,根据本申请的实施例,上文图2至图4描述的过程可以被实现为计算机软件程序。例如,本申请的各个实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的方法、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、确定模块、判断模块和存储模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,获取模块还可以被描述为“用于获取当前区块号的获取模块”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中描述的区块链数据存储方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种区块链数据存储方法,其特征在于,包括:
获取当前区块号;
基于所述当前区块号确定与所述当前区块号对应的当前分片号集合,所述当前分片号集合包括至少一个与分片数据对应的分片号,所述分片数据为区块数据中的部分数据元素;
判断所述当前分片号集合中是否存在至少一个未同步分片数据的分片号;
若存在,基于所述至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与所述当前分片非全节点对应的分片数据。
2.根据权利要求1所述的方法,其特征在于,所述基于所述当前区块号确定与所述当前区块号对应的当前分片号集合,包括:
基于第一预设规则确定与所述当前区块号对应的分片号;
基于与所述当前区块号对应的分片号确定所述当前分片号集合中的最大分片号;
确定所述当前分片号集合中的最小分片号;
确定所述最小分片号、所述最大分片号以及所述最小分片号和所述最大分片号之间的分片号为当前分片号集合。
3.根据权利要求2所述的方法,其特征在于,所述基于第一预设规则确定与所述当前区块号对应的分片号,包括:
确定第一参数值,所述第一参数值为所述当前区块号与标准值之间的差值;
确定第一比值,所述第一比值为所述第一参数值与分片数据量之间的比值,所述分片数据量为区块数据中与分片号对应的部分数据元素的数据量;
确定所述第一比值的整数部分为与所述当前区块号对应的分片号。
4.根据权利要求2所述的方法,其特征在于,所述基于与所述当前区块号对应的分片号确定所述当前分片号集合中的最大分片号,包括:
确定第二参数值,所述第二参数值为与所述当前区块号对应的分片号和标准值之和;
确定第三参数值,所述第三参数值为所述第二参数值与分片数据量之间的乘积;
判断所述当前区块号是否等于所述第三参数值;
若不等于,确定与所述当前区块号对应的分片号和标准值之差为所述最大分片号;
若等于,确定与所述当前区块号对应的分片号为所述最大分片号。
5.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与所述当前分片非全节点对应的分片数据,包括:
基于所述至少一个未同步分片数据的分片号和当前分片非全节点的配置信息确定待同步分片号;
基于第二预设规则确定与所述待同步分片号对应的分片数据;
获取与所述待同步分片号对应的分片数据;
将所述分片数据存储于所述当前分片非全节点中。
6.根据权利要求5所述的方法,其特征在于,所述基于所述至少一个未同步分片数据的分片号和当前分片非全节点的配置信息确定至少一个待同步分片号,包括:
判断当前分片非全节点的配置信息中是否包含至少一个分片号;
若未包含,确定所述至少一个未同步分片数据的分片号中的任一分片号为待同步分片号;
若包含,确定所述至少一个未同步分片数据的分片号与所述配置信息中的至少一个分片号的交集为待同步分片号。
7.根据权利要求5所述的方法,其特征在于,所述基于第二预设规则确定与所述待同步分片号对应的分片数据,包括:
确定第四参数值,所述第四参数值为所述待同步分片号和分片数据量的乘积;
确定所述第四参数值与标准值之和为区块数据中与所述待同步分片号对应的部分数据元素的最小区块号;
确定第五参数值,所述第五参数值为所述待同步分片号与标准值之和;
确定所述第五参数值与所述分片数据量之积为区块数据中与所述待同步分片号对应的部分数据元素的最大区块号;
确定区块数据中与所述最小区块号、所述最大区块号以及所述最小区块号和所述最大区块号之间的区块号对应的多个数据元素为与所述待同步分片号对应的分片数据。
8.一种区块链数据存储装置,其特征在于,包括:
获取模块,被配置为获取当前区块号;
确定模块,被配置为基于所述当前区块号确定与所述当前区块号对应的当前分片号集合,所述当前分片号集合包括至少一个与分片数据对应的分片号,所述分片数据为区块数据中的部分数据元素;
判断模块,被配置为判断所述当前分片号集合中是否存在至少一个未同步分片数据的分片号;
存储模块,被配置为若是,基于所述至少一个未同步分片数据的分片号和当前分片非全节点的配置信息存储与所述当前分片非全节点对应的分片数据。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在存储器并可在处理器上运行的计算机程序,所述处理器用于执行所述程序时实现如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序用于实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011424777.2A CN112463889A (zh) | 2020-12-08 | 2020-12-08 | 区块链数据存储方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011424777.2A CN112463889A (zh) | 2020-12-08 | 2020-12-08 | 区块链数据存储方法、装置、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112463889A true CN112463889A (zh) | 2021-03-09 |
Family
ID=74800989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011424777.2A Pending CN112463889A (zh) | 2020-12-08 | 2020-12-08 | 区块链数据存储方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463889A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420017A (zh) * | 2021-06-21 | 2021-09-21 | 上海特高信息技术有限公司 | 一种机器人导航算法训练数据集获取的区块链应用方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992624A (zh) * | 2019-03-15 | 2019-07-09 | 深圳前海微众银行股份有限公司 | 一种区块链Block chain的同步存储方法、装置及计算机设备 |
CN110086856A (zh) * | 2019-04-01 | 2019-08-02 | 深圳前海达闼云端智能科技有限公司 | 区块链节点的控制方法、装置、存储介质及电子设备 |
CN111756829A (zh) * | 2020-06-19 | 2020-10-09 | 深圳市蔚链科技有限公司 | 账本数据同步方法、装置、设备和存储介质 |
-
2020
- 2020-12-08 CN CN202011424777.2A patent/CN112463889A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992624A (zh) * | 2019-03-15 | 2019-07-09 | 深圳前海微众银行股份有限公司 | 一种区块链Block chain的同步存储方法、装置及计算机设备 |
CN110086856A (zh) * | 2019-04-01 | 2019-08-02 | 深圳前海达闼云端智能科技有限公司 | 区块链节点的控制方法、装置、存储介质及电子设备 |
CN111756829A (zh) * | 2020-06-19 | 2020-10-09 | 深圳市蔚链科技有限公司 | 账本数据同步方法、装置、设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420017A (zh) * | 2021-06-21 | 2021-09-21 | 上海特高信息技术有限公司 | 一种机器人导航算法训练数据集获取的区块链应用方法 |
CN113420017B (zh) * | 2021-06-21 | 2023-10-13 | 上海特高信息技术有限公司 | 一种机器人导航算法训练数据集获取的区块链应用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108683539B (zh) | 区块链网络的管理方法、装置、介质及电子设备 | |
CN110442579B (zh) | 一种状态树数据存储方法、同步方法及设备和存储介质 | |
EP3125501A1 (en) | File synchronization method, server, and terminal | |
CN109413127A (zh) | 一种数据同步方法和装置 | |
CN112182099A (zh) | 交易验证方法及装置 | |
CN109871382A (zh) | 一种数据表接入标准库的实现方法和装置 | |
CN110392121B (zh) | 平行链区块生成方法、设备和存储介质 | |
CN110543469B (zh) | 一种数据库版本管理方法及服务器 | |
CN111651426B (zh) | 数据迁移方法、装置及计算机可读存储介质 | |
CN112463889A (zh) | 区块链数据存储方法、装置、设备和介质 | |
CN110322350B (zh) | 裁剪共识网络中空区块的方法、装置、设备和存储介质 | |
CN113783916A (zh) | 信息同步方法及装置 | |
CN109842482B (zh) | 一种信息同步方法、系统及终端设备 | |
CN115982279A (zh) | 数据同步方法、装置、系统和计算机设备 | |
CN114253924A (zh) | 一种同步方法、设备和存储介质 | |
CN115086355A (zh) | 基于区块链的用户信息处理方法及装置 | |
CN112312212B (zh) | 数字电视系统的升级方法及相关装置 | |
CN118132645A (zh) | 一种数据同步的方法和装置 | |
CN105589888B (zh) | 一种设备中管理文件的方法和装置 | |
CN112000671A (zh) | 基于区块链的数据库表处理方法、装置及系统 | |
CN112732728A (zh) | 一种数据同步方法和系统 | |
CN112398885B (zh) | 数据传输方法和装置 | |
CN113760860B (zh) | 一种数据读取方法和装置 | |
CN107656800B (zh) | 一种确定业务的方法和设备 | |
CN116821117B (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 |