CN110998558B - 区块链中数据库哈希码的延迟更新 - Google Patents
区块链中数据库哈希码的延迟更新 Download PDFInfo
- Publication number
- CN110998558B CN110998558B CN201780093711.XA CN201780093711A CN110998558B CN 110998558 B CN110998558 B CN 110998558B CN 201780093711 A CN201780093711 A CN 201780093711A CN 110998558 B CN110998558 B CN 110998558B
- Authority
- CN
- China
- Prior art keywords
- database
- blockchain
- update
- update query
- added
- 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
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
- G06F16/2379—Updates performed during online database operations; commit processing
- G06F16/2386—Bulk updating operations
-
- 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/23—Updating
- G06F16/235—Update request formulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于在区块链系统中更新数据库以向区块链添加区块的计算机实现的方法,可以包括:在接收到更新查询以更新数据库时,将更新查询作为数据项添加到数据库。根据数据库中存储的数据项计算哈希值,所述存储的数据项包括更新查询的增加的数据项;并使用哈希值向区块链添加新区块。
Description
背景技术
本发明涉及区块链,更具体地,涉及区块链中数据库的更新。
最近,已经公开了关于区块链的各种更新技术。在区块链技术中,多个区块像一条链一样相互耦合,从而在网络上形成一个区块链。一个块可以包括多个事务和紧接在前块中的事务的哈希值。请注意,事务是指用于更新数据库的一系列不可分割的过程。此外,包括在块中的事务被认为是正确/准确的事务。
这里,用于更新数据库的块系统可以包括多个节点。每个节点可以顺序处理事务。如果在特定事务中修改了许多数据项(例如,为特定公司划分存货),则在特定事务中数据项的所有修改(更新)应用于数据库之前,后续事务的过程可能不会开始。换句话说,当事务修改大量数据项时,数据状态的重新计算非常昂贵。
发明内容
根据本发明的实施例,提供了一种用于在区块链系统中更新数据库以向区块链添加区块的计算机实现的方法。该方法包括在接收到更新查询以更新数据库时,将更新查询作为数据项添加到数据库。该方法包括基于在数据库中存储的数据项来计算哈希值。存储的数据项包括更新查询的添加的数据项。该方法包括使用哈希值向区块链添加新区块。此方法可以缩短与更新数据库关联的等待时间。
这里,上述方法还可以包括:通过复制数据库来生成第二数据库,根据更新查询的添加的数据项来更新第二数据库,基于在更新后的第二数据库存储中的数据项来计算第二哈希值,并使用第二哈希值向区块链添加新区块。该方法可以缩短与使用第二数据库与更新数据库相关联的等待时间。
根据实施例,提供了一种用于区块链中更新数据库的计算机实现的方法。区块链可以在区块链系统中包括的多个节点之间共享。节点可以经由网络彼此连接。节点可以根据数据库的更新生成要添加到区块链的区块。在接收到用于更新数据库的更新查询之后,每个节点确定是使用常规更新将更新查询应用于数据库,还是使用延迟更新将更新查询应用于数据库。如果每个节点确定使用常规更新将更新查询应用于数据库,则可以根据该更新查询来更新数据库。可以基于更新的数据库来计算常规哈希值,并且可以使用常规哈希值将新区块添加到区块链。如果每个节点确定使用延迟更新将更新查询应用于数据库,则可以通过复制数据库来生成第二数据库。因此,可以将更新查询作为数据库的数据项添加到数据库,可以基于将更新查询作为数据项添加到的数据库来计算延迟的哈希值,可以使用延迟的哈希值向区块链添加新的区块,并且第二数据库可以根据添加到数据库的更新查询的数据项进行更新。当预定数量的区块被添加到区块链时,该数据库可以被第二数据库替换。可以基于替换的数据库来计算替换的哈希值,并且可以使用替换的哈希值将新区块添加到区块链。此方法可以缩短与更新数据库关联的等待时间。
在上述方法中,如果每个节点接收到第二更新查询并确定使用常规更新将第二更新查询应用于数据库,则在根据该更新查询更新第二数据库之前,可以通过将更新查询和第二更新查询应用于数据库对数据库进行更新。可以基于利用更新查询和第二更新查询更新的数据库来计算更新的哈希值,并且可以通过将更新查询和第二更新查询应用于第二数据库来更新第二数据库。该方法可以相对于第二更新查询缩短与更新数据库相关联的等待时间。
在实施例中,提供了一种计算机程序产品,用于在区块链系统中更新数据库以向区块链添加区块。该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有存储在其上的程序指令。程序指令可由计算机执行,并且可以使计算机执行包括接收到用于更新数据库的更新查询时将更新查询作为数据项添加到数据库的方法。该方法包括基于存储在数据库中的数据项来计算哈希值。存储的数据项包括更新查询的添加的数据项。该方法包括使用哈希值将新区块添加到区块链。此方法可以缩短与更新数据库关联的等待时间。
这里,上述方法还可以包括:通过复制数据库来生成第二数据库,根据更新查询的添加的数据项来更新第二数据库,基于存储在更新后的第二数据库中的数据项来计算第二哈希值,并使用第二哈希值将新区块添加到区块链。该方法可以缩短与使用第二数据库更新数据库相关联的等待时间。
根据实施例,提供了一种用于区块链系统向区块链添加区块的设备。该设备包括一个要更新的数据库,以将区块添加到区块链中。该设备包括更新查询添加部分,用于在接收到用于更新数据库的更新查询时将更新查询作为数据项添加到数据库。该设备包括计算部分,该计算部分用于基于存储在数据库中的数据项来计算哈希值。存储的数据项包括更新查询的添加的数据项。该设备包括块添加部分,用于使用哈希值将新区块添加到区块链。该设备可以缩短与更新数据库相关的等待时间。
这里,上述设备还可包括:生成部分,用于通过复制数据库来生成第二数据库;以及更新部分,用于根据更新查询的添加的数据项来更新第二数据库。在该设备中,计算部可以基于存储在更新后的第二数据库中的数据项来计算第二哈希值,并且块添加部可以使用第二哈希值向区块链添加新区块。该设备可以缩短与使用第二数据库更新数据库相关联的等待时间。
附图说明
现在将参见附图仅以示例的方式描述本发明的实施例,其中:
图1描绘了根据实施例的区块链系统的框图;
图2A至图2F描绘了根据实施例的用于更新区块链的过程;
图3描绘了根据实施例的用于更新主表的过程的流程图;
图4描绘了根据实施例的用于更新后台表的过程的流程图;
图5描绘了根据实施例的用于将数据项的值添加到后台表中的过程的流程图;
图6描绘了根据实施例的用于更新主表和后台表中的数据项的值的过程的流程图;
图7描绘了根据实施例的用于应用过滤器并将主表替换为后台表的过程的流程图;
图8描绘了根据实施例的应用重度更新的过程的流程图;
图9是根据实施例的节点的硬件配置的示例。
具体实施方式
在下文中,将参照附图详细描述本公开的实施例。
注意,本公开并不旨在限于以下这些实施例,并且本公开可以在本公开的范围内以各种修改来实现。另外,在此使用的附图是出于说明的目的,并且可能未示出实际尺寸。
图1描绘了根据实施例的区块链系统100的框图。区块链系统100可以包括经由网络105彼此连接的多个节点(例如,设备)101。每个节点101可以包括主处理部分111、后台处理部分113、哈希码计算器115和存储器117。
如本文所述,主处理部111可以接收查询(例如,更新查询)以更新数据库并将区块添加到区块链。
后台处理部分113根据过滤器253(参见图2A)在后台表261上执行处理(例如,参见图2A描述的处理)。后台处理部分113是要求保护的更新部分的示例。
哈希码计算器115计算并设置要包括在区块链中的块中的事务的哈希码(例如,哈希值)。哈希码计算器115是要求保护的计算部分的示例。
存储器117可以存储与区块链相关联的数据。
在示例性实施例的区块链系统100中,每个节点101可以包括其自己的数据库,例如主表251(稍后描述)位于其自己的存储器117中,并且可以与其他节点以相同的顺序执行事务。这使得节点101能够将各个数据库保持在相同状态。此外,每个节点101可以经由哈希计算器115基于其数据库的状态计算哈希码以执行每个事务。可以通过在节点101中找到不同的哈希码来检测节点101的拜占庭式(byzantine)故障。
在示例性实施例中,为了减少用于计算哈希码的开销,存储器117将数据项存储在树结构中,该树结构包括树节点(例如,根节点和多个叶节点,以及连接它们的边)。哈希码计算器115可以计算树结构中的哈希码。更具体地,当修改数据项时,仅来自修改项的节点,例如叶节点,到根节点被计算/重新计算。
在延迟更新中,当从数据库中读取数据项时,将应用尚未应用于该数据项的更新。这意味着更新查询是延迟计算的。但是,在区块链技术中,事务完成后,读取更新的数据项以计算数据库的哈希码。即,需要将每个更新查询立即应用于数据项。
在示例性实施例中,每个节点101可以执行延迟更新和后台更新(例如,并行更新)。换句话说,每个节点101可以对数据项进行修改并且在后台重新计算哈希码。所有节点101产生新的(例如,修改的)数据项和新的哈希码,这些新的数据项和新的哈希码可从区块链中的特定块获得(稍后描述)。
图2A至图2F是根据示例性实施例的区块链201的更新过程的示例。参见图1和图2A-2F,将描述区块链201的更新过程的示例。
在示例性实施例中,主处理部111基于接收到的查询执行更新主表251的处理。例如,查询是要修改主表251中的数据项。主表251可以被表示或被包括在存储器117中存储的数据库中。换句话说,主表251可以是要被主处理部分111处理的数据。主处理部分111分析接收到的查询。也就是说,主处理部分111评估接收到的查询的属性以将区块211添加到区块链201。主表251是要求保护的数据库的示例。
主处理部111基于评估(例如分析)结果,判断主题查询是否调用了重度更新。重度更新是指需要相对繁重的计算的更新(例如,计算/重新计算)。例如,重度更新需要更新主表251中的多个数据项。不调用重度更新的查询是要求保护的另一种更新查询的示例。
主处理部111可以基于分析的评估来生成过滤器253。更具体地,如果主题查询调用重度更新,则主处理部分111可以生成过滤器253。过滤器253可以定义对数据项(例如,主表251中包括的值)的计算。此外,主处理部分111和后台处理部分113可以根据过滤器253执行计算。注意,如果主处理部分111接收到多个调用重度更新的查询,则主处理部分111可以生成多个过滤器253。
主处理部111还可以基于分析的评估来生成后台表261。后台表261可以是主表251的副本。换句话说,后台表261可以是将由后台处理部分113处理的数据。后台表261是第二数据库的示例。
主处理部111还基于分析结果来确定数字N。数字N表示用于在区块链201中添加新区块的定时变量。注意,数字N基于查询的一个或多个属性被确定性地指定。
主处理部分111是要求保护的查询添加部分、区块添加部分、生成部分、替换部分、确定部分和/或更新部分的示例。
这里,如上所述,每个节点101可以将修改应用于数据项并在后台计算/重新计算哈希码。更具体地说,当事务(例如查询)调用重度更新时,主处理部分111将过滤器253作为数据项添加到主表251,而不是立即更新数据项。哈希码计算器115使用过滤器253基于主表251来计算/重新计算哈希码,然后创建主表251的副本以创建后台表261。可以应用使用写时复制技术的逻辑副本。注意,后台表261可以不包括过滤器253。
在事务的后台处理中,节点101可以使用不同的线程将重度更新应用于后台表261。
在区块链201的特定块处,主表251可以用后台表261替换。注意,每个节点101在区块链201的相同点处替换主表251。特定块可以是与重度更新的块相距N个块的第N个块。此过程是要求保护的延迟更新的示例。
注意,每个节点101包括中央处理单元(CPU)91(在图9的描述中描述)。该示例性实施例假设每个节点101的CPU利用率低并且很少发生重度更新。
在下文中,对区块链201的更新过程进行了详细说明。该示例假定主表251可用于管理配送仓库或生产设施,该配送仓库或生产设施服务于具有各种特许权所有者的几个不同公司以及考虑到每个所有者拥有的本地库存量。然而,主表251可以表示任何方式的数据项,并且该示例并不意味着将本公开的范围限制为管理库存,或者以任何其他方式来限制本公开的范围。该示例还假定要按照事务1(Tx1)、事务2(Tx2)和事务3(Tx3)的顺序依次更新主表251。假定事务2是重度更新,而事务1、3被假定不是重度更新。
如图2A所示,区块链201可以包括框211和框212。在框211和212中,可以使用所谓的键值存储(KVS)存储数据。在实施例中,主表251可以包括数据列“id”、“公司”、“库存量”和“所有者”。此外,主表251包括id 1、id 2、id 3和id 4的数据项(例如,行、条目)。例如,数据项“id=1”表示“公司=A”,“库存量=1000”和“所有者=Sachi”。
首先,可以根据事务1(Tx1):INSERT VALUES(5,C,100,Kou)更新主表251。主处理部111将id 5的数据项插入到主表251中(参照箭头A1)。然后,哈希码计算器115计算更新后的主表251的哈希码以获得哈希码h1。主处理部111可以将包括获得的哈希码h1的块213添加到区块链201(参见A2)。此过程是所要求保护的定期更新的示例。哈希码h1是要求保护的未添加的哈希码或常规哈希码的示例。
如图2B所示,可以根据事务2(Tx2)更新主表251:UPDATE库存量SET库存量*10WHERE公司=‘A’。主处理部111可以不根据此时的事务2执行计算,因为事务2是一个重度更新。换句话说,主处理部分111可以不立即修改主表251的数据项。代替修改主表251的数据项,主处理部分111可以基于事务2的属性(例如,接收到的查询)来生成过滤器253。然后哈希码计算器115可以利用过滤器253计算主表251的哈希码,以获得哈希码h2。主处理部111可以将包括所获得的哈希码h2的块214添加到区块链201(参见B1)。哈希码h2是所要求保护的延迟哈希码的示例。
这里,在本示例性实施例中,将重度更新(例如,接收到的查询Tx2)作为附接到主表251的数据项(例如,条目)来处理,使得哈希码计算器115可以计算具有查询的主表251的哈希码。
然后,后台处理部分113可以根据主表251生成后台表261(参见箭头B2)。在该示例性实施例中,后台表261是主表251的快照。此外,后台表261除了主表251的数据列之外还包括“已应用”列262。“已应用”列262表示过滤器253是否已经应用于主题数据项。如果将过滤器253应用于主题数据项,则将“1”放置在“已应用”列262中的对应单元格中。
如图2C所示,后台处理部分113将重度更新应用于后台表261的每一行(参见箭头C1,C2)。换句话说,将过滤器253逐步应用于后台表261。例如,用过滤器253更新后台表261中的id 1的数据项。因为“id=1”的数据项表示“公司=A”的数据,所以将查询Tx2的指令应用于“id=1”行。在“id=1”行(例如数据项)中,“库存量”从“1000”修改为“10000”,这是通过将“1000”乘以“10”获得,如查询Tx2中所述。此外,将“1”放置在数据项“id=1”的“已应用”列262中,从而指示查询Tx2已应用于该数据项。
如图2D所示,当将重度更新应用于后台表261时,可以开始事务3“Tx3:SELECT库存量WHERE id=3以及UPDATE所有者SET‘Take’where id=3”。注意,此时过滤器253还没有被应用于后台表261的“id=3”的数据项。后台处理部分113获得过滤器253和后台表261中的数据项“id=3”的值(例如,“库存量=200”),以将过滤器253应用于数据表的数据项“id=3”的值。在该示例中,后台处理部分113将滤波器253应用于“id=3”,从而获得“库存量=2000”。
如图2E所示,主处理部分111可以根据根据后台处理部分113获得的结果来更新主表251,并且根据事务3(参见箭头E1)将所有者从“Yoshi”更改为“Take”。类似地,后台处理部分113可以根据结果来更新后台表261并改变所有者(参见箭头E2)。换句话说,根据过滤器253的更新被应用于主表251和后台表261两者。哈希码计算器115然后可以计算更新后的主表251的哈希码以获得哈希码h3。主处理部111可以将包括获得的哈希码h3的块215添加到区块链201(参见E3)。哈希码h3是要求保护的更新哈希码的示例。
如图2F所示,在对主表251进行某些更新时,主处理部分111可以将区块216添加到区块链201。当从块214向区块链201添加N个区块时,包括哈希码h2,主处理部分111可以用后台表261替换主表251。然后哈希码计算器115可以计算更新后的主表251的哈希码以获得哈希码hn'。主处理部111可以将包括所获得的哈希码hn'的块217添加到区块链201(参见箭头F1)。哈希码hn'是所要求保护的第二哈希码或替换的哈希码的示例。
此处,如上文参见图1所述,区块链系统100包括多个节点101。所有节点101或至少一些节点101在共同的时间点(例如,同时或并行)添加区块217。换句话说,节点101基于相同的触发来更新区块链201。共同时间点是要求保护的预定时刻的示例。
图3是用于更新主表251的过程的流程图。如果主处理部分111确定接收到的查询调用重度更新,则该过程可以开始。
主处理部分111首先在301创建用于重度更新查询的过滤器(例如,图2B-2E的过滤器253)。然后主处理部分111在302将该过滤器(例如,图2B-2E的过滤器253)添加到主表(例如,图2A-2F的主表)。然后,在303哈希码计算器115利用主表(例如,图2A-2F的主表)和过滤器(例如,图2B-2E的过滤器253)计算(例如,重新计算或更新)哈希码h。
图4是用于更新后台表(例如,图2B-2E的后台表)的过程的流程图。注意,如果主处理部分111生成过滤器(例如,图2B-2E的过滤器253)并且后台处理部分113生成后台表(例如,图2B-2E的后台表),则该处理开始。
首先在401后台处理部分113获得过滤器。然后在402后台处理部分113确定过滤器是否已应用于后台表中的所有数据项。如果没有将过滤器应用于所有数据项,则在403处,后台处理部分113根据过滤器来提取尚未更新的数据项的值。然后,在404后台处理部分113根据接收到的过滤器的属性来更新所提取的值。然后,在405,后台处理部分113使用更新后的值更新后台表261。如果在402,过滤器已经应用于所有数据项,则在406哈希码计算器115计算后台表的哈希码h'。然后在407后台处理部分113等待直到将主表替换为后台表。
图5是用于获取后台表中的数据项的值的过程的流程图。注意,如果在将过滤器应用于后台表的同时主处理部111接收到查询以获取后台表的值,则该处理可以开始。换句话说,如果多个过滤器同时附加到主表,则可以开始此过程。
首先在501后台处理部分113获取附着到主表的所有过滤器。然后,在502后台处理部分113根据过滤器从后台表获取数据项的值。在503,后台处理部分113可以确定是否存在未应用的过滤器。未应用的过滤器是指尚未被应用到后台表的过滤器。如果在503处确定存在未应用的过滤器,则在504处,后台处理部分113根据该未应用的过滤器来更新后台表中的数据项的值。在505,后台处理部分113使用更新后的值更新后台表。在506,后台处理部分113返回该值。
图6是用于更新主表及其关联的后台表中的数据项的值的过程的流程图。如果在将过滤器应用于后台表的同时主处理部111接收到用于更新主表的值的查询,则该处理可以开始。
在601主处理部分111首先更新主表的值。然后在602,哈希码计算器115计算主表的哈希码h。然后在603,后台处理部分113更新后台表的值。然后如果必要在604处,哈希码计算器115计算后台表的哈希码h'。
图7是添加区块(例如,图2F的块217)之前的过程的流程图。注意,如果将第N个区块添加到区块链中(参见图2F的描述),则该过程开始。
在701,将第N个区块添加到区块链之前,主处理部分111首先确定是否已将过滤器应用于后台表。如果在701,确定已应用过滤器,则在702主处理部分等待直到更新了后台表中的数据项的所有值。然后在703,主处理部分111将主表替换为后台表。然后在704,哈希码计算器115将哈希码h替换为哈希码h'。
参照图8,将描述本发明的替代实施例。替代实施例假定当后台处理部分113根据过滤器执行计算时(例如,后台处理部分113根据先前查询在后台执行先前的重度更新),而主处理部分111接收到查询(例如,第二查询)。
首先在801主处理部分111接收第二查询。然后在802主处理部分111确定接收到的查询(例如,第二查询)是否调用重度更新。如果在802,确定接收到的查询调用重度更新,则随后在803主处理部分111创建第二过滤器。然后在804,主处理部分111确定后台处理部分113是否正在后台执行先前的重度更新。如果在804确定后台处理部分113正在后台执行先前的重度更新,则在805后台处理部分113等待直到先前的重度更新已完成。在806,后台处理部分113开始在后台执行后续的重度更新(例如,第二查询的更新)。
这里,作为本公开的替代实施例,除了已经应用了重度更新的行之外,主表和后台表可以共享行。换句话说,主处理部分111可以使用写时复制技术来生成后台表。
参见图9,描绘了根据示例性实施例的节点101(例如,图1的节点101)的硬件配置的示例。如图所示,该节点可以包括用作处理器的一个示例的中央处理单元(CPU)91,经由主板(M/B)芯片组93连接到CPU 91并且用作存储器示例的主存储器92,以及通过相同的M/B芯片组93连接到CPU 91的显示驱动器94。网络接口96、磁盘设备97、音频驱动器98和键盘/鼠标99也通过桥接电路95连接到M/B芯片组93。
在图9中,各种配置元件通过总线连接。例如,CPU 91和M/B芯片组93以及M/B芯片组93和主存储器92分别经由CPU总线连接。而且,M/B芯片组93和显示驱动器94可以经由加速图形端口(AGP)连接。然而,当显示驱动器94包括兼容PCI Express的视频卡时,M/B芯片组93和视频卡经由PCI Express(PCIe)总线连接。另外,例如,当网络接san lie6连接到桥接电路95时,PCI Express可以用于连接。为了将磁盘设备97连接到桥接电路95,可以使用串行AT附件(ATA),并行传输ATA或外围组件互连(PCI)。为了将键盘/鼠标99连接到桥接电路95,可以使用通用串行总线(USB)。
执行存储在主存储器92中的程序的CPU 91可以用作图1的主处理部分111和/或图1的后台处理部分113和/或图1的哈希码计算器115。主存储器92和磁盘设备97可以用作图1的存储器117。
已经出于说明的目的给出了本发明的各种实施例的描述,但是这些描述并不旨在是穷举性的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。选择本文使用的术语是为了最好地解释实施例的原理,对市场上发现的技术的实际应用或技术上的改进,或者使本领域的其他普通技术人员能够理解本文公开的实施例。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (16)
1.一种用于在区块链系统中更新第一数据库以向区块链添加区块的计算机实现的方法,包括:
在接收到用于更新第一数据库的第一更新查询时,将所述第一更新查询作为数据项添加到所述第一数据库;
根据在所述第一数据库中存储的数据项计算第一哈希值,所存储的数据项包括所添加的所述第一更新查询的数据项;
使用所述第一哈希值,向所述区块链添加新区块;
通过复制未添加所述第一更新查询作为数据项的所述第一数据库来生成第二数据库;
根据被添加到所述第一数据库中作为数据项的所述第一更新查询,更新所述第二数据库;
基于在更新后的第二数据库中存储的数据项,计算第二哈希值;以及
使用所述第二哈希值,向所述区块链添加第二新区块。
2.根据权利要求1所述的方法,还包括:
在预定时刻用所述第二数据库替换所述第一数据库。
3.根据权利要求1所述的方法,还包括:
当向区块链添加预定数量的区块时,使用所述第二数据库替换所述第一数据库。
4.根据权利要求1所述的方法,其中,
所述区块链系统包括通过网络相互连接的多个节点,
每个节点包括所述第一数据库和所述第二数据库,所述第二数据库是所述第一数据库的副本,以及
当向区块链添加预定数量的区块时,使用所述第二数据库替换所述第一数据库。
5.根据权利要求1所述的方法,还包括:
根据第二更新查询的属性,确定不将所述第二更新查询作为所述数据项添加到数据库;
根据所述第二更新查询更新所述第一数据库;
基于根据所述第二更新查询所更新的第一数据库,计算未添加的哈希值;以及
使用所述未添加的哈希值向所述区块链添加第三新区块。
6.一种用于在区块链系统中更新第一数据库以向区块链添加区块的计算机可读存储介质,该计算机可读存储介质具有包含在其中的程序指令,该程序指令可由计算机执行以使得该计算机执行:
在接收到用于更新第一数据库的第一更新查询时,将所述第一更新查询作为数据项添加到所述第一数据库;
根据在所述第一数据库中存储的数据项计算第一哈希值,所存储的数据项包括所添加的所述第一更新查询的数据项;
使用所述第一哈希值向所述区块链添加新区块;
通过复制未添加所述第一更新查询作为数据项的所述第一数据库来生成第二数据库;
根据被添加到所述第一数据库中作为数据项的所述第一更新查询,更新所述第二数据库;
基于在更新后的第二数据库中存储的数据项,计算第二哈希值;以及
使用所述第二哈希值,向所述区块链添加第二新区块。
7.根据权利要求6所述的计算机可读存储介质,所述程序指令可由计算机执行以进一步使所述计算机执行:
在预定时刻用所述第二数据库替换所述第一数据库。
8.根据权利要求6所述的计算机可读存储介质,所述程序指令可由计算机执行以进一步使所述计算机执行:
当向区块链添加预定数量的区块时,使用所述第二数据库替换所述第一数据库。
9.根据权利要求6所述的计算机可读存储介质,其中,所述区块链系统包括通过网络相互连接的多个节点,
每个节点包括所述第一数据库和所述第二数据库,所述第二数据库是所述第一数据库的副本,以及
当向区块链添加预定数量的区块时,使用所述第二数据库替换所述第一数据库。
10.根据权利要求6所述的计算机可读存储介质,所述程序指令可由计算机执行以进一步使所述计算机执行:
根据第二更新查询的属性,确定不将所述第二更新查询作为所述数据项添加到数据库;
根据所述第二更新查询更新所述第一数据库;
基于根据所述第二更新查询所更新的第一数据库,计算未添加的哈希值;以及
使用所述未添加的哈希值向所述区块链添加第三新区块。
11.一种用于区块链系统向区块链添加区块的系统,所述系统包括:
在其上存储有程序指令的存储器;以及
与存储器通信的处理器,其中,所述系统被配置为执行一种方法,所述方法包括:
在接收到用于更新第一数据库的第一更新查询时,将所述第一更新查询作为数据项添加到所述第一数据库;
根据在所述第一数据库中存储的数据项计算第一哈希值,所存储的数据项包括所添加的所述第一更新查询的数据项;
使用所述第一哈希值,向所述区块链添加新区块;
通过复制未添加所述第一更新查询作为数据项的所述第一数据库来生成第二数据库;
根据被添加到所述第一数据库中作为数据项的所述第一更新查询,更新所述第二数据库;
基于在更新后的第二数据库中存储的数据项,计算第二哈希值;以及
使用所述第二哈希值,向所述区块链添加第二新区块。
12.根据权利要求11所述的系统,其中,所述方法还包括:在预定时刻用所述第二数据库替换所述第一数据库。
13.根据权利要求11所述的系统,其中,所述方法还包括:当向区块链添加预定数量的区块时,使用所述第二数据库替换所述第一数据库。
14.根据权利要求11所述的系统,其中,所述方法还包括:
根据第二更新查询的属性,确定不将所述第二更新查询作为所述数据项添加到数据库;
根据所述第二更新查询更新所述第一数据库;
基于根据所述第二更新查询所更新的第一数据库,计算未添加的哈希值;以及
使用所述未添加的哈希值向所述区块链添加第三新区块。
15.一种用于更新区块链中的第一数据库的计算机可读存储介质,其中,所述区块链由在区块链系统中包括的多个节点共享,所述节点经由网络彼此连接,所述节点根据所述第一数据库的第一更新生成要添加到所述区块链的区块,每个所述节点在接收到第一更新查询以更新所述第一数据库时,确定是使用常规更新将所述第一更新查询应用于所述第一数据库,还是使用延迟更新将所述第一更新查询应用于所述第一数据库,所述计算机可读存储介质具有包含在其中的程序指令,所述程序指令可由计算机执行以使所述计算机:
如果每个节点确定使用所述常规更新将所述第一更新查询应用于所述第一数据库,则:
根据所述第一更新查询,更新所述第一数据库;
根据更新后的第一数据库计算常规哈希值;以及
使用所述常规哈希值将新区块添加到所述区块链;以及
如果每个节点确定使用所述延迟更新将所述第一更新查询应用于所述第一数据库:
通过复制所述第一数据库来生成第二数据库;
将所述第一更新查询作为所述第一数据库的数据项添加到所述第一数据库;
根据所述第一更新查询作为所述数据项被添加到的所述第一数据库,计算延迟的哈希值;
使用所述延迟的哈希值向所述区块链添加新区块;
根据被添加到所述第一数据库的所述第一更新查询的所述数据项更新所述第二数据库;
当预定数量的区块被添加到所述区块链时,用所述第二数据库替换所述第一数据库;
根据替换后的第一数据库计算替换的哈希值;以及
使用所述替换的哈希值向所述区块链添加第二新区块。
16.根据权利要求15所述的计算机可读存储介质,其中,每个节点接收第二更新查询,并确定使用所述常规更新将所述第二更新查询应用于所述第一数据库,其中,所述程序指令还使所述计算机:
在根据所述第一更新查询更新所述第二数据库之前,通过将所述第一更新查询和所述第二更新查询应用于所述第一数据库来更新所述第一数据库;
基于使用所述第一更新查询和所述第二更新查询更新后的第一数据库,计算更新后的哈希值;以及
通过将所述第一更新查询和所述第二更新查询应用于所述第二数据库来更新所述第二数据库。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/674,629 | 2017-08-11 | ||
US15/674,629 US10877962B2 (en) | 2017-08-11 | 2017-08-11 | Deferred update of database hashcode in blockchain |
PCT/EP2017/083289 WO2019029834A1 (en) | 2017-08-11 | 2017-12-18 | DIFFERENT UPDATING OF A DATABASE HASH CODE IN A BLOCK CHAIN |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110998558A CN110998558A (zh) | 2020-04-10 |
CN110998558B true CN110998558B (zh) | 2023-09-19 |
Family
ID=61027666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780093711.XA Active CN110998558B (zh) | 2017-08-11 | 2017-12-18 | 区块链中数据库哈希码的延迟更新 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10877962B2 (zh) |
JP (1) | JP7044447B2 (zh) |
CN (1) | CN110998558B (zh) |
DE (1) | DE112017007656T5 (zh) |
GB (1) | GB2579934A (zh) |
WO (1) | WO2019029834A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884810B1 (en) * | 2017-11-16 | 2021-01-05 | Amazon Technologies, Inc. | Workload management using blockchain-based transaction deferrals |
CN110827008B (zh) * | 2018-08-08 | 2023-07-18 | 华为技术有限公司 | 一种区块链节点和交易方法 |
US11120024B2 (en) * | 2018-11-01 | 2021-09-14 | Sap Se | Dual-stack architecture that integrates relational database with blockchain |
EP3742367A1 (en) * | 2019-05-21 | 2020-11-25 | Obook Inc. | Method for determining information integrity and computer system using the same |
JP7398786B2 (ja) * | 2019-11-10 | 2023-12-15 | 株式会社アドダイス | 検査システム及び検査方法 |
US11838400B2 (en) * | 2019-11-19 | 2023-12-05 | International Business Machines Corporation | Image encoding for blockchain |
US11558180B2 (en) | 2020-01-20 | 2023-01-17 | International Business Machines Corporation | Key-value store with blockchain properties |
CN111796845B (zh) * | 2020-07-03 | 2022-05-24 | 杭州复杂美科技有限公司 | 数据库升级方法、状态数据查询方法、设备和存储介质 |
CN111984616B (zh) * | 2020-08-04 | 2023-08-01 | 中国人民银行数字货币研究所 | 一种更新共享文件的方法、装置和系统 |
CN112052141B (zh) * | 2020-09-02 | 2022-04-01 | 平安科技(深圳)有限公司 | 数据分片校验方法、装置、计算机设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577407A (zh) * | 2012-07-19 | 2014-02-12 | 国际商业机器公司 | 用于分布式数据库的查询方法及查询装置 |
CN106815530A (zh) * | 2016-12-26 | 2017-06-09 | 北京爱接力科技发展有限公司 | 数据存证方法、数据校验方法及装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2007295134A1 (en) * | 2006-09-15 | 2008-03-20 | Comfact Ab | Method and computer system for ensuring authenticity of an electronic transaction |
US9418094B2 (en) | 2008-02-13 | 2016-08-16 | Oracle International Corporation | Method and apparatus for performing multi-stage table updates |
US20100114832A1 (en) * | 2008-10-31 | 2010-05-06 | Lillibridge Mark D | Forensic snapshot |
JP5867902B2 (ja) * | 2012-03-06 | 2016-02-24 | 日本電気株式会社 | データベースの非同期レプリケーション方式 |
JP6251965B2 (ja) * | 2013-03-04 | 2017-12-27 | 日本電気株式会社 | 情報システムおよびデータベース復旧方法 |
US9507810B2 (en) | 2013-12-10 | 2016-11-29 | Sap Se | Updating database schemas in a zero-downtime environment |
WO2016042103A1 (en) | 2014-09-18 | 2016-03-24 | Gtech Uk Interactive Ltd | Methods and apparatus for facilitating online search for up-to-date available sports betting opportunities |
US9830342B2 (en) | 2014-11-20 | 2017-11-28 | International Business Machines Corporation | Optimizing database deduplication |
WO2016117032A1 (ja) * | 2015-01-20 | 2016-07-28 | 株式会社日立製作所 | データベースシステム、計算機システム、及び、データベース管理方法 |
JP6571375B2 (ja) * | 2015-04-24 | 2019-09-04 | 国立大学法人 筑波大学 | 著作物保護支援装置 |
US10089489B2 (en) * | 2015-06-02 | 2018-10-02 | ALTR Solutions, Inc. | Transparent client application to arbitrate data storage between mutable and immutable data repositories |
US10200198B2 (en) * | 2015-06-11 | 2019-02-05 | PeerNova, Inc. | Making cryptographic claims about stored data using an anchoring system |
US11562353B2 (en) | 2015-11-24 | 2023-01-24 | Mastercard International Incorporated | Method and system for gross settlement by use of an opaque blockchain |
WO2017136527A1 (en) * | 2016-02-05 | 2017-08-10 | Manifold Technology, Inc. | Blockchain-enhanced database |
US10339014B2 (en) * | 2016-09-28 | 2019-07-02 | Mcafee, Llc | Query optimized distributed ledger system |
US10360191B2 (en) * | 2016-10-07 | 2019-07-23 | International Business Machines Corporation | Establishing overlay trust consensus for blockchain trust validation system |
US10360149B2 (en) * | 2017-03-10 | 2019-07-23 | Oracle International Corporation | Data structure store in persistent memory |
-
2017
- 2017-08-11 US US15/674,629 patent/US10877962B2/en active Active
- 2017-12-18 CN CN201780093711.XA patent/CN110998558B/zh active Active
- 2017-12-18 WO PCT/EP2017/083289 patent/WO2019029834A1/en active Application Filing
- 2017-12-18 DE DE112017007656.0T patent/DE112017007656T5/de active Pending
- 2017-12-18 JP JP2020506334A patent/JP7044447B2/ja active Active
- 2017-12-18 GB GB2002740.5A patent/GB2579934A/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577407A (zh) * | 2012-07-19 | 2014-02-12 | 国际商业机器公司 | 用于分布式数据库的查询方法及查询装置 |
CN106815530A (zh) * | 2016-12-26 | 2017-06-09 | 北京爱接力科技发展有限公司 | 数据存证方法、数据校验方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US10877962B2 (en) | 2020-12-29 |
JP2020531949A (ja) | 2020-11-05 |
WO2019029834A1 (en) | 2019-02-14 |
US20190050402A1 (en) | 2019-02-14 |
CN110998558A (zh) | 2020-04-10 |
GB2579934A (en) | 2020-07-08 |
JP7044447B2 (ja) | 2022-03-30 |
DE112017007656T5 (de) | 2020-03-19 |
GB202002740D0 (en) | 2020-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110998558B (zh) | 区块链中数据库哈希码的延迟更新 | |
US11403278B2 (en) | Management of snapshot in blockchain | |
US10764030B2 (en) | Reduction in storage usage in distributed databases | |
US10467192B2 (en) | Method and apparatus for updating data table in keyvalue database | |
US10489378B2 (en) | Detection and resolution of conflicts in data synchronization | |
US10474377B2 (en) | Optimizing data writes in a distributed computing system | |
US9852201B2 (en) | Managing replication configuration availability | |
CN107220375B (zh) | 数据读写方法和服务器 | |
US9703850B2 (en) | Extracting, transforming, and loading (ETL) job creation using business term stage | |
CN111143461A (zh) | 映射关系处理系统、方法和电子设备 | |
US11568320B2 (en) | Handling system-characteristics drift in machine learning applications | |
US20170161359A1 (en) | Pattern-driven data generator | |
CN113792232A (zh) | 页面特征计算方法、装置、电子设备、介质及程序产品 | |
US10922312B2 (en) | Optimization of data processing job execution using hash trees | |
US20190236074A1 (en) | Normalization of confidence thresholds in federated environments | |
CN110019162B (zh) | 实现属性归一的方法和装置 | |
CA2922388C (en) | Method and apparatus for updating data table of keyvalue database | |
CN115454977A (zh) | 一种数据迁移方法、装置、设备和存储介质 | |
CA3197668A1 (en) | System and method for matching into a complex data set | |
CN113360494A (zh) | 一种宽表数据的生成方法、更新方法和相关装置 | |
CN103488778A (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 |