CN111274252B - 一种区块链的数据上链方法、装置、存储介质和服务器 - Google Patents
一种区块链的数据上链方法、装置、存储介质和服务器 Download PDFInfo
- Publication number
- CN111274252B CN111274252B CN202010018626.0A CN202010018626A CN111274252B CN 111274252 B CN111274252 B CN 111274252B CN 202010018626 A CN202010018626 A CN 202010018626A CN 111274252 B CN111274252 B CN 111274252B
- Authority
- CN
- China
- Prior art keywords
- data
- uplink
- blockchain
- hash value
- database
- 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
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000004590 computer program Methods 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请适用于计算机技术领域,提出一种区块链的数据上链方法、装置、存储介质和服务器。该数据上链方法包括:通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链。由于数据上链的操作在不同的线程中异步执行,在异步上链模式下交易处理能力不依赖于区块链的处理能力,而是取决于数据库的处理能力,因此交易处理效率可以显著得到提升。
Description
技术领域
本申请属于计算机技术领域,尤其涉及一种区块链的数据上链方法、装置、存储介质和服务器。
背景技术
向区块链写入数据的过程,称为数据上链过程。基于区块链的特性,向区块链写入数据需分为提案、共识、记账等多个过程,故区块链的数据写入速度相比关系型数据库一般要慢很多。随着区块链对交易处理效率的要求提高,如何提高区块链的数据写入速度,成为技术人员函待解决的问题。
发明内容
本申请实施例提供了一种区块链的数据上链方法、装置、存储介质和服务器,可以提高区块链的数据写入速度。
第一方面,本申请实施例提供了一种区块链的数据上链方法,包括:
通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;
通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链。
该数据库相当于在区块链存储之上额外增加的一个速度更快的数据缓冲层,在将数据写入区块链时,首先将数据更新到该数据缓冲层中,与此同时采用不同的线程定时检测该数据缓冲层中出现更新的数据,将出现更新的数据批量写入区块链。这是一种将数据上链操作分解于不同的线程中异步执行的方式,与传统的同步数据上链方式相比,能够显著提高区块链的数据写入速度。
在第一方面的一种可能的实现方式中,在将所述待上链数据更新到预先构建的数据库中之后,还可以包括:
为所述待上链数据分配一个上链状态标记位,并将所述上链状态标记位初始化为第一数值;
相应的,在通过所述第二线程将所述待上链数据写入区块链之后,还可以包括:
将所述上链状态标记位由所述第一数值变更为第二数值。
通过为待上链数据分配一个上链状态标记位,服务器可以通过该标记位清楚地区分数据库中哪些数据未写入区块链,哪些数据已写入区块链。
而且,在为所述待上链数据分配一个上链状态标记位之后,还可以包括:
当检测到所述客户端发送的上链进度查询请求时,读取所述上链状态标记位;
若读取到的所述上链状态标记位为第一数值,则返回数据上链未完成的指示信息至所述客户端;
若读取到的所述上链状态标记位为第二数值,则返回数据上链已完成的指示信息至所述客户端。
用户可于客户端发送上链进度查询请求,服务器会根据待上链数据的上链状态标记位的数值返回相应的指示信息至该客户端,便于用户了解数据上链操作是否已完成。另外,服务器也可以定时自动检测该待上链数据的上链状态标记位的数值,若检测到该数值为第二数值,则主动发送数据上链已完成的信息至该客户端。
在第一方面的一种可能的实现方式中,所述通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链可以包括:
通过所述第二线程定时读取所述数据库中上链状态标记位为第一数值的目标数据,将所述目标数据写入区块链,并在所述目标数据写入区块链成功之后将所述目标数据的上链状态标记位变更为第二数值。
服务器会定时读取所述数据库中上链状态标记位为第一数值的数据,这部分数据是需要写入区块链的数据;在将这部分数据写入区块链成功之后,服务器会将这部分数据的上链状态标记位变更为第二数值,表示这部分数据已上链。
进一步的,所述将所述目标数据写入区块链,并在所述目标数据写入区块链成功之后将所述目标数据的上链状态标记位变更为第二数值可以包括:
为所述目标数据添加一个ID字段;
计算所述目标数据的第一哈希值,并将所述第一哈希值填入所述ID字段中;
在与区块链的节点建立通信连接之后,计算所述目标数据的第二哈希值;
若所述第二哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据写入区块链;
当所述目标数据写入区块链成功后,计算所述目标数据的第三哈希值;
若所述第三哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据的上链状态标记位变更为第二数值。
在服务器和区块链的节点建立连接的过程中,若待上链的数据又发生了变更,则该数据的哈希值会产生变化。因此,在连接建立完毕后,通过验证该数据的哈希值是否未变,若未变则表明选取的数据没有再次变更,此时再将读取到的数据写入到该区块链节点中,能够解决上述数据库和区块链两边数据不一致的问题。
在第一方面的一种可能的实现方式中,在将所述待上链数据更新到预先构建的数据库中之前,还可以包括:
将所述数据库中与所述待上链数据对应的原始数据转存到预先构建的原始数据表中;
在将所述出现更新的数据批量写入区块链之后,还可以包括:
若所述出现更新的数据写入区块链失败,则读取所述原始数据表,并将所述数据库中所述出现更新的数据还原为所述原始数据表中记录的相应原始数据。
该过程为数据上链失败之后的数据回滚过程,即将数据恢复到更新之前的状态,能够进一步保证数据库和区块链两边数据的一致性。
第二方面,本申请实施例提供了一种区块链的数据上链装置,包括:
第一线程处理模块,用于通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;
第二线程处理模块,用于通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链。
第三方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本申请实施例第一方面提出的区块链的数据上链方法。
第四方面,本申请实施例提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例第一方面提出的区块链的数据上链方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面所述的区块链的数据上链方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1本申请实施例提供的一种区块链的数据上链方法的第一个实施例的流程图;
图2是本申请实施例提供的区块链的数据上链方法的操作示意图;
图3是本申请实施例提供的一种区块链的数据上链方法的第二个实施例的流程图;
图4是本申请实施例提供的一种区块链的数据上链方法的第三个实施例的流程图;
图5是本申请实施例提供的一种区块链的数据上链装置的一个实施例的结构图;
图6是本申请实施例提供的一种服务器的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本申请实施例提供了一种区块链的数据上链方法、装置、存储介质和服务器,可以提升区块链的交易处理效率。
请参阅图1,本申请实施例中一种区块链的数据上链方法的第一个实施例包括:
101、通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;
当用户想要将数据上传至区块链时,可以于客户端操作,发出一个携带有待上链数据的数据上链请求。服务器在接收到该数据上链请求之后,会通过第一线程将相应的待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端。该数据库优选关系型数据库,假设该待上链数据是一张数据表的更新值,则服务器在获取到数据上链请求之后,会将该关系型数据库中存储的该数据表的原始值更新为该更新值。另外,服务器在将待上链的数据更新到该数据库中之后,还会发送一个数据上链的受理信息至所述客户端,告知用户该数据上链请求已受理,此时待上链数据只是缓存于该数据库中,尚未上传至区块链。
102、通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链。
另一方面,服务器会通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链。需要特别说明的是,服务器在执行步骤101时采用的是第一线程,在执行步骤102时采用的是第二线程,即执行的是异步数据上链操作。各个用户可以于不同的客户端分别发出各个数据上链请求,服务器会通过第一线程将各自的待上链数据分别更新到该数据库中,从而产生多个出现更新的数据;而且,服务器还会定时通过第二线程检测并将这些出现更新的数据批量写入区块链。
为便于理解,可参照图2,示出了本申请实施例提出的区块链的数据上链方法的操作示意,系统总共包含客户端、服务器(含数据库)以及区块链三部分。用户于客户端进行操作发出数据上链请求,服务器通过第一线程执行以下步骤:同步接收客户端请求,更新数据到数据库中,返回受理信息给客户端。服务器通过第二线程执行以下步骤:定时读取数据库,收集变更数据,将变更数据写入到区块链上。异步数据上链与同步数据上链相比,虽然增加了复杂度,但是可以显著提升区块链的数据写入速度。异步处理区块链数据上链请求,相当于在区块链存储之上增加一个速度更快的数据缓冲层,对数据的修改首先同步更新缓存层的数据,然后再异步更新到区块链中。
本申请实施例提出的数据上链方法包括:通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链。该数据库相当于在区块链存储之上额外增加的一个速度更快的数据缓冲层,在将数据写入区块链时,首先将数据更新到该数据缓冲层中,与此同时采用不同的线程定时检测该数据缓冲层中出现更新的数据,将出现更新的数据批量写入区块链。这是一种将数据上链操作分解于不同的线程中异步执行的方式,与传统的同步数据上链方式相比,能够显著提高区块链的数据写入速度。
请参阅图3,本申请实施例中一种区块链的数据上链方法的第二个实施例包括:
301、通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;
步骤301与步骤101相同,具体可参照步骤101的相关说明。
302、为所述待上链数据分配一个上链状态标记位,并将所述上链状态标记位初始化为第一数值;
服务器在将所述待上链数据更新到预先构建的数据库中之后,会为该待上链数据分配一个上链状态标记位,并将该上链状态标记位初始化为第一数值,比如可以初始化为1,表示该待上链数据未上链。应当理解,若服务器获取到多个客户端发送的多个数据上链请求,则会为每个数据上链请求对应的待上链数据分别分配一个初始化为第一数值的上链状态标记位,即每个待上链数据都具有各自的上链状态标记位。
303、通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链;
具体的,在本申请实施例中,步骤303可以包括:
通过所述第二线程定时读取所述数据库中上链状态标记位为第一数值的目标数据,将所述目标数据写入区块链,并在所述目标数据写入区块链成功之后将所述目标数据的上链状态标记位变更为第二数值。
所述数据库中上链状态标记位为第一数值的目标数据,即为各个待上链的目标数据,服务器通过第二线程定时读取这些目标数据,将这些目标数据写入区块链,并在写入区块链成功之后将该目标数据的上链状态标记位变更为第二数值(若第一数值为0,则第二数值为1;若第一数值为1,则第二数值为0),表示该目标数据已完成上链。
比如,该数据库中存有一张用户积分表user_point,保存用户Tom的积分为100,该积分表的初始数据如以下的表1所示:
表1
USER_ID | USER_NAME | POINT | DIRTY_FLAG | DATA_KEY |
1001 | Tom | 100 | 0 | user:1001 |
在表1中,字段DIRTY_FLAG即为上链状态标记位,DIRTY_FLAG=0表示这条数据和区块链上Key为user:1001的数据一致,即数据未变更。此时,如果客户端请求给Tom增加100积分,那么服务器的第一线程将执行如下SQL 语句:
Update user_point set point=point+100,dirty_flag=1where user_id=1001
该数据表更新后的数据如以下的表2所示:
表2
USER_ID | USER_NAME | POINT | DIRTY_FLAG | DATA_KEY |
1001 | Tom | 200 | 1 | user:1001 |
在表2中,服务器通过第一线程更新POINT为200,并令DIRTY_FLAG=1,表示该出现更新的数据未上链,需要更新区块链上Key为user:1001的数据。服务器定时(比如每秒)执行第二线程时,将读取DIRTY_FLAG=1的数据,将新数据写入到区块链上,然后再更新DIRTY_FLAG=0。
然而,在数据上链的过程中,由于服务器与区块链节点建立通信连接以及将数据提交至区块链节点均需要耗费一定的时间,若在这个时间内待上链的数据又发生了变化,例如上述例子中Tom的积分又发生了改变,从200增加到了 300,那么第二线程会出现将200写入到区块链上,但是设置DIRTY_FLAG为 0的情况,从而导致数据库和区块链两边数据不一致的问题。另外,如果在该时间内第一线程写入一条新数据,也会出现两边数据不一致的问题,这个问题可总结为第一线程写入数据与第二线程读取数据的并发问题。
进一步的,为了解决该问题,所述将所述目标数据写入区块链,并在所述目标数据写入区块链成功之后将所述目标数据的上链状态标记位变更为第二数值可以包括:
(1)为所述目标数据添加一个ID字段;
(2)计算所述目标数据的第一哈希值,并将所述第一哈希值填入所述ID 字段中;
(3)在与区块链的节点建立通信连接之后,计算所述目标数据的第二哈希值;
(4)若所述第二哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据写入区块链;
(5)当所述目标数据写入区块链成功后,计算所述目标数据的第三哈希值;
(6)若所述第三哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据的上链状态标记位变更为第二数值。
比如,可以为该目标数据添加一个ID字段redo_uuid,然后计算所述目标数据的第一哈希值,并将该第一哈希值填入redo_uuid中。等待服务器和区块链的节点建立通信连接之后,再次计算该目标数据的第二哈希值,假设第二哈希值与该ID字段中的第一哈希值相同,则表明该目标数据在服务器和区块链的节点建立通信连接的这段时间内没有发生变化,此时可以放心地将该目标数据写入区块链。由于将目标数据写入区块链的过程也需要一定时间,因此当该目标数据写入区块链成功后,会再次计算该目标数据的第三哈希值,若第三哈希值与该ID字段中的第一哈希值仍然相同,则表明整个数据上链过程中该目标数据没有发生改变,因此可以将所述目标数据的上链状态标记位变更为第二数值,此时不会发生数据库和区块链两边数据不一致的问题。
另外,若所述第二哈希值和所述ID字段中的所述第一哈希值不同,或者所述第三哈希值和所述ID字段中的所述第一哈希值不同,则表明该目标数据在数据上链过程中发生了改变,此时可以返回步骤(2)重新开始执行数据的上链操作,该目标数据当前最新值的哈希值将成为更新后的第一哈希值,然后在建立连接以及数据上链之后会继续计算第二哈希值和第三哈希值,判断该目标数据有没在新的数据上链过程中发生改变。只有当目标数据在整个数据上链过程中都没有发生改变,才会将该目标数据的上链状态标记位变更为第二数值,从而能够避免发生数据库和区块链两边数据不一致的问题。
304、在通过所述第二线程将所述待上链数据写入区块链之后,将所述上链状态标记位由所述第一数值变更为第二数值。
服务器在通过第二线程检测到该待上链数据作为目标数据写入区块链之后,会将该待上链数据的上链状态标记位由所述第一数值变更为第二数值,表示数据上链操作已完成。
进一步的,本申请实施例的数据上链方法还可以包括:
(1)当检测到所述客户端发送的上链进度查询请求时,读取所述上链状态标记位;
(2)若读取到的所述上链状态标记位为第一数值,则返回数据上链未完成的指示信息至所述客户端;
(3)若读取到的所述上链状态标记位为第二数值,则返回数据上链已完成的指示信息至所述客户端。
用户可于客户端发送上链进度查询请求,服务器会根据待上链数据的上链状态标记位的数值返回相应的指示信息至该客户端,便于用户了解数据上链操作是否已完成。另外,服务器也可以定时检测该待上链数据的上链状态标记位的数值,若检测到该数值为第二数值,则主动发送数据上链已完成的指示信息至该客户端。
本申请实施例提出的区块链的数据上链方法包括:通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;为所述待上链数据分配一个上链状态标记位,并将所述上链状态标记位初始化为第一数值;通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链;在通过所述第二线程将所述待上链数据写入区块链之后,将所述上链状态标记位由所述第一数值变更为第二数值。与本申请的第一个实施例相比,本实施例会为每个待上链数据分别一个上链状态标记位,用于标记该待上链数据是否已经完成上链操作,便于用户了解数据上链的进度。
请参阅图4,本申请实施例中一种区块链的数据上链方法的第三个实施例包括:
401、通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述数据库中与所述待上链数据对应的原始数据转存到预先构建的原始数据表中;
在本申请实施例中,服务器在通过第一线程获取客户端发送的携带有待上链数据的数据上链请求之后,会将所述数据库中与所述待上链数据对应的原始数据转存到预先构建的一个原始数据表中。
402、通过第一线程将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;
403、通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链;
步骤402至403的具体说明可参照步骤101-102。
404、若所述出现更新的数据写入区块链失败,则读取所述原始数据表,并将所述数据库中所述出现更新的数据还原为所述原始数据表中记录的相应原始数据。
若所述出现更新的数据写入区块链失败,服务器会读取所述原始数据表,并将所述数据库中所述出现更新的数据还原为所述原始数据表中记录的相应原始数据,从而保证数据库和区块链两边数据一致。该过程为数据上链失败之后的数据回滚过程,即将数据恢复到更新之前的状态。
本申请实施例提出的区块链的数据上链方法,包括:通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述数据库中与所述待上链数据对应的原始数据转存到预先构建的原始数据表中;通过第一线程将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链;若所述出现更新的数据写入区块链失败,则读取所述原始数据表,并将所述数据库中所述出现更新的数据还原为所述原始数据表中记录的相应原始数据。在本申请实施例中,若将数据写入区块链失败,则服务器会从原始数据表中读取该数据的原始值,并将该数据库中的该数据还原为该原始值,从而能够保证数据库和区块链两边数据一致。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的区块链的数据上链方法,图5示出了本申请实施例提供的区块链的数据上链装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图5,该装置包括:
第一线程处理模块501,用于通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;
第二线程处理模块502,用于通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链。
进一步的,所述数据上链装置还可以包括:
标记位分配模块,用于为所述待上链数据分配一个上链状态标记位,并将所述上链状态标记位初始化为第一数值;
标记位变更模块,用于将所述上链状态标记位由所述第一数值变更为第二数值。
进一步的,所述数据上链装置还可以包括:
标记位读取模块,用于当检测到所述客户端发送的上链进度查询请求时,读取所述上链状态标记位;
第一指示信息发送模块,用于若读取到的所述上链状态标记位为第一数值,则返回数据上链未完成的指示信息至所述客户端;
第二指示信息发送模块,用于若读取到的所述上链状态标记位为第二数值,则返回数据上链已完成的指示信息至所述客户端。
进一步的,所述第二线程处理模块可以包括:
第二线程处理单元,用于通过所述第二线程定时读取所述数据库中上链状态标记位为第一数值的目标数据,将所述目标数据写入区块链,并在所述目标数据写入区块链成功之后将所述目标数据的上链状态标记位变更为第二数值。
更进一步的,所述第二线程处理单元可以包括:
ID字段添加子单元,用于为所述目标数据添加一个ID字段;
第一哈希值计算子单元,用于计算所述目标数据的第一哈希值,并将所述第一哈希值填入所述ID字段中;
第二哈希值计算子单元,用于在与区块链的节点建立通信连接之后,计算所述目标数据的第二哈希值;
目标数据写入子单元,用于若所述第二哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据写入区块链;
第三哈希值计算子单元,用于当所述目标数据写入区块链成功后,计算所述目标数据的第三哈希值;
标记位变更子单元,用于若所述第三哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据的上链状态标记位变更为第二数值。
进一步的,所述第二线程处理单元还可以包括:
步骤返回子单元,用于若所述第二哈希值和所述ID字段中的所述第一哈希值不同,或者所述第三哈希值和所述ID字段中的所述第一哈希值不同,则采用当前的所述目标数据的哈希值对所述第一哈希值进行更新,然后返回执行将所述第一哈希值填入所述ID字段中的步骤以及后续步骤。
进一步的,所述数据上链装置还可以包括:
数据转存模块,用于将所述数据库中与所述待上链数据对应的原始数据转存到预先构建的原始数据表中;
数据还原模块,用于若所述出现更新的数据写入区块链失败,则读取所述原始数据表,并将所述数据库中所述出现更新的数据还原为所述原始数据表中记录的相应原始数据。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如图1、图3 或图4表示的任意一种区块链的数据上链方法的步骤。
本申请实施例还提供一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如图1、图3或图4表示的任意一种区块链的数据上链方法的步骤。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品在服务器上运行时,使得服务器执行实现如图1、图3或图4表示的任意一种区块链的数据上链方法的步骤。
图6是本申请一实施例提供的服务器的示意图。如图6所示,该实施例的服务器6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机可读指令62。所述处理器60执行所述计算机可读指令62时实现上述各个区块链的数据上链方法实施例中的步骤,例如图1所示的步骤101至102。或者,所述处理器60执行所述计算机可读指令62时实现上述各装置实施例中各模块/单元的功能,例如图5所示模块501至502的功能。
示例性的,所述计算机可读指令62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机可读指令62在所述服务器 6中的执行过程。
所述服务器6可以是智能手机、笔记本、掌上电脑及云端服务器等计算设备。所述服务器6可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是服务器6的示例,并不构成对服务器6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器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用于存储所述计算机可读指令以及所述服务器所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U 盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (7)
1.一种区块链的数据上链方法,其特征在于,包括:
通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;
通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链;
其中,在将所述待上链数据更新到预先构建的数据库中之后,还包括:
为所述待上链数据分配一个上链状态标记位,并将所述上链状态标记位初始化为第一数值;
相应的,在通过所述第二线程将所述待上链数据写入区块链之后,还包括:
将所述上链状态标记位由所述第一数值变更为第二数值;
所述通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链包括:
通过所述第二线程定时读取所述数据库中上链状态标记位为第一数值的目标数据;
为所述目标数据添加一个ID字段;
计算所述目标数据的第一哈希值,并将所述第一哈希值填入所述ID字段中;
在与区块链的节点建立通信连接之后,计算所述目标数据的第二哈希值;
若所述第二哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据写入区块链;
当所述目标数据写入区块链成功后,计算所述目标数据的第三哈希值;
若所述第三哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据的上链状态标记位变更为第二数值。
2.如权利要求1所述的数据上链方法,其特征在于,在为所述待上链数据分配一个上链状态标记位之后,还包括:
当检测到所述客户端发送的上链进度查询请求时,读取所述上链状态标记位;
若读取到的所述上链状态标记位为第一数值,则返回数据上链未完成的指示信息至所述客户端;
若读取到的所述上链状态标记位为第二数值,则返回数据上链已完成的指示信息至所述客户端。
3.如权利要求1所述的数据上链方法,其特征在于,还包括:
若所述第二哈希值和所述ID字段中的所述第一哈希值不同,或者所述第三哈希值和所述ID字段中的所述第一哈希值不同,则采用当前的所述目标数据的哈希值对所述第一哈希值进行更新,然后返回执行将所述第一哈希值填入所述ID字段中的步骤以及后续步骤。
4.如权利要求1至3中任一项所述的数据上链方法,其特征在于,在将所述待上链数据更新到预先构建的数据库中之前,还包括:
将所述数据库中与所述待上链数据对应的原始数据转存到预先构建的原始数据表中;
在将所述出现更新的数据批量写入区块链之后,还包括:
若所述出现更新的数据写入区块链失败,则读取所述原始数据表,并将所述数据库中所述出现更新的数据还原为所述原始数据表中记录的相应原始数据。
5.一种区块链的数据上链装置,其特征在于,包括:
第一线程处理模块,用于通过第一线程获取客户端发送的携带有待上链数据的数据上链请求,将所述待上链数据更新到预先构建的数据库中,并返回数据上链的受理信息至所述客户端;
第二线程处理模块,用于通过第二线程定时读取所述数据库,检测所述数据库中出现更新的数据,并将所述出现更新的数据批量写入区块链;
标记位分配模块,用于为所述待上链数据分配一个上链状态标记位,并将所述上链状态标记位初始化为第一数值;
标记位变更模块,用于将所述上链状态标记位由所述第一数值变更为第二数值;
其中,所述第二线程处理模块包括:
第二线程处理单元,用于通过所述第二线程定时读取所述数据库中上链状态标记位为第一数值的目标数据,将所述目标数据写入区块链,并在所述目标数据写入区块链成功之后将所述目标数据的上链状态标记位变更为第二数值;
所述第二线程处理单元包括:
ID字段添加子单元,用于为所述目标数据添加一个ID字段;
第一哈希值计算子单元,用于计算所述目标数据的第一哈希值,并将所述第一哈希值填入所述ID字段中;
第二哈希值计算子单元,用于在与区块链的节点建立通信连接之后,计算所述目标数据的第二哈希值;
目标数据写入子单元,用于若所述第二哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据写入区块链;
第三哈希值计算子单元,用于当所述目标数据写入区块链成功后,计算所述目标数据的第三哈希值;
标记位变更子单元,用于若所述第三哈希值和所述ID字段中的所述第一哈希值相同,则将所述目标数据的上链状态标记位变更为第二数值。
6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的区块链的数据上链方法。
7.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述的区块链的数据上链方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010018626.0A CN111274252B (zh) | 2020-01-08 | 2020-01-08 | 一种区块链的数据上链方法、装置、存储介质和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010018626.0A CN111274252B (zh) | 2020-01-08 | 2020-01-08 | 一种区块链的数据上链方法、装置、存储介质和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111274252A CN111274252A (zh) | 2020-06-12 |
CN111274252B true CN111274252B (zh) | 2023-11-28 |
Family
ID=70997013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010018626.0A Active CN111274252B (zh) | 2020-01-08 | 2020-01-08 | 一种区块链的数据上链方法、装置、存储介质和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111274252B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111784527B (zh) * | 2020-08-04 | 2023-10-27 | 蚂蚁胜信(上海)信息技术有限公司 | 通过区块链进行权益更新的方法及装置 |
CN112434112A (zh) * | 2020-12-04 | 2021-03-02 | 中国工商银行股份有限公司 | 将区块链数据同步存储到数据库的方法及装置 |
CN113111074B (zh) * | 2021-03-10 | 2024-01-09 | 贾晓丰 | 基于区块链的交互数据监测方法及装置 |
CN113111382A (zh) * | 2021-04-19 | 2021-07-13 | 杭州奇宁数据科技有限公司 | 一种体育区块链存证、溯源批处理系统与方法 |
CN113204550A (zh) * | 2021-04-29 | 2021-08-03 | 湖北央中巨石信息技术有限公司 | 基于区块链的链上链下同步方法 |
CN113434909B (zh) * | 2021-06-25 | 2023-12-29 | 湖北央中巨石信息技术有限公司 | 一种基于区块链的数据按需存证方法 |
CN113468574B (zh) * | 2021-07-21 | 2024-05-24 | 招商华软信息有限公司 | 一种区块链数据上链方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109344172A (zh) * | 2018-08-31 | 2019-02-15 | 深圳市元征科技股份有限公司 | 一种高并发数据处理方法、装置及客户端服务器 |
CN109428899A (zh) * | 2017-08-21 | 2019-03-05 | 中国石油化工股份有限公司 | 文件安全传输管理方法及系统 |
CN110113167A (zh) * | 2019-04-01 | 2019-08-09 | 广州杰赛科技股份有限公司 | 一种智能终端的信息保护方法、系统以及可读存储介质 |
-
2020
- 2020-01-08 CN CN202010018626.0A patent/CN111274252B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109428899A (zh) * | 2017-08-21 | 2019-03-05 | 中国石油化工股份有限公司 | 文件安全传输管理方法及系统 |
CN109344172A (zh) * | 2018-08-31 | 2019-02-15 | 深圳市元征科技股份有限公司 | 一种高并发数据处理方法、装置及客户端服务器 |
CN110113167A (zh) * | 2019-04-01 | 2019-08-09 | 广州杰赛科技股份有限公司 | 一种智能终端的信息保护方法、系统以及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111274252A (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111274252B (zh) | 一种区块链的数据上链方法、装置、存储介质和服务器 | |
CN111091429B (zh) | 电子票据标识分配方法及装置、电子票据生成系统 | |
AU2014262240B2 (en) | Entity resolution from documents | |
US8332367B2 (en) | Parallel data redundancy removal | |
CN112084258A (zh) | 一种数据同步方法和装置 | |
CN110196759B (zh) | 分布式事务处理方法和装置、存储介质及电子装置 | |
CN109597903B (zh) | 图像文件处理装置和方法、文件存储系统及存储介质 | |
CN113051102B (zh) | 文件备份方法、装置、系统、存储介质和计算机设备 | |
CN115470156A (zh) | 基于rdma的内存使用方法、系统、电子设备和存储介质 | |
CN112256472A (zh) | 分布式数据调取方法、装置、电子设备及存储介质 | |
CN114356970A (zh) | 一种存储系统资源缓存方法及装置 | |
CN113918531A (zh) | 分布式表格系统的数据同步方法、装置以及服务端设备 | |
CN113608703B (zh) | 数据处理方法及装置 | |
CN110889040B (zh) | 用于推送信息的方法和装置 | |
CN116743589B (zh) | 云主机迁移方法、装置及电子设备 | |
CN113364875B (zh) | 区块链节点存取数据的方法、设备和计算机可读存储介质 | |
CN118113706A (zh) | 一种统计信息更新方法、数据库系统及计算设备集群 | |
CN116955476A (zh) | 特征同步方法、装置、服务器、存储介质和程序产品 | |
CN115686876A (zh) | 消息处理位置回拨的方法、装置、电子设备及存储介质 | |
CN114841129A (zh) | 数据导入方法、装置、电子设备及存储介质 | |
CN117041348A (zh) | 中介系统以及服务请求结果回传方法 | |
CN115827240A (zh) | 数据查询方法、装置、设备、系统以及存储介质 | |
CN116010149A (zh) | 一种支持追加写的分布式文件系统的故障恢复方法及装置 | |
JP2023532138A (ja) | イメージ配布方法、電子機器及び記憶媒体 | |
CN115357597A (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 |