CN109446208A - 一种数据存储方法、计算机可读存储介质及服务器 - Google Patents
一种数据存储方法、计算机可读存储介质及服务器 Download PDFInfo
- Publication number
- CN109446208A CN109446208A CN201811022476.XA CN201811022476A CN109446208A CN 109446208 A CN109446208 A CN 109446208A CN 201811022476 A CN201811022476 A CN 201811022476A CN 109446208 A CN109446208 A CN 109446208A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- acquisition system
- request
- data acquisition
- 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 32
- 239000000284 extract Substances 0.000 claims abstract description 14
- 238000012795 verification Methods 0.000 claims description 26
- 238000013524 data verification Methods 0.000 claims description 17
- 238000000605 extraction Methods 0.000 claims description 5
- 238000013500 data storage Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 108010001267 Protein Subunits Proteins 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000010923 batch production Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
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)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于计算机技术领域,尤其涉及一种基于区块链的数据存储方法、计算机可读存储介质及服务器。所述方法接收数据操作请求,并从所述数据操作请求中提取预设的请求类型字段;根据所述请求类型字段的取值确定所述数据操作请求的请求类型;若所述数据操作请求的请求类型为批量入链请求,则从所述批量入链请求中提取预设的数据总量字段;根据所述数据总量字段的取值从所述批量入链请求中提取待存储的数据集合,所述数据集合由各条待存储的数据组成;使用数据校验规则对所述数据集合进行数据校验;若所述数据集合通过数据校验,则将所述数据集合批量存储入预设的区块链系统中,保证了同一批数据在区块链系统的一致性,且提升了数据存储的效率。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种数据存储方法、计算机可读存储介质及服务器。
背景技术
区块链一般被认为是一个分布式的数据库,其使用方式为多个应用系统共同往这个数据库里写入数据。在一次写操作过程中,应用系统发起数据入链请求,数据会通过区块链提供的写入接口将数据写到区块链中,并同步到其他节点。
现有区块链系统的数据写入均采用有一条写请求便发起一次写入操作,与区块链系统的交互较多,这样不仅对区块链系统造成了较大的压力,而且不满足一些批量的业务场景。因为有些业务场景需要批量写入一批数据,但中间如果有一条数据有问题,是需要将整批数据回滚的。但现有的区块链写入方案并不能将之前已经写入成功的数据进行回滚。从而不能保证这一批数据在区块链系统的一致性。
发明内容
有鉴于此,本发明实施例提供了一种数据存储方法、计算机可读存储介质及服务器,以解决现有技术往区块链系统中批量写入数据时与区块链系统的交互较多,对区块链系统造成了较大的压力,且不能保证数据在区块链系统的一致性的问题。
本发明实施例的第一方面提供了一种数据存储方法,可以包括:
接收数据操作请求,并从所述数据操作请求中提取预设的请求类型字段;
根据所述请求类型字段的取值确定所述数据操作请求的请求类型;
若所述数据操作请求的请求类型为批量入链请求,则从所述批量入链请求中提取预设的数据总量字段,所述数据总量字段用于标识待存储的数据的总条数;
根据所述数据总量字段的取值从所述批量入链请求中提取待存储的数据集合,所述数据集合由各条待存储的数据组成;
使用预设的数据校验规则对所述数据集合进行数据校验;
若所述数据集合通过数据校验,则将所述数据集合批量存储入预设的区块链系统中。
本发明实施例的第二方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如下步骤:
接收数据操作请求,并从所述数据操作请求中提取预设的请求类型字段;
根据所述请求类型字段的取值确定所述数据操作请求的请求类型;
若所述数据操作请求的请求类型为批量入链请求,则从所述批量入链请求中提取预设的数据总量字段,所述数据总量字段用于标识待存储的数据的总条数;
根据所述数据总量字段的取值从所述批量入链请求中提取待存储的数据集合,所述数据集合由各条待存储的数据组成;
使用预设的数据校验规则对所述数据集合进行数据校验;
若所述数据集合通过数据校验,则将所述数据集合批量存储入预设的区块链系统中。
本发明实施例的第三方面提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如下步骤:
接收数据操作请求,并从所述数据操作请求中提取预设的请求类型字段;
根据所述请求类型字段的取值确定所述数据操作请求的请求类型;
若所述数据操作请求的请求类型为批量入链请求,则从所述批量入链请求中提取预设的数据总量字段,所述数据总量字段用于标识待存储的数据的总条数;
根据所述数据总量字段的取值从所述批量入链请求中提取待存储的数据集合,所述数据集合由各条待存储的数据组成;
使用预设的数据校验规则对所述数据集合进行数据校验;
若所述数据集合通过数据校验,则将所述数据集合批量存储入预设的区块链系统中。
本发明实施例与现有技术相比存在的有益效果是:本发明实施例在接收到数据操作请求后,首先对其请求类型进行判断,若其为批量入链请求,则按照批量处理的方式对其进行处理,具体地,根据其中的数据总量字段确定待存储的数据的总条数,然后提取出由各条待存储的数据组成的数据集合,并对所述数据集合进行数据校验,只有当整个数据集合都通过了数据校验后,才会将整个数据集合批量存储入区块链系统中,从而保证了这一批数据在区块链系统的一致性,而且只通过一条批量入链请求即可进行批量数据的操作,而不用为每条数据单独发起一条入链请求,大大减少了与区块链系统间的交互过程,提升了数据存储的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例中一种数据存储方法的一个实施例流程图;
图2为批量入链请求的帧结构示意图;
图3为使用目标数据校验规则对数据集合进行数据校验的示意流程图;
图4为区块段中的每个区块的生成过程的示意图;
图5为本发明实施例中一种数据存储装置的一个实施例结构图;
图6为本发明实施例中一种服务器的示意框图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中一种数据存储方法的一个实施例可以包括:
步骤S101、接收数据操作请求,并从所述数据操作请求中提取预设的请求类型字段。
业务系统在需要对预设的区块链系统进行数据操作时,首先向所述区块链系统中的任意一个节点服务器发送数据操作请求,接收该数据操作请求的节点服务器即为本发明实施例的实施主体。
一般地,所述请求类型字段可以设置在所述数据操作请求的起始位置,也可以设置在所述数据操作请求的末尾位置或者其它位置,所述请求类型字段占用固定的字节数,例如,4字节、8字节或者其它取值等等。
步骤S102、根据所述请求类型字段的取值确定所述数据操作请求的请求类型。
在本实施例的一种具体实现中,若所述请求类型字段的取值为0x0001时,则表示所述数据操作请求的请求类型为批量入链请求,若所述请求类型字段的取值为0x0000时,则表示所述数据操作请求的请求类型为单数据入链请求。当然,这仅仅只是一个示例,实际应用中,可以根据具体情况设置各种请求类型对应的字段取值。
步骤S103、判断所述数据操作请求的请求类型是否为批量入链请求。
若所述数据操作请求的请求类型为单数据入链请求,则执行步骤S104,若所述数据操作请求的请求类型为批量入链请求,则执行步骤S105及其后续步骤。
步骤S104、将所述单数据入链请求中的单条数据存储入预设的区块链系统中。
单条数据存储入区块链系统为现有技术中的常用方式,本实施例在此不再赘述。
步骤S105、从所述批量入链请求中提取预设的数据总量字段。
图2所示即为所述批量入链请求的一种具体帧结构,其中:
MSG_TYPE为请求类型字段。
SYS_ID为系统标识字段,其取值为目标业务系统的业务系统标识,所述目标业务系统为发送所述数据操作请求的业务系统,通过该字段可以确定出该批量入链请求具体是由哪一个业务系统发送的,该字段占用固定的字节数,例如,4字节、8字节或者其它取值等等。
DATA_NUM为数据总量字段,用于标识待存储的数据的总条数,即本次操作需要对多少条数据同时进行入链操作,该字段占用固定的字节数,例如,4字节、8字节或者其它取值等等。
DATA_BODY为数据主体字段,即本次执行入链操作的具体数据,由多个数据帧(FRAME)组成,每个FRAME均由一条数据正文DATA以及一条数据终止标志END构成。
需要注意的是,图2所示仅为所述批量入链请求的一种可能的帧结构,实际应用中,还可以根据具体情况设置其它的帧结构。
步骤S106、根据所述数据总量字段的取值从所述批量入链请求中提取待存储的数据集合。
所述数据集合由各条待存储的数据组成。具体的,按顺序读取数据主体字段的数据,当读取到终止标志时,则表明第1条数据已经读取完毕,将该数据加入到所述数据集合中,然后再继续读取数据主体字段的数据,当读取到终止标志时,则表明第2条数据已经读取完毕,将该数据加入到所述数据集合中,……,以此类推,直至读取到第N个数据(N为所述数据总量字段的取值)的终止标志时,则表明第N个数据(即最后一个数据)已经读取完毕,将该数据加入到所述数据集合中。
步骤S107、使用预设的数据校验规则对所述数据集合进行数据校验。
其中,所述数据校验规则可以根据实际情况进行设置。优选地,考虑到不同的业务系统可能存在各不相同的数据校验规则,本方案中预先设置了如下所示的数据校验规则库,为各种业务系统配置对应的数据校验规则:
业务系统 | 数据校验规则 |
业务系统1 | 数据校验规则A |
业务系统2 | 数据校验规则B |
业务系统3 | 数据校验规则C |
…… | …… |
当进行数据校验时,首先从所述数据操作请求中提取目标业务系统的业务系统标识,然后在所述数据校验规则库中查找目标校验规则,所述目标校验规则为与所述业务系统标识对应的数据校验规则,例如,若目标业务系统为业务系统3,则通过查询数据校验规则库,可以确定与之对应的数据校验规则为数据校验规则C,将数据校验规则C确定为所述目标校验规则。
最后,通过如图3所示的过程使用所述目标数据校验规则对所述数据集合进行数据校验:
步骤S1071、从所述数据集合中任意选取一条候选数据作为当前校验数据。
所述候选数据为预设的校验标识位为第一位值的数据,在本实施例中,可以为所述数据集合中每一条数据均设置一个校验标识位,用以标识该数据是否已经进行过数据校验。当某一数据的校验标识位为第一位值时,则说明该数据尚未进行过数据校验,当某一数据的校验标识位为第二位值时,则说明该数据已经进行过数据校验。第一位值和第二位值的具体取值可以根据实际情况进行设置,在本实施例中,优选将第一位值设置为0,将第二位值设置为1。
在初始状态下,所述数据集合中的所有数据的校验标识位的取值均为第一位值。
步骤S1072、判断所述当前校验数据是否满足所述目标数据校验规则。
若所述当前校验数据不满足所述目标数据校验规则,则执行步骤S1073,若所述当前校验数据满足所述目标数据校验规则,则执行步骤S1074及其后续步骤。
步骤S1073、判定所述数据集合未通过数据校验。
也即只要所述数据集合中存在任意一条数据不满足所述目标数据校验规则,则判定所述数据集合未通过数据校验。
步骤S1074、将所述当前校验数据的校验标识位设置为第二位值,并将预设的计数值增加一个计数单位。
在本实施例中,可以将所述计数值即为COUNT,该计数值用于统计数据校验成功的数据的数目,在初始状态下,其取值被初始化为0。
当完成一条数据的校验后,则将其增加一个计数单位,即:
COUNT=COUNT+1
步骤S1075、判断所述计数值是否等于所述数据总量字段的取值。
若所述计数值小于所述数据总量字段的取值,则返回执行步骤S1071及其后续步骤,若所述计数值等于所述数据总量字段的取值,则执行步骤S1076。
步骤S1076、判定所述数据集合通过数据校验。
也即只有在所述数据集合中的所有数据均满足所述目标数据校验规则时,才判定所述数据集合通过数据校验。
步骤S108、判断所述数据集合是否通过数据校验。
若所述数据集合未通过数据校验,则执行步骤S109,若所述数据集合通过数据校验,则执行步骤S110。
步骤S109、向目标业务系统发送入链失败消息。
在所述入链失败消息中可以携带校验失败的数据,所述目标业务系统在接收到所述入链失败消息后,可以在对数据进行修正后重新发起一条新的批量入链请求。
步骤S110、将所述数据集合批量存储入所述区块链系统中。
具体地,首先生成与所述数据集合对应的区块段,所述区块段中包括与所述数据集合中的数据数量相等的区块,且所述区块段中的每个区块均根据所述数据集合中的一条数据生成。
所述区块段中的每个区块的生成过程包括:判断待生成区块是否为所述区块段中的第一个区块,若所述待生成区块为所述区块段中的第一个区块,则将最新添加入所述本地区块链中的区块确定为链尾区块,若所述待生成区块不是所述区块段中的第一个区块,则将最新添加入所述区块段中的区块确定为链尾区块,对所述链尾区块的区块头进行特征运算,得到第一特征值,对所述数据集合中与所述待生成区块对应的数据进行特征运算,得到第二特征值,根据所述第一特征值和所述第二特征值生成所述待生成区块的区块头,并根据所述数据集合中与所述待生成区块对应的数据生成所述待生成区块的区块主体,从而生成该区块。
如图4所示,所述区块段是由一个个的区块顺序连接组成的,每个区块记录所述数据集合中的一条数据,首先在服务器中为新区块开辟出对应的存储空间,每个区块所占用的空间分为两部分,一部分是区块头,区块头中存储的内容是固定的(包括区块头特征值、区块主体特征值、版本号、难度值和时间戳等),则其占据的空间也是固定的,另一部分是区块主体,区块主体中存储的内容即为需写入的数据,其长度是可变的。因此首先获取需写入的数据的长度,然后加上固定的区块头的长度,则可确定出新区块所需占用的存储空间。在服务器中,为其开辟出存储空间存储该新区块,需要注意的是,新区块的存储位置无需紧邻着上一区块,而是任意一块未使用的存储空间即可,在开辟了新的空间后,将上一区块的指针指向新区块的存储空间地址。
从区块链中获取前一区块的区块头中的所有信息,并基于该前一区块的区块头中的所有信息得到新区块的区块头特征值,并对将要存入新区块的区块主体中的数据进行特征值计算,得到新区块的区块主体特征值(HASH值),进而,将前一区块的区块头特征值(即第一特征值)、新区块的区块主体特征值(即第二特征值)存储至新区块的区块头;将需写入的数据存储至新区块的区块主体,从而生成新区块,使得新区块与前一区块通过前一区块的区块头特征值相关,因而实现了将区块链中的区块串联起来的目的,使得对区块中任何信息的篡改,均能够通过区块的区块头中所存储的上一个区块的区块头特征值的追溯而检测到,从而使得保证了信息的安全性。
最后,将所述区块段存储入本地区块链中,并在所述区块链系统中广播所述区块段,以使所述区块链系统中的各个节点服务器将所述区块段存储入各自的本地区块链中。
具体地,第一节点服务器将所述区块段发送至第1级广播节点服务器,所述第一节点服务器为接收所述数据操作请求的节点服务器,所述第1级广播节点服务器为与所述第一节点服务器连接的节点服务器;所述第1级广播节点服务器在接收到所述区块段后,将所述区块段发送至第2级广播节点服务器,所述第2级广播节点服务器为与所述第1级广播节点服务器连接的节点服务器;所述第2级广播节点服务器在接收到所述区块段后,将所述区块段发送至第3级广播节点服务器,所述第3级广播节点服务器为与所述第2级广播节点服务器连接的节点服务器;......;以此类推,第m级广播节点服务器在接收到所述区块段后,将所述区块段发送至第m+1级广播节点服务器,直至所述区块链系统中的各个节点服务器均接收到所述区块段并将其存储入各自的本地区块链中为止,所述第m+1级广播节点服务器为与所述第m级广播节点服务器连接的节点服务器,m为大于或等于1的整数。
综上所述,本发明实施例在接收到数据操作请求后,首先对其请求类型进行判断,若其为批量入链请求,则按照批量处理的方式对其进行处理,具体地,根据其中的数据总量字段确定待存储的数据的总条数,然后提取出由各条待存储的数据组成的数据集合,并对所述数据集合进行数据校验,只有当整个数据集合都通过了数据校验后,才会将整个数据集合批量存储入区块链系统中,从而保证了这一批数据在区块链系统的一致性,而且只通过一条批量入链请求即可进行批量数据的操作,而不用为每条数据单独发起一条入链请求,大大减少了与区块链系统间的交互过程,提升了数据存储的效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
对应于上文实施例所述的一种数据存储方法,图5示出了本发明实施例提供的一种数据存储装置的一个实施例结构图。
本实施例中,一种数据存储装置可以包括:
请求接收模块501,用于接收数据操作请求,并从所述数据操作请求中提取预设的请求类型字段;
请求类型确定模块502,用于根据所述请求类型字段的取值确定所述数据操作请求的请求类型;
数据总量字段提取模块503,用于若所述数据操作请求的请求类型为批量入链请求,则从所述批量入链请求中提取预设的数据总量字段,所述数据总量字段用于标识待存储的数据的总条数;
数据集合提取模块504,用于根据所述数据总量字段的取值从所述批量入链请求中提取待存储的数据集合,所述数据集合由各条待存储的数据组成;
数据校验模块505,用于使用预设的数据校验规则对所述数据集合进行数据校验;
批量存储模块506,用于若所述数据集合通过数据校验,则将所述数据集合批量存储入预设的区块链系统中。
进一步地,所述数据校验模块可以包括:
业务系统标识提取单元,用于从所述数据操作请求中提取目标业务系统的业务系统标识,所述目标业务系统为发送所述数据操作请求的业务系统;
目标校验规则查找单元,用于在预设的数据校验规则库中查找目标校验规则,所述目标校验规则为与所述业务系统标识对应的数据校验规则;
数据校验单元,用于使用所述目标数据校验规则对所述数据集合进行数据校验。
进一步地,所述数据校验单元可以包括:
当前校验数据选取子单元,用于从所述数据集合中任意选取一条候选数据作为当前校验数据,所述候选数据为预设的校验标识位为第一位值的数据;
第一判断子单元,用于判断所述当前校验数据是否满足所述目标数据校验规则;
第一判定子单元,用于若所述当前校验数据不满足所述目标数据校验规则,则判定所述数据集合未通过数据校验;
第一处理子单元,用于若所述当前校验数据满足所述目标数据校验规则,则将所述当前校验数据的校验标识位设置为第二位值,并将预设的计数值增加一个计数单位;
第二判断子单元,用于判断所述计数值是否等于所述数据总量字段的取值;
第二判定子单元,用于若所述计数值等于所述数据总量字段的取值,则判定所述数据集合通过数据校验。
进一步地,所述批量存储模块可以包括:
区块段生成单元,用于生成与所述数据集合对应的区块段,所述区块段中包括与所述数据集合中的数据数量相等的区块,且所述区块段中的每个区块均根据所述数据集合中的一条数据生成;
区块段存储单元,用于将所述区块段存储入本地区块链中,并在所述区块链系统中广播所述区块段,以使所述区块链系统中的各个节点服务器将所述区块段存储入各自的本地区块链中。
进一步地,所述区块段生成单元可以包括:
区块判断子单元,用于判断待生成区块是否为所述区块段中的第一个区块;
第一链尾确定子单元,用于若所述待生成区块为所述区块段中的第一个区块,则将最新添加入所述本地区块链中的区块确定为链尾区块;
第二链尾确定子单元,用于若所述待生成区块不是所述区块段中的第一个区块,则将最新添加入所述区块段中的区块确定为链尾区块;
第一特征值计算子单元,用于对所述链尾区块的区块头进行特征运算,得到第一特征值;
第二特征值计算子单元,用于对所述数据集合中与所述待生成区块对应的数据进行特征运算,得到第二特征值;
区块生成子单元,用于根据所述第一特征值和所述第二特征值生成所述待生成区块的区块头,并根据所述数据集合中与所述待生成区块对应的数据生成所述待生成区块的区块主体。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
图6示出了本发明实施例提供的一种服务器的示意框图,为了便于说明,仅示出了与本发明实施例相关的部分。
在本实施例中,所述服务器6可包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机可读指令62,例如执行上述的数据存储方法的计算机可读指令。所述处理器60执行所述计算机可读指令62时实现上述各个数据存储方法实施例中的步骤,例如图1所示的步骤S101至S110。或者,所述处理器60执行所述计算机可读指令62时实现上述各装置实施例中各模块/单元的功能,例如图5所示模块501至506的功能。
示例性的,所述计算机可读指令62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机可读指令62在所述服务器6中的执行过程。
所述处理器60可以是中央处理单元(Central Processing Unit,CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61可以是所述服务器6的内部存储单元,例如服务器6的硬盘或内存。所述存储器61也可以是所述服务器6的外部存储设备,例如所述服务器6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述服务器6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机可读指令以及所述服务器6所需的其它指令和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干计算机可读指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储计算机可读指令的介质。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
接收数据操作请求,并从所述数据操作请求中提取预设的请求类型字段;
根据所述请求类型字段的取值确定所述数据操作请求的请求类型;
若所述数据操作请求的请求类型为批量入链请求,则从所述批量入链请求中提取预设的数据总量字段,所述数据总量字段用于标识待存储的数据的总条数;
根据所述数据总量字段的取值从所述批量入链请求中提取待存储的数据集合,所述数据集合由各条待存储的数据组成;
使用预设的数据校验规则对所述数据集合进行数据校验;
若所述数据集合通过数据校验,则将所述数据集合批量存储入预设的区块链系统中。
2.根据权利要求1所述的数据存储方法,其特征在于,所述使用预设的数据校验规则对所述数据集合进行数据校验包括:
从所述数据操作请求中提取目标业务系统的业务系统标识,所述目标业务系统为发送所述数据操作请求的业务系统;
在预设的数据校验规则库中查找目标校验规则,所述目标校验规则为与所述业务系统标识对应的数据校验规则;
使用所述目标数据校验规则对所述数据集合进行数据校验。
3.根据权利要求2所述的数据存储方法,其特征在于,所述使用所述目标数据校验规则对所述数据集合进行数据校验包括:
从所述数据集合中任意选取一条候选数据作为当前校验数据,所述候选数据为预设的校验标识位为第一位值的数据;
判断所述当前校验数据是否满足所述目标数据校验规则;
若所述当前校验数据不满足所述目标数据校验规则,则判定所述数据集合未通过数据校验;
若所述当前校验数据满足所述目标数据校验规则,则将所述当前校验数据的校验标识位设置为第二位值,并将预设的计数值增加一个计数单位;
判断所述计数值是否等于所述数据总量字段的取值;
若所述计数值小于所述数据总量字段的取值,则返回执行所述从所述数据集合中任意选取一条候选数据作为当前校验数据的步骤,直至所述计数值等于于所述数据总量字段的取值为止;
若所述计数值等于所述数据总量字段的取值,则判定所述数据集合通过数据校验。
4.根据权利要求1至3任一项所述的数据存储方法,其特征在于,所述将所述数据集合批量存储入预设的区块链系统中包括:
生成与所述数据集合对应的区块段,所述区块段中包括与所述数据集合中的数据数量相等的区块,且所述区块段中的每个区块均根据所述数据集合中的一条数据生成;
将所述区块段存储入本地区块链中,并在所述区块链系统中广播所述区块段,以使所述区块链系统中的各个节点服务器将所述区块段存储入各自的本地区块链中。
5.根据权利要求4所述的数据存储方法,其特征在于,所述区块段中的每个区块的生成过程包括:
判断待生成区块是否为所述区块段中的第一个区块;
若所述待生成区块为所述区块段中的第一个区块,则将最新添加入所述本地区块链中的区块确定为链尾区块;
若所述待生成区块不是所述区块段中的第一个区块,则将最新添加入所述区块段中的区块确定为链尾区块;
对所述链尾区块的区块头进行特征运算,得到第一特征值;
对所述数据集合中与所述待生成区块对应的数据进行特征运算,得到第二特征值;
根据所述第一特征值和所述第二特征值生成所述待生成区块的区块头,并根据所述数据集合中与所述待生成区块对应的数据生成所述待生成区块的区块主体。
6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现如权利要求1至5中任一项所述的数据存储方法的步骤。
7.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时实现如下步骤:
接收数据操作请求,并从所述数据操作请求中提取预设的请求类型字段;
根据所述请求类型字段的取值确定所述数据操作请求的请求类型;
若所述数据操作请求的请求类型为批量入链请求,则从所述批量入链请求中提取预设的数据总量字段,所述数据总量字段用于标识待存储的数据的总条数;
根据所述数据总量字段的取值从所述批量入链请求中提取待存储的数据集合,所述数据集合由各条待存储的数据组成;
使用预设的数据校验规则对所述数据集合进行数据校验;
若所述数据集合通过数据校验,则将所述数据集合批量存储入预设的区块链系统中。
8.根据权利要求7所述的服务器,其特征在于,所述使用预设的数据校验规则对所述数据集合进行数据校验包括:
从所述数据操作请求中提取目标业务系统的业务系统标识,所述目标业务系统为发送所述数据操作请求的业务系统;
在预设的数据校验规则库中查找目标校验规则,所述目标校验规则为与所述业务系统标识对应的数据校验规则;
使用所述目标数据校验规则对所述数据集合进行数据校验。
9.根据权利要求8所述的服务器,其特征在于,所述使用所述目标数据校验规则对所述数据集合进行数据校验包括:
从所述数据集合中任意选取一条候选数据作为当前校验数据,所述候选数据为预设的校验标识位为第一位值的数据;
判断所述当前校验数据是否满足所述目标数据校验规则;
若所述当前校验数据不满足所述目标数据校验规则,则判定所述数据集合未通过数据校验;
若所述当前校验数据满足所述目标数据校验规则,则将所述当前校验数据的校验标识位设置为第二位值,并将预设的计数值增加一个计数单位;
判断所述计数值是否等于所述数据总量字段的取值;
若所述计数值小于所述数据总量字段的取值,则返回执行所述从所述数据集合中任意选取一条候选数据作为当前校验数据的步骤,直至所述计数值等于于所述数据总量字段的取值为止;
若所述计数值等于所述数据总量字段的取值,则判定所述数据集合通过数据校验。
10.根据权利要求7至9中任一项所述的服务器,其特征在于,所述将所述数据集合批量存储入预设的区块链系统中包括:
生成与所述数据集合对应的区块段,所述区块段中包括与所述数据集合中的数据数量相等的区块,且所述区块段中的每个区块均根据所述数据集合中的一条数据生成;
将所述区块段存储入本地区块链中,并在所述区块链系统中广播所述区块段,以使所述区块链系统中的各个节点服务器将所述区块段存储入各自的本地区块链中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811022476.XA CN109446208A (zh) | 2018-09-03 | 2018-09-03 | 一种数据存储方法、计算机可读存储介质及服务器 |
PCT/CN2018/123786 WO2020048054A1 (zh) | 2018-09-03 | 2018-12-26 | 一种数据存储方法、计算机可读存储介质、服务器及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811022476.XA CN109446208A (zh) | 2018-09-03 | 2018-09-03 | 一种数据存储方法、计算机可读存储介质及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109446208A true CN109446208A (zh) | 2019-03-08 |
Family
ID=65533202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811022476.XA Pending CN109446208A (zh) | 2018-09-03 | 2018-09-03 | 一种数据存储方法、计算机可读存储介质及服务器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109446208A (zh) |
WO (1) | WO2020048054A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109977089A (zh) * | 2019-03-13 | 2019-07-05 | 深圳壹账通智能科技有限公司 | 日志管理方法、装置、计算机设备及计算机可读存储介质 |
CN110233842A (zh) * | 2019-06-10 | 2019-09-13 | 腾讯科技(深圳)有限公司 | 一种请求的校验方法和相关装置 |
CN110309160A (zh) * | 2019-05-22 | 2019-10-08 | 平安科技(深圳)有限公司 | 数据入链事务处理方法、装置、计算机设备及存储介质 |
CN110363663A (zh) * | 2019-07-12 | 2019-10-22 | 深圳前海微众银行股份有限公司 | 基于区块链的数据批量处理方法、装置、设备及存储介质 |
CN111274350A (zh) * | 2020-02-03 | 2020-06-12 | 广州极尚网络技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112579832A (zh) * | 2020-12-07 | 2021-03-30 | 中国民航信息网络股份有限公司 | 一种航程运输数据的分组校验方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113597608A (zh) * | 2020-11-25 | 2021-11-02 | 支付宝(杭州)信息技术有限公司 | 基于区块链的可信平台 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253980A (zh) * | 2011-06-23 | 2011-11-23 | 上海西本网络科技有限公司 | 数据处理方法及数据处理系统 |
CN107122682A (zh) * | 2017-04-20 | 2017-09-01 | 杭州铜板街互联网金融信息服务有限公司 | 基于区块链存储的数据处理方法及系统 |
CN107888483A (zh) * | 2017-11-23 | 2018-04-06 | 上海勋立信息科技有限公司 | 一种电子邮件内容批量拼接方法及装置 |
US20180101684A1 (en) * | 2016-10-06 | 2018-04-12 | Mastercard International Incorporated | Method and system for identity and credential protection and verification via blockchain |
CN108446314A (zh) * | 2018-02-07 | 2018-08-24 | 平安科技(深圳)有限公司 | 一种学生信息存储方法、计算机可读存储介质及终端设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170236103A1 (en) * | 2016-02-12 | 2017-08-17 | D+H Usa Corporation | Peer-to-Peer Financial Transactions Using A Private Distributed Ledger |
CN106326397A (zh) * | 2016-08-19 | 2017-01-11 | 东软集团股份有限公司 | 生成索引文件的方法及装置 |
CN112767158A (zh) * | 2018-02-27 | 2021-05-07 | 创新先进技术有限公司 | 基于区块链的交易执行方法及装置、电子设备 |
-
2018
- 2018-09-03 CN CN201811022476.XA patent/CN109446208A/zh active Pending
- 2018-12-26 WO PCT/CN2018/123786 patent/WO2020048054A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253980A (zh) * | 2011-06-23 | 2011-11-23 | 上海西本网络科技有限公司 | 数据处理方法及数据处理系统 |
US20180101684A1 (en) * | 2016-10-06 | 2018-04-12 | Mastercard International Incorporated | Method and system for identity and credential protection and verification via blockchain |
CN107122682A (zh) * | 2017-04-20 | 2017-09-01 | 杭州铜板街互联网金融信息服务有限公司 | 基于区块链存储的数据处理方法及系统 |
CN107888483A (zh) * | 2017-11-23 | 2018-04-06 | 上海勋立信息科技有限公司 | 一种电子邮件内容批量拼接方法及装置 |
CN108446314A (zh) * | 2018-02-07 | 2018-08-24 | 平安科技(深圳)有限公司 | 一种学生信息存储方法、计算机可读存储介质及终端设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109977089A (zh) * | 2019-03-13 | 2019-07-05 | 深圳壹账通智能科技有限公司 | 日志管理方法、装置、计算机设备及计算机可读存储介质 |
CN110309160A (zh) * | 2019-05-22 | 2019-10-08 | 平安科技(深圳)有限公司 | 数据入链事务处理方法、装置、计算机设备及存储介质 |
CN110233842A (zh) * | 2019-06-10 | 2019-09-13 | 腾讯科技(深圳)有限公司 | 一种请求的校验方法和相关装置 |
CN110233842B (zh) * | 2019-06-10 | 2021-07-27 | 腾讯科技(深圳)有限公司 | 一种请求的校验方法和相关装置 |
CN110363663A (zh) * | 2019-07-12 | 2019-10-22 | 深圳前海微众银行股份有限公司 | 基于区块链的数据批量处理方法、装置、设备及存储介质 |
CN110363663B (zh) * | 2019-07-12 | 2023-08-22 | 深圳前海微众银行股份有限公司 | 基于区块链的数据批量处理方法、装置、设备及存储介质 |
CN111274350A (zh) * | 2020-02-03 | 2020-06-12 | 广州极尚网络技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112579832A (zh) * | 2020-12-07 | 2021-03-30 | 中国民航信息网络股份有限公司 | 一种航程运输数据的分组校验方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020048054A1 (zh) | 2020-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109446208A (zh) | 一种数据存储方法、计算机可读存储介质及服务器 | |
CN109034809B (zh) | 区块链的生成方法、装置、区块链节点及存储介质 | |
EP3678346A1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
CN109242500B (zh) | 区块链交易有效性验证方法、装置及存储介质 | |
CN111221726A (zh) | 一种测试数据生成方法、装置、存储介质和智能设备 | |
CN111104392B (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN109542980B (zh) | 一种区块链的数据处理方法、装置、设备及介质 | |
CN107633016B (zh) | 数据处理方法及装置和电子设备 | |
CN109255056B (zh) | 区块链的数据引用处理方法、装置、设备及存储介质 | |
CN109614262B (zh) | 业务校验方法、装置及计算机可读存储介质 | |
CN107038182B (zh) | 分表数据的完备性检查方法及装置 | |
CN109840837B (zh) | 财务数据的处理方法、装置、计算机可读介质及电子设备 | |
CN108509392B (zh) | 多机构对账方法、系统、计算机设备和存储介质 | |
US20220036350A1 (en) | Cross-border resource transfer authenticity verification method, device and electronic equipment | |
CN110347545A (zh) | 一种业务平台缓存策略的测试方法及装置 | |
CN110413695A (zh) | 基于区块链的警务信息管理方法、装置、设备和介质 | |
CN112966311A (zh) | 智能合约校验方法及装置和电子设备 | |
CN112035350B (zh) | 针对区块链系统的测试方法、装置及计算机设备 | |
CN109740129A (zh) | 基于区块链的报表生成方法、装置、设备及可读存储介质 | |
CN108074033A (zh) | 指标数据的处理方法、系统、电子设备和存储介质 | |
CN114022151A (zh) | 区块链数据可视化方法、系统、电子设备和存储介质 | |
US20200394904A1 (en) | Metering data management system and computer readable recording medium | |
CN112613288B (zh) | 结算单生成方法、装置、计算机设备和存储介质 | |
CN109918077A (zh) | 代码管理方法、装置、计算机设备和存储介质 | |
CN111274255B (zh) | 业务数据监控方法及系统、监控架构、设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1262811 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20231208 |