CN116134420A - 使用多个区块链以将事务应用于持久存储系统中的持久数据对象集 - Google Patents
使用多个区块链以将事务应用于持久存储系统中的持久数据对象集 Download PDFInfo
- Publication number
- CN116134420A CN116134420A CN202180062960.9A CN202180062960A CN116134420A CN 116134420 A CN116134420 A CN 116134420A CN 202180062960 A CN202180062960 A CN 202180062960A CN 116134420 A CN116134420 A CN 116134420A
- Authority
- CN
- China
- Prior art keywords
- transaction
- blockchain
- bca
- persistent
- pdbms
- 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
- 230000002085 persistent effect Effects 0.000 title claims abstract description 113
- 238000000034 method Methods 0.000 claims description 57
- 239000003999 initiator Substances 0.000 claims description 55
- 230000008859 change Effects 0.000 claims description 28
- 230000008569 process Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 13
- 238000003780 insertion Methods 0.000 claims description 9
- 230000037431 insertion Effects 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 7
- 238000012986 modification Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 16
- 230000010076 replication Effects 0.000 description 14
- 238000013459 approach Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 239000007787 solid Substances 0.000 description 4
- 206010000210 abortion Diseases 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003362 replicative effect Effects 0.000 description 3
- 230000026676 system process Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
- G06F16/1837—Management specially adapted to peer-to-peer storage networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
- G06F16/1844—Management specifically adapted to replicated file systems
-
- 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/2365—Ensuring data consistency and integrity
-
- 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
-
- 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
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
-
- 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Human Computer Interaction (AREA)
Abstract
通过跨多个区块链记录的事务在持久存储系统(PSS)的网络上复制持久数据对象的分类账储存库。在每个PSS上复制区块链。使用多个区块链能够实现更大的并行性;然而,使用多个区块链需要采取措施,所述措施确保跨多个区块链分布的事务以确保事务一致性级别的方式应用。此外,所述措施是高效的,从而减少了维护事务一致性级别的开销,并增加了使用多个区块链应用事务的吞吐量。
Description
技术领域
本发明涉及企业级持久存储系统,诸如文件系统、数据库管理系统、键-值存储系统、文档存储系统,特别涉及在企业级持久存储系统内原生实现区块链技术。
背景技术
传统的持久存储系统可以处理由多个并发用户读取和/或修改的大量数据。企业级持久存储系统(以下简称PSS)维护由PSS管理的持久数据的数据完整性、一致性和安全性。
PSS可以是例如由DBMS管理的数据库、存储在文件系统中的文件、或由键-值存储系统管理的键-值对象、由文档存储系统(DOCS)管理的文档(例如,JSON或XML文档)。PSS将数据存储在持久数据对象中。例如,持久数据对象集可以是由DBMS管理的数据库表、由键-值存储系统管理的键-值对、由DOCS管理的文档集或者由文件系统管理的文件。持久数据对象可以是包括多个持久数据对象的复合数据对象。例如,在DBMS中,数据库表可以包括作为持久数据对象的多个行。在文件系统中,文件可以包括作为持久数据对象的多个块,目录可以是包含文件并且甚至包含作为持久数据对象的其他目录的持久数据对象。在DOCS中,持久数据对象可以是JSON文档的集合。
各种PSS(诸如DBMS和键-值存储系统)为更新和查询PSS提供了卓越的性能。PSS的用户可以依赖于存储在PSS中的持久数据对象的有效性,因为对数据对象的改变由诸如公司或组织之类的集中机构控制。通常,对存储在PSS中的数据所做的任何改变都由属于同一中央机构的用户进行,因此受其访问策略的约束。
对于分离的实体(例如,企业、组织、政府)来说,以实体可以依赖于共享数据的有效性的方式来共享对任务关键的共享数据的读取和写入访问变得越来越重要。这种数据在本文中被称为分布式分类账数据。
用于实现分布式分类账数据的方法是区块链应用方法。在这种方法中,分布式分类账数据作为持久数据对象在每个PSS处被复制在“对象的分类账储存库”中。对持久数据对象(“分类账对象”)的改变由在PSS中的一个PSS(“发起者PSS”)处发起但未提交的事务进行。事务和相应的改变被记录在添加到区块链的区块内,该区块链跨PSS中的每个PSS复制。其他PSS从区块链中的区块读取关于事务的信息,并在其他PSS中的每个PSS处重放(replay)对持久数据对象的副本(replica)的相应改变。术语重放意味着在不提交改变的情况下进行改变。改变由其他PSS“批准”。一旦被批准,PSS就会提交改变。关于改变的批准的活动被记录在区块链中的区块中。
如上所示,区块链应用方法使用区块链来将改变传播到对象的分类账储存库。关于使用区块链来传播改变的问题源于如下事实,即向区块链添加区块是串行操作,该串行操作需要多个PSS参与以添加区块并批准事务。这些操作的串行性质阻碍了在PSS处复制对象的分类账储存库的吞吐量,特别是阻碍了并行应用事务以在PSS之间复制事务的能力。
附图说明
在附图中:
图1A是描绘根据本发明实施例的区块链应用网络的图。
图1B是描绘在本发明实施例中使用的数据结构的图。
图2是描绘根据本发明实施例的区块链应用过程的图。
图3是描绘根据本发明实施例的区块链中的区块的图。
图4是描绘根据本发明实施例的使用依赖性检查点方法的区块链应用过程的图。
图5是图示根据实施例的使用立墓碑(tombstoning)和诱发的(induced)事务依赖性来避免唯一约束的复制定时不一致性的过程的图。
图6是图示根据实施例的使用诱发的事务依赖性来避免外键约束的复制定时不一致性的过程的图。
图7是描绘可以用于实现本发明实施例的计算机系统的图。
图8描绘了根据本发明实施例的可以用于控制计算机系统的操作的软件系统。
具体实施方式
在以下描述中,为了解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。然而,显而易见的是,可以在没有这些具体细节的情况下实践本发明。
总体概述
本文描述了用于使用区块链应用在PSS的网络上复制持久数据对象的分类账储存库的方法,该方法实现用于使用区块链应用复制改变的更大的并行性。这种方法在本文中被称为聚合区块链应用,因为方法依赖于聚合区块链。聚合区块链包括多个区块链,其中每个区块链都被复制在PSS的网络中的每个PSS上。任何PSS都可以用于批准事务并将事务复制到持久数据对象的分类账储存库。聚合区块链中的每个区块链在本文中被称为成员区块链或简称为区块链。
可以通过不同的成员区块链处理对于分类账储存库中的持久数据对象的单独的事务。事实上,如后文所解释的那样,关于单个复制的事务的每个PSS的批准的信息可以被记录在单独的区块中,该区块可以位于单独的成员区块链中。因此,关于单个复制的事务的信息可以被记录在不同的成员区块链中。
在聚合区块链应用下,分类账储存库的事务的历史跨成员区块链被记录。成员区块链可以按适当的次序合并,以提供关于对分类账储存库进行的事务的历史排序信息。实际上,聚合区块链是记录关于事务的历史排序信息的单个逻辑区块链。因此,成员区块链在本文中被统称为聚合区块链。
在实施例中,向单个成员区块链添加区块仍然是串行操作,其阻碍了通过单个成员区块链并行应用事务的吞吐量。然而,跨多个成员区块链复制事务使得能够并行应用更多事务。
当并行应用事务以将事务复制到网络中的任何PSS时,必须以与事务依赖性一致的方式安排事务的应用或以其他方式对事务的应用进行排序。与事务依赖性的一致性需要解决要应用的每个事务的事务依赖性,这个过程可能需要开销。当要并行应用更多事务时,开销会复杂化。因此,越是能高效地解决事务依赖性,应用事务的吞吐量和可扩展性就越大。本文中描述了用于更高效地解决事务依赖性的方法。
事务处理
在事务处理中,对持久数据对象的改变是由事务进行的。事务是改变持久数据对象的操作的集合。对事务的所有改变都是原子地进行的。通过提交事务使改变永久化。如果事务被中止或以其他方式未提交,那么事务回滚。
在分布式事务处理中,多个PSS参与者提交分布式事务以使用由事务管理器管理的分阶段方法来改变相应的数据对象。分阶段方法至少包括参与者达到准备完成状态的阶段。当处于事务的准备完成状态时,参与者已执行达到参与者可以保证能够提交事务但尚未提交事务的状态所需的操作。参与者可以被事务管理器指示达到准备完成状态,并向事务管理器传达参与者是否已经达到准备完成状态。改变分类账储存库中的持久数据对象的分布式事务在本文中可以被称为区块链事务。
作为本文所用的术语,事务处理还要求日记记录(journaling)。在日记记录中,事务对持久数据对象所做的改变存储在持久日记中。持久日记包括日记记录,这些日记记录对于事务对持久数据对象所做的改变进行记录。每个记录可以指定数据对象的哪些字段、列、元素或部分被改变以及其由改变创建的新值。也可以指定被新值替换的旧值。
在预写日记记录中,事务所做的改变的日记记录在提交事务和/或达到准备完成状态之前被持久地存储。此外,日记可以被其他PSS读取以复制持久数据对象。
事务依赖性
根据实施例,并行应用事务是以与持久数据对象级别上的事务依赖性一致的方式进行的。基于事务的提交时间,当在特定事务修改持久数据对象之前另一个事务添加或修改持久数据对象时,该特定事务具有对该另一个事务的持久数据对象级别上的事务依赖性。为了在持久数据对象级别的基础上与事务依赖性一致地应用特定事务,仅在应用特定事务对其具有事务依赖性的任何其他事务之后才应用特定事务。此后,当使用术语事务依赖性时,除非另有说明,否则该术语指持久数据对象级别上的事务依赖性。
例如,改变源数据库中的表中的行的事务TA在改变同一行的事务TB提交之前提交。因为事务TA在事务TB提交之前提交了对同一行的改变,所以事务TB具有对事务TA的事务依赖性。为了以与事务依赖性一致的方式在目标数据库中应用这些事务,必须在应用事务TB之前在目标数据库中应用事务TA。
事务依赖性的不同级别的另一个示例是数据库级别。依据数据库级别事务依赖性,按照针对数据库中的任何数据库对象(例如行)提交事务的次序来应用事务。
例如,改变源数据库中的表中的行A的事务TA在改变表中的不同行B的事务TB提交之前提交。为了根据数据库级别事务依赖性在目标数据库中复制这些事务,事务TA在事务TB之前被应用于目标数据库,即使事务改变了不同的行。
当来自源数据库的事务在事务一致性的数据库级别被应用于目标数据库时,源数据库和目标数据库可以通过数据库状态的同一序列进行转换。另一方面,当这些事务在一致性的持久数据对象级别被应用时,源数据库和目标数据库不可以通过数据库状态的同一序列进行转换。
例如,改变源数据库中的表中的行A的事务TA在改变表中的不同行B的事务TB提交之前提交。为了以与持久数据对象级别事务依赖性一致的方式在目标数据库中复制这些事务,可以在应用事务TA之前在其他数据库中应用事务TB。这可能将目标数据库置于在源数据库中不存在的数据库状态。
复制的DBMS中的聚合区块链应用
聚合区块链应用是在DBMS的上下文中描述的。然而,聚合区块链应用可以用在其他类型的PSS中,这些PSS具有使用分布式事务处理进行改变的能力。
在DBMS的上下文中,持久数据对象的分类账储存库包括复制的数据库表的分类账集中的行。每个分类账表被称为分类账数据库表或分类账表。分类账数据库表集在每个DBMS处被复制。针对DBMS处的任何数据库表的事务都记录在聚合区块链中的区块内,特别是记录在跨每个DBMS复制的成员区块链中的区块内。DBMS从成员区块链读取改变,并将事务应用于分类账数据库表集的相应副本。
各自参与聚合区块链应用以复制特定分类账表的多个DBMS的集合在本文中被统称为区块链应用网络(“BCA网络”)。BCA网络中的每个DBMS在本文中可以简称为参与者DMBS(PDBMS)。可以使用区块链应用来复制的改变包括DML(数据库操纵语言)改变(即,改变分类账表中的数据的改变)或DDL(数据库定义语言)改变(其包括改变数据库字典以实现对BCA网络(包括分类账表的结构)的改变的改变)。
在每个PDBMS上存储和维护数据库表的分类账集和每个成员区块链的副本。因此,如果聚合区块链包括三个成员区块链,则每个PDBMS都包括三个成员区块链中的每个成员区块链的副本。
根据实施例,针对一个或多个分类账表的区块链事务由单个发起者PDBMS发起。发起者PDBMS是成员区块链的领导者,发起者PDBMS使用成员区块链来将事务所做的改变传播到其他PDBMS。区块链的领导者负责提议要添加到成员区块链的区块,如James Stamos等人在2020年7月17日所提交的美国专利申请No.16/932,633“Native Persistent StoreSupport For Blockchains”(代理案卷编号No.50277-5374/ORA190079-US-NP)中进一步描述的,其全部内容通过引用并入。
为了阐述的目的,PDBMS作为领导者的成员区块链被称为PDBMS的成员区块链或PDBMS成员区块链。根据实施例,关于成员区块链,PDBMS频繁地和/或定期地交替区块链的领导权。在任何时间点,PDBMS都可以是零个或更多个成员区块链的领导者。
对于由发起者PDBMS发起的区块链事务,发起者PDBMS通过发起者PDBMS的成员区块链来与其他PDBMS协调复制事务。其他PDBMS在本文中被称为关于成员区块链和由发起者PDBMS发起的事务的跟随者PDBMS。
PDBMS在本文中被描述为向区块链添加区块。向区块链添加区块需要PDBMS的参与,每个PDBMS根据共识协议向其成员区块链的相应副本永久地追加区块,这将在后文描述,并在Native Persistent Store Support For Blockchains中详细地描述。
通过经由与PDBMS建立的数据库会话简单地向PDBMS发出DML语句,数据库应用客户端可以请求执行改变分类账表的事务。该PDBMS成为事务的发起者PDBMS。
根据实施例,聚合区块链应用将事务复制到由发起者PDBMS制作的分类账表集。使用两阶段提交的变体在跟随者PDBMS处复制事务,该两阶段提交的变体在事务的发起者PDBMS接收对于提交事务的请求时开始。在第一阶段,即准备提交阶段,发起者PDBMS向该发起者PDBMS作为领导者的成员区块链添加区块。该区块指定事务所做的改变。作为结果,每个PDBMS都将该区块包含在成员区块链的它们的相应副本中。
每个跟随者PDBMS在不提交改变的情况下重放在区块中指定的改变。基于重放改变的结果,跟随者PDBMS投票决定提交或不提交事务。然后每个跟随者PDBMS将其投票记录在区块中,该区块被添加到跟随者PDBMS的相应成员区块链。作为结果,在多个成员区块链中存在记录提交或不提交事务的投票的多个区块。
发起者PDBMS从多个成员区块链的其本地副本读取这些区块,以读取每个跟随者PDBMS的投票。基于读取的投票,发起者PDBMS根据共识算法确定提交共识结果。
在第二阶段,如果提交共识结果为提交,则发起者PDBMS在本地提交事务,并将把提交共识结果记录为提交的区块添加到发起者PDBMS的成员区块链。跟随者PDBMS读取记录在发起者PDBMS的成员区块链的其相应副本中的区块中的共识提交结果,并在本地提交事务。如果提交共识结果为不提交,则发起者PDBMS中止区块链事务,并且执行了区块链事务的每个跟随者PDBMS在本地中止事务。
如将更详细地解释的,区块链存储在包括日志记录的日志中,每个日志记录都存储区块。通过提议各自包含区块的日志记录来提议添加区块。
通常,BCA参与者通过遵循共识算法来达成共识。使用共识算法来对是否接受提议达成共识,然后在共识为接受提议时对提议采取动作。提议可以是向日志添加提议的日志记录(其包括区块),或者采取另一种动作。
在基于日志的共识算法中,参与者对向日志追加日志记录达成共识,特别是对于追加日志记录的次序以及每个日志记录的内容应该是什么达成共识。日志的副本由每个参与者维护。在区块链应用中,每个日志记录存储了区块链中的区块,并且区块链中区块的次序镜像了日志记录的次序。
聚合区块链应用是作为PDBMS的原生特征实现的。通过向每个PDBMS发出DDL命令来创建和配置区块链网络。对分类账表和相关联的区块链的改变被集成到PDBMS的原生事务和复制能力(包括并行地复制改变的能力)中。可以使用可用的PDBMS工具来监视性能。数据库应用可以被编程为以与应用被配置为读取和写入传统表相同的方式读取和写入分类账表。实现分类账表及其相关联的区块链不需要外部(即PDBMS外部的)数据结构。
说明性BCA网络
图1A描绘了作为根据本发明实施例的BCA网络的BCA网络101。参照图1A,BCA网络101包括PDBMS 110、PDBMS 120和PDBMS 130。
BCA网络101使用聚合区块链应用来维护分类账表集。使用聚合区块链应用需要PDBMS 110、PDBMS 120和PDBMS 130中的每一个维护复制的数据结构,诸如分类账表和成员区块链。图1B是显示复制的数据结构和其中逻辑上包含的副本的组织视图,但没有描绘哪个参与者托管副本。
参照图1B,图1B描绘了聚合BC 103,聚合BC 103是包括三个成员区块链成员BC103-B、成员BC 104-B和成员BC 105-B的聚合区块链。成员BC 103-B、成员BC 104-B和成员BC 105-B中的每一个都包括副本,副本分别是副本成员区块链103-B1、103-B2&103-B3,104-B1、104-B2&104-B3,以及105-B1、105-B2&105-B3。
区块链用于将改变复制到分类账表102。分类账表102包括三个副本,它们是分类账表副本102-1、102-2和102-3。没有描绘其他表。
区块链存储在包括BC日志记录的区块链日志(BC日志)中。每个日志记录存储区块链中的区块。根据实施例,BC日志是包括用于存储区块链的至少一个列的数据库表,BC日志的每一行(BC日志记录)存储区块链的区块。
图1B描绘了BC-日志103-L、BC-日志104-L和BC-日志105-L。BC-日志103-L、BC-日志104-L和BC-日志105-L中的每一个都包括三个副本。BC-日志103-L、BC-日志104-L和BC-日志105-L的副本分别包括BC-日志103-L1、BC-日志103-L2&BC-日志103-L3,BC-日志104-L1、BC-日志104-L2&BC-日志104-L3,以及BC-日志105-L1、BC-日志105-L2&BC-日志105-L3;这些BC日志副本分别存储成员区块链副本103-B1、103-B2&103-B3,104-B1、104-B2&104-B3,以及105-B1、105-B2&105-B3。
每个日志记录都包括日志标识符(日志ID),该日志标识符唯一地识别日志中的日志记录。日志记录的每个副本包括相同的日志ID。对日志ID进行排序,使得日志记录的日志ID大于保持存储在分类账中的区块链中较早区块的任何其他日志记录的日志ID。
在实施例中,BC日志中的日志ID是单调递增的数值,诸如整数。关于存储在BC日志中的区块链,BC日志中的日志记录的日志ID表示该日志记录中包含的区块的区块位置,其中区块位置是区块在区块链中的位置。例如,日志ID为0的日志记录将创世区块存储在相应的区块链中,日志记录ID为1的日志记录将第二个区块存储在相应的区块链中,依此类推。
图1A描绘了如何跨BCA网络101托管上述副本。PDBMS 110托管分类账表副本102-1以及BC日志103-L1、104-L1和105-L1。PDBMS 120托管分类账表副本102-2以及BC日志103-L2、104-L2和105-L2,并且PDBMS 130托管分类账表副本102-3以及BC日志103-L3、104-L3和105-L3。
如前所述,BCA网络101的每个PDBMS都是成员区块链的领导者,它们使用该成员区块链将事务复制到BCA网络101的其他PDBMS,而其他PDBMS是该成员区块链的跟随者。成员区块链的领导者或跟随者也被称为包含该成员区块链的BC日志的领导者或跟随者。例如,PDBMS 110是BC日志103-L和成员区块链103-B的领导者,而PDBMS 120和130是跟随者。
针对共识驱动的动作的附加术语
BCA网络101或其任何参与者的各种操作被描述为根据或通过使用共识算法来执行动作。如前所述,共识算法需要算法的参与者遵循用于算法的协议,这可以要求诸如以下的步骤:发起者PDBMS发送提议(例如,提议的日志记录和日志ID),其他PDBMS接收提议并通过投票接受或拒绝提议来响应提议,发起者PDBMS根据基于日志的共识协议基于接收到的投票来确定共识结果,然后发起者PDBMS将共识结果发送给参与者。当投票、接受、拒绝时,或当操作被描述为正在根据或通过使用共识算法执行时,可以假设参与者执行协议所需以及根据协议的动作。
如将更详细解释的,BCA参与者遵循共识算法来确定是否提交区块链事务。如前所述,用于提交区块链事务的共识结果被称为提交共识结果。跟随者PDBMS对提交分布式事务的提议的接受或拒绝在本文中分别被称为提交或不提交的投票。
基于日志的共识算法
根据实施例,BCA网络101使用基于发起者的基于日志的共识算法来控制PDBMS是否将日志记录添加到BC日志。通常,基于发起者的基于日志的共识算法要求领导者PDBMS向跟随者PDBMS做出将日志记录追加到日志的提议,并管理PDBMS之间关于是否接受提议的共识。
响应于发起者PDBMS发送消息以提议日志记录,其他PDBMS确定接受或拒绝提议并将该确定传达给发起者PDBMS。PDBMS基于一个或多个共识准则来确定提议被接受还是拒绝,该一个或多个共识准则至少部分地基于PDBMS中有多少接受或拒绝提议。该确定在本文中被称为共识结果。共识准则的示例是接受提议的日志记录的PDBMS的法定人数。发起者PDBMS将共识结果传达给其他PDBMS。
PDBMS以多种方式传达对提议的接受。一种方式是向发起者PDBMS发送数字签署的消息,该消息指定PDBMS接受或拒绝提议。
当共识结果是将区块添加到成员区块链时,区块被永久地追加到每个PDBMS处的成员区块链的每个副本。当PDBMS或BCA网络在本文中被描述为将区块添加到成员区块链或将包含区块的日志记录添加到BC日志时,包括区块的日志记录被添加到PDBMS的BC日志的相应本地副本。任何PDBMS以后都可以读取和访问日志记录和/或区块,以基于区块中的信息执行处理。在Native Persistent Store Support For Blockchains中描述了关于将区块添加到区块链和将日志记录添加到BC日志的进一步的细节。
聚合区块链应用复制概述
图2是描绘根据本发明实施例的用于聚合区块链应用的过程的流程图。该过程将DML改变复制到跨BCA网络的分类账表。
该流程图描绘了操作的正常过程,其中使用聚合区块链应用来复制由事务做出的DML改变,而没有遇到错误条件或异常。在Native Persistent Store Support ForBlockchains中描述处理错误条件和异常。在涉及复制区块链事务的场景中说明了操作,对于该区块链事务,PDBMS 110是发起者PDBMS,而PDBMS 120&130是跟随者PDBMS。区块链事务由已经与发起者PDBMS 110建立数据库会话的数据库客户端发起。
参照图2,发起者PDBMS 110执行针对分类账表102-1的区块链事务内的数据库操作(205)。此类数据库操作包括执行一个或多个数据库语句(包括DML语句和一个或多个区块链过程)。数据库操作可以包括保存点,或者甚至包括回滚。区块链过程是计算机可执行的过程或功能,其实施方式被BCA网络101的成员接受并对BCA网络101的成员可见,并且其由BCA网络101的PDBMS执行以修改分类账表。在Native Persistent Store Support ForBlockchains中进一步描述了区块链过程。
发起者PDBMS 110从客户端接收提交数据库事务的请求。作为响应,发起者PDBMS110发起区块链事务并准备提交区块链事务作为两阶段提交的一部分并准备好提交(210)。
区块链事务改变多个参与PDBMS中的每个参与PDBMS中的数据库。每个PDBMS处的改变由PDBMS发起和/或执行的本地事务进行,以作为区块链事务的一部分而改变PDBMS处的数据。发起者PDBMS指派分布式事务id(“分布式txid”)。本地事务被称为区块链事务的分支事务。每个PDBMS为相应的分支事务指派本地事务id并将本地事务id与分布式txid相关联。
分布式事务的执行、提交和终止可以由发起者PDBMS协调。在优选实施例中,区块链事务的提交由发起者PDBMS开始,但区块链事务的实际提交和终止以去中心化方式进行,如后面解释的那样。根据另一个实施例,使用在X/Open XA规范中指定的分布式事务协议来执行分布式事务。在这种协议下,发起者PDBMS是分布式事务的事务管理器。
发起者PDBMS 110将包括事务上下文的“TC区块”添加到作为成员BC 103-B的发起者PDBMS 110的成员区块链。事务上下文包括由发起者PDBMS为分支事务执行的数据库操作的规范以及由于执行这些数据库操作而改变的一个或多个行的“写入集”。提议的TC区块中的写入集在本文中被称为提议的写入集。TC区块可以包括其他信息,诸如区块链事务的分布式txid。后文将更详细地描述TC区块的内容。
跟随者PDBMS 120和130从成员BC 103-B读取TC区块,并在由跟随者PDBMS 120和130发起的分支事务内重放事务上下文(即,在事务上下文中执行由规范指定的数据库操作的序列)以生成本地写入集(230)。本地写入集与提议的写入集的比较至少部分地确定跟随者PDBMS 120和130是否将投票提交分布式事务。跟随者PDBMS120和130发起本地事务以重放TC区块中的事务上下文以生成本地写入集。将本地写入集与提议的写入集进行比较(235)。
跟随者PDBMS 120和130基于本地写入集与提议的写入集的比较来确定投票提交提议的数据库事务(240)。通常,在确定是否投票提交分布式事务中,跟随者PDBMS 120和130确定是否满足一个或多个DML提交准则。DML提交准则包括提议的写入集是否与本地写入集匹配,以及如果匹配,那么是否满足一个或多个其他准则(如果有的话)。写入集的行应当包括分类账表的主键(primary key)或类似的唯一标识符,以确保可以匹配相同行的副本以进行比较。在确定提议的写入集和本地写入集是否匹配时使用集合比较。在本地写入集中插入行的次序和在提议的写入集中插入行的次序不影响比较。例如,集合{A,B,C}等于集合{A,C,B},因为两个集合具有相同的三个元素。
接下来,跟随者PDBMS 120和130准备提交所提议的DB事务(245)。在准备提交之后,跟随者PDBMS 120和130投票提交区块链事务,将它们的投票记录在PDBMS 120和130添加到它们各自的成员区块链BC 104-B和105-B的单独的区块中(250)。
发起者PDBMS 110分别从BC 104-B和105-B读取记录PDBMS120和130的投票的区块。基于投票,发起者PDBMS 110确定提交共识结果为提交区块链事务(260)。作为对此确定的响应,发起者PDBMS 110将区块添加到成员BC 103-B,该区块记录区块链事务的提交共识结果为提交(265),然后发起者PDBMS 110提交区块链事务,这包括为分布式事务提交发起者PDBMS 110的相应本地事务。
跟随者PDBMS 120和130从成员BC 103-B读取区块,该区块记录了提交分布式事务的提交共识结果。响应于确定提交共识结果,跟随者PDBMS 120和130为分布式事务提交它们各自的本地事务。
在本发明的实施例中,跟随者PDBMS可能尚未在本地重放区块链事务或者提交区块链事务,但是可以得知区块链事务的提交共识结果为提交。跟随者PDBMS(1)可以重放区块链事务中的数据库操作并验证本地写入集和提议的写入集是否相同,或者(2)跟随者PDBMS可以忽略数据库操作并重放写入集中的单独改变。行为如(1)中的PDBMS被称为事务批准者,而行为如(2)中的PDBMS被称为事务复制者。作为事务复制者的优点是复制避免了区块链事务中原始数据库操作中可能存在的任何不确定性。
图2中描绘的聚合区块链应用过程使用集中式方法来确定区块链事务的提交共识结果,其中只有发起者PDBMS确定提交共识结果并将其传达给跟随者PDBMS。集中式方法可能具有单点故障,并且可能无法容忍来自发起者PDBMS的恶意行为。将数字签名附加到投票可以减轻但不能消除发起者PDBMS以集中式方法进行恶意行为的可能性。
在实施例中,可以使用提交共识结果的去中心化确定。在提交共识结果的去中心化确定中,跟随者PDBMS和发起者PDBMS可以通过检查在多个成员区块链的它们各自的本地副本中为区块链事务记录的投票来独立地确定提交共识结果。因此,跟随者PDBMS确定共识结果,而无需等待指定发起者PDBMS对区块链事务的提交共识结果所做的确定的区块。响应于跟随者PDBMS独立地确定区块链事务的提交共识结果,如果提交共识结果为提交,则跟随者PDBMS在本地提交区块链事务,或者如果提交共识结果为不提交,则跟随者PDBMS中止区块链事务。
跟踪对单独事务的依赖性的替代方法是以保守、粗粒度的方式跟踪对成员区块链的依赖性,并为每个成员区块链维护本地水印。在这种替代方法中,每个PDBMS在持久存储中为BCA网络中的每个成员区块链维护低水印(LWM)。成员区块链上的每个事务(直到并包括LWM事务)都已被PDBMS应用(即,如果法定人数共识为提交,则执行和提交,或者如果法定人数共识为中止,则中止或忽略)。在为本地执行安排区块链事务T之前,PDBMS(或将事务添加到成员区块链的PDBMS)根据出现在每个成员区块链上的T的依赖事务在成员区块链上的位置来对所述依赖事务进行排序。一旦该成员区块链的低水印指向该成员区块链上最后的依赖事务或该成员区块链上的后续事务,则区块链事务T对该成员区块链没有未解决的本地依赖性。一旦区块链事务T对任何本地成员区块链都没有未解决的本地依赖性,就可以为本地执行安排区块链事务T。
因为区块链事务可以同时在多个PDBMS处发起并锁定行,所以可能导致分布式死锁。可以采用用于检测或避免分布式死锁的现有技术。在可能的情况下,可以首先优先考虑已经通过共识批准提交的事务,其次是已经在成员区块链中并正在另一个PDBMS处重放的事务,再次是尚未在成员区块链中的事务。
区块链应用中的并行介绍
PDBMS可能正在重放在单个成员区块链中和跨多个成员区块链记录的多个事务以生成写入集。如前所述,与事务依赖性一致地应用事务,这需要解决单独事务的事务依赖性。在一般层次上,事务依赖性解决方案可以通过使用穷举的方法来解决。例如,穷举的事务依赖性解决方案可能需要访问和检查映射,所述映射被维护以跟踪由事务改变的持久数据对象以及事务改变持久数据对象的相对次序和提交事务的相对次序。检查映射以确定先前修改持久数据对象的任何事务是否已被重放和提交。
本文描述的用于事务依赖性解决方案的新方法可以比穷举的事务依赖性解决方案快得多地并且以更少的开销来解决事务的事务依赖性。新方法在本文中被称为依赖性检查点方法,因为方法基于在BCA网络中的每个BCA参与者处维护的高效维护的依赖性检查点。在高层次上,依赖性检查点是与事务提升(promotion)时间戳(“提升时间戳”)相对比的全局时间戳,事务提升时间戳与由提交的事务改变的每个持久数据对象相关联。如果数据库对象的提升时间戳小于依赖性检查点,那么改变持久数据对象的任何事务都已被重放和提交。可以执行此比较以解决事务依赖性,其开销比穷举的事务依赖性解决方案少得多。
依赖性检查点方法基于以下特征:
时间戳:时间戳表示逻辑时间或实际时间,并与事件(诸如对持久数据对象的改变以及事务的开始和提交)相关联。与事件相关联的时间戳表示基于其他事件的时间戳该事件相对于其他事件发生的相对次序。例如,逻辑时间戳是系统改变号(“SCN”)。
全局时间戳:全局时间戳表示跨BCA网络中所有参与者的逻辑时间或实际时间,并且用于表示跨所有参与者发生的事件的相对次序。例如,可以使用Lamporting方案跨BCA参与者维护全局时间戳。
提升时间戳:在实施例中,提升时间是表示事务何时第一次改变任何分类账持久数据对象的全局时间戳。PSS中的事务可以对不是分类账持久数据对象的持久数据对象进行第一次改变,然后对作为分类账持久数据对象的第二持久数据对象进行第二次改变,然后对分类账持久数据对象进行第三次改变。每个改变在不同的时间戳发生。事务的提升时间戳是第二次改变发生的时间戳。
对象改变元数据:持久数据对象包含描述对持久数据对象的最后提交的改变的属性。这些属性包括改变持久数据对象的最后的区块链事务的分布式事务id(LDTXID)、最后提升时间(LPTIME),最后提升时间为改变持久数据对象的最后的区块链事务的提升时间。在实施例中,对象改变元数据还包括版本号。当TC区块的事务改变持久数据对象时,先前版本的持久数据对象的对象改变元数据被包括在事务上下文中,而新版本的持久数据对象被包括在写入集中。
最早本地发起事务(OLIT):在PDBMS中,在某个时间点可能存在未提交的未决事务。OLIT是与任何未提交的未决本地事务关联的最早的提升时间,或者如果不存在未提交的未决事务,则OLIT是当前时间的时间戳。与早于OLIT的提升时间相关联的任何事务都已终止,即被中止或提交。对于LPTIME小于OLIT的持久数据对象的版本,创建该版本的事务已经提交。OLIT仅取决于在本地PDBMS处发起的区块链事务。对于特定PDBMS,在其他PDBMS处发起的区块链事务不影响PDBMS的OLIT。
区块OLIT(BOLIT):添加到链中的TC区块包括在领导者生成该区块以添加到链时存在的OLIT。此OLIT被称为BOLIT。在成员区块链内,TC区块由成员区块链的领导者按提交时间次序添加。成员区块链中给定TC区块的区块链事务比成员区块链中任何后续TC区块的区块链事务更早提交。对于区块链中后续TC区块的任何区块链事务,提升时间戳早于特定TC区块的BOLIT的区块链事务已被提交或中止。
明确的依赖性检查点:每个BCA参与者都维护与BCA参与者的每个成员区块链副本相关联的依赖性检查点。当成员区块链中的TC区块已被跟随者BCA参与者应用时,在应用成员区块链中的后续TC区块之前,跟随者BCA参与者将依赖性检查点更新为刚刚应用的TC区块的BOLIT的值。应用TC区块指重放TC区块中的事务上下文并提交事务。因此,当应用后续TC区块时,跟随者参与者可以将先前版本的持久数据对象的LPTIME与依赖性检查点进行比较,以确定修改持久数据对象的最后的事务是否已被提交。
说明性TC区块
TC区块是在PDBMS的上下文中描述的。根据实施例,成员区块链中的TC区块包括一个或多个区块记录集。TC区块中的区块记录集包括事务上下文。如前所述,事务上下文描述了发起者PDBMS将TC区块添加到发起者PDBMS的成员区块链的区块链事务。图3描绘了根据本发明实施例的TC区块。
参照图3,图3描绘了BC日志103-L中的TC区块301,TC区块301由PDBMS 110提议和添加。TC区块301包括区块记录集302和图3中未描绘的其他属性。例如,此类属性包括区块散列和先前散列,如Native Persistent Store Support For Blockchains中所述。
区块记录集302包括事务上下文310,事务上下文310包括字段数据库操作312、写入集314、分布式TXID 316、BOLIT 320和TxnPromTime 322。数据库操作312包括由相应发起者PDBMS为区块链事务执行的数据库操作的规范。写入集314是通过执行数据库操作而生成的写入集。分布式TXID 316包含区块链事务的分布式txid。
BOLIT 320包括TC区块301的BOLIT。TxnPromTime 322包括TC区块301的区块提升时间。
写入集314'是描绘其中一些行的写入集314的视图。写入集314包括行330和行332。描绘了这些行的先前版本和新版本。行330和行332包括以下的列:
PK 342:行的主键。行330和行332的主键分别是pk1和pk2。
其他列350:这些列包括区块链事务所做的改变。数据列包括由BCA网络101的客户端通过DML语句指定的DML改变。
以下的列保持对象改变元数据。
RowPromTime 344:行的LPTIME。对于行的先前版本,LPTIME是改变了行的区块链事务的提升时间。对于行330和行332的先前版本,RowPromTime 344是10:40和11:05。对于行的新版本,行的LPTIME是TC区块301的区块提升时间。因此,对于行330和行332的新版本,RowPromTime 344是作为TxnPromTime 322的相应值的11:10。为了阐述的目的,时间戳在本文中被描述为一天中的标准时间,而不是逻辑时间。
RowLDTXID 346:改变行的LDTX的最后的LDTXID。对于行的新版本,RowLDTXID 346是作为分布式TXID 316的值的478810。
RowVersion 348:RowVersion 348是行的版本号。在实施例中,行的版本号不用于事务依赖性解决方案。然而,版本号用于更方便地对PDBMS上的行的副本的版本进行排序。
使用依赖性检查点方法重放
图4描绘了可以被合并以由跟随者PDBMS使用依赖性检查点方法来应用事务上下文的过程。在实施例中,可以作为图2中描绘的操作230的一部分来执行该过程。使用跟随者PDBMS 120来描述该过程,跟随者PDBMS 120正在BC日志103-L2中重放来自副本成员BC103-B2的TC区块301。依赖性检查点是10:55。
参照图4,在410处,PDBMS 120读取TC区块301。对于写入集314中的每一行执行以下操作415-420。
在415处,PDBMS 120确定先前版本行330的LPTIME(即10:40)小于10:55的依赖性检查点。因此,对行330的任何先前改变都已被提交,并且行330没有事务依赖性。作为对此确定的响应,检查写入集中的另一行并且不对行330执行穷举的事务解决方案(420)。
接下来,PDBMS 120确定先前版本的行332的LPTIME(即11:05)大于10:55的依赖性检查点。因此,对行330的先前改变可能尚未被提交。响应于此确定,使用穷举的事务依赖性解决方案来解决行332的事务依赖性。
一旦已经在操作415处检查了所有行,则在操作430处,PDBMS120等待直到写入集314的任何事务依赖性已被解决为止,即写入集314中的任何行所依赖的任何事务已被提交。此类等待可能需要为在操作420中确定具有或可能具有对未提交事务的事务依赖性的任何行执行进一步的穷举的事务依赖性解决方案。例如,对于操作420处的行332,穷举的事务依赖性解决方案可能已经确定行332依赖于改变了行332并且尚未被提交的事务。可以再一次执行穷举的事务依赖性解决方案以确定事务已被提交。
接下来,重放和提交事务上下文310(435)。通过重放数据库操作312中指定的数据库操作来重放事务上下文310。
最后,PDBMS 120等待直到在副本成员BC 103-B2中存在针对其的较早TC区块的任何事务已经提交或中止为止(440)。在等待后,如果有的话,副本成员BC 103-B2的PDBMS120上的依赖性检查点被更新为BOLIT 320的值。作为结果,依赖性检查点从10:55更新为11:00。
复制定时不一致性
在持久对象级别事务一致性上进行复制可能导致在目标PSS处应用行,然后才应用早先在源PSS处提交的另一行。在源处提交和在目标处应用之间的相对定时中的此类不一致性在本文中被称为复制定时不一致性。复制定时不一致性可能在目标PSS处创建可能尚未在源PSS上存在的状态。
在特定条件下,复制定时不一致性可能导致对于持久数据对象中的值之间的强加关系的不一致性和错误。此类关系包括唯一性约束和外键约束。
唯一性约束的复制定时不一致性
唯一性约束要求表的列中的任何值相对于列中的其他值是唯一的。当尝试向受唯一性约束限制的列添加重复值时,PDBMS引发唯一性约束违反错误。
然而,复制定时不一致性可能导致错误的唯一性约束违反。复制定时不一致性甚至可能导致PDBMS之间不一致的唯一性约束关系。
例如,PDBMS 110发起和提交区块链事务BT1,其将行A插入到分类账表102-1中的分类账表中。该行的唯一性约束列中的值为10。
PDBMS 110在PDBMS 110处发起和提交区块链事务BT2,将行A中的唯一性约束列从10更新为11。在区块链事务BT2被提交后,PDBMS 120发起和提交区块链事务BT3,插入唯一性约束列中值为10的不同行B。
PDBMS 130在这三个区块链事务的执行期间是离线的。区块链事务根据提交共识算法被接受,因为PDBMS的法定人数PDBMS 110和PDBMS 120投票提交这些事务。一旦PDBMS130在线,区块链事务BT1和BT2的TC区块被添加到副本成员区块链103-B3并且区块链事务BT3的TC区块被添加到副本成员区块链104-B3。
在三个事务之间,PDBMS 130应用在用于副本成员区块链104-B3中的BT3的TC区块中记录的区块链事务BT3,提交唯一性约束列的值为10的行B。接下来,PDBMS 130开始应用区块链BT1,并在尝试插入唯一性约束列的值为10的行A时遇到错误的唯一性约束违反。
避免唯一性约束的复制定时不一致性
用于避免唯一性约束的复制定时不一致性的一种措施是使用“立墓碑”。当针对表中特定行的唯一性约束列删除该特定行或替换表的唯一约束列中的值时,应用立墓碑。根据实施例,立墓碑通过在另一个表(“墓碑表”)中插入行或更新行(“墓碑行”)来保留删除或替换的列值(“墓碑值”)。
删除或替换墓碑值的事务也插入或更新墓碑行。后续事务通过插入唯一约束列被设定为墓碑值的另一行或通过将其他行中的唯一约束列更新为墓碑值来重用墓碑值。结合插入或更新针对墓碑值检查墓碑表。响应于找到墓碑值,更新墓碑行以指示墓碑值的重用或者删除墓碑行。
作为结果,删除或替换墓碑值的较早事务和重用墓碑值的后续事务由于被进行以修改相同的墓碑行而具有“诱发的”事务依赖性。在基于与持久数据对象级别事务依赖性一致地应用事务的复制下,后续事务将晚于较早事务被应用。
图5描绘了在PDBMS的上下文中使用立墓碑来避免PSS中唯一性约束的复制定时不一致性的说明。该说明部分地基于具有用于存储墓碑值的主键列PK的墓碑表。墓碑表还包括用于记录删除或替换了分类账表的唯一约束列中的值的区块链事务的分布式txid的列。墓碑表包括墓碑行,每个墓碑行存储作为PK中的主键的墓碑值,以及删除、替换或重用了唯一约束列中的墓碑值的区块链事务的分布式txid。如果需要,分布式txid用于穷举的事务依赖性解决方案。被称为重用列的另一列指示墓碑值是否已被重用。
所述说明涉及BCA网络101。PDBMS 110和PDBMS 120在线,而PDBMS 130离线。PDBMS130最终将上线。
参照图5,PDBMS 110提交区块链事务BT1,将唯一约束列值为10的行A插入到分类账表中(510)。PDBMS 110还将区块链事务BT1的TC区块TB1添加到成员区块链103-B,这导致在PDBMS 130上线时将TC区块TB1添加到副本成员区块链103-B3。
PDBMS 110提交区块链事务BT2,其将行A中的唯一约束列从10更新为11。PDBMS110还将区块链事务BT2的TC区块TB2添加到成员区块链103-B,这导致在PDBMS 130上线时将TC区块TB2添加到副本成员区块链103-B3。区块链事务BT2还将PK值为10的墓碑行插入到墓碑表中。该墓碑行还包括分布式txid BT2(515)。
PDBMS 120提交区块链事务BT3,其将唯一约束列值为10的行B插入到分类账表中。PDBMS 120还将区块链事务BT3的TC区块TB3添加到成员区块链104-B,这导致在PDBMS 130上线时将TC区块TB3添加到副本成员区块链104-B3。区块链事务BT3还更新PK值为10的墓碑行中的重用列,以标记值10已被重用为唯一性约束列的唯一值。墓碑行还包括分布式txidBT3(520)。作为对墓碑行更新的结果,已经在区块链事务BT2和BT3之间创建了诱发的事务依赖性。
接下来,PDBMS 130重新上线。PDBMS 130开始使用聚合区块链应用在应用TC区块TB1之前应用TC区块TB3(540)。
间接地通过依赖性检查点方法或者通过使用记录在墓碑行中的分布式txid BT3的穷举的事务依赖性解决方案,PDBMS检测到区块链事务BT3和BT2之间的诱发的事务依赖性(545)。响应于检测到诱发的事务依赖性,PDBMS 130直到TC区块TB2被应用才应用TC区块TB3。因为区块链事务BT2和BT1之间的事务依赖性(由于两者都修改了行A),所以PDBMS 130在应用BT2之前应用BT1。
墓碑表的各种实施例
在实施例中,对于每个唯一性约束列都存在墓碑表。代替对于每个唯一性约束列都具有墓碑表,可替代的选择是对于多个唯一性约束列具有一个组合的墓碑表,其中唯一性约束列具有相同的(一个或多个)列类型。用于删除或替换的唯一值的组合的墓碑表具有CONSTRAINT_NAME列,以分离来自不同唯一性约束列的值。对于多列唯一约束,多个列可以组合为单个二进制值,而不是针对多个唯一性约束列中的每一个在墓碑表中具有多个列。这种方法允许将单个墓碑表用于分类账表集中的多个唯一性约束列,而不论唯一性约束列的数量及其数据类型。
墓碑行还可以被垃圾收集。当对墓碑行的最后修改满足年龄准则并且是改变非NULL唯一值的UPDATE(更新)或对唯一性约束列中具有非NULL值的行的DELETE(删除)时,可以从墓碑表中删除或以其他方式清除该墓碑行。年龄准则的示例可以基于存储在墓碑行的列中的最后修改的时间戳。当达到时间点恢复后的区块链事务重放的管理员定义保留阈值(例如1周)时,或者当在特定PDBMS上该时间戳早于由PDBMS维护的LWM的最小值时,满足年龄准则。
外键约束的复制定时不一致性
表(“子表”)的列(“外键”)上的外键约束要求该列中的值作为主键值存在于另一个表(“父表”)中。当尝试修改行时可能违反外键约束,这可能导致错误。例如,尝试在子表中插入其外键列值没有作为主键值存在于父表中的“子行”违反了外键约束并引发错误。同样地,尝试将外键列更新为没有作为主键存在于父表中的值违反了外键约束并引发错误。复制定时不一致性可能导致外键违反错误。
在外键约束的复制定时不一致性的说明中,名为CHILD的分类账表是子表,而名为PARENT的分类账表是相对于CHILD的父表。PARENT和CHILD是分类账表102的分类账表。
PDBMS 110发起区块链事务BT4。区块链事务BT4提交将行插入到PARENT(以下称为父行)中的插入。接下来,PDBMS 120发起和提交区块链事务BT5,其将父行的子行插入到CHILD中。接下来,PDBMS 120发起和提交区块链事务BT6,其删除CHILD中的子行。最后,PDBMS 110发起和提交区块链事务BT7,其删除父行。
由于PDBMS 130在这四个区块链事务的执行期间处于离线,因此区块链事务根据提交共识算法被接受,因为PDBMS的法定人数PDBMS 110和PDBMS 120投票提交这些事务。一旦在线,PDBMS130将区块链事务BT4和BT7的TC区块添加到副本成员区块链103-B3并且将区块链事务BT5和BT6的TC区块添加到副本成员区块链104-B3。
PDBMS 130首先应用区块链事务BT4和BT7,其插入并且然后删除父行。之后,PDBMS130尝试应用区块链事务BT5以插入子行。然而,因为已经删除了父行,所以遇到外键约束违反错误。
可以通过在插入和/或修改子行时创建涉及父行的诱发的事务依赖性来避免复制定时不一致性。此措施将导致在删除父行的任何区块链事务被删除之前应用(通过对外键列的插入或更新)创建子行的任何区块链事务。同样地,只有在子行已被删除或修改为移除与父行的外键关系之后才应用删除或修改父行的主键的区块链事务。触发通过修改父行创建诱发的事务依赖性的“父更新”条件包括:
1.插入具有非NULL外键的子行;
2.删除具有非NULL外键的子行;
3.子行的外键从NULL改变为非NULL值;
4.子行的外键从非NULL值改变为NULL;或者
5.子行的外键从一个非NULL值改变为不同的非NULL值。
在上述情况1-4中,更新一个父行,而在情况5中,更新两个父行。图6描绘了通过更新父行使用诱发的事务依赖性以避免复制定时不一致性的图示。在该图示中,PDBMS 130离线,而PDBMS 110和PDBMS 120执行区块链事务BT4、BT5、BT6和BT7。
参照图6,PDBMS 110发起区块链事务BT4。区块链事务BT4提交将父行插入到PARENT中的插入,并且还将区块链事务BT4的TC区块TB4添加到成员区块链103-B,这导致在PDBMS 130上线时将TC区块TB4添加到副本成员区块链103-B3(610)。
接下来,PDBMS 120发起和提交区块链事务BT5,其将子行插入到父行的CHILD中。PDBMS 120还将区块链事务BT5的TC区块TB5添加到成员区块链104-B,这导致在PDBMS 130上线时将TC区块TB5添加到副本成员区块链104-B3(615)。
此外,区块链事务BT5更新父行。这创建了由于更新父行在区块链事务BT4和BT5之间的诱发的事务依赖性,从而确保在应用BT5之前应用BT4,以在插入子行之前插入父行。
接下来,PDBMS 120发起和提交区块链事务BT6,其删除CHILD中的子行。PDBMS 120还将区块链事务BT6的TC区块TB6添加到成员区块链104-B,这导致在PDBMS 130上线时将TC区块TB6添加到副本成员区块链104-B3(620)。
此外,区块链事务BT6更新父行。此更新将确保在后续更新或删除父行的事件中创建诱发的事务依赖性,如将在此图示中发生的那样。
最后,PDBMS 110发起和提交区块链事务BT7,其删除父行。PDBMS 110还将区块链事务BT7的TC区块TB7添加到成员区块链103-B,这导致在PDBMS 130上线时将TC区块TB7添加到副本成员区块链103-B3。此外,作为区块链事务BT6先前已经更新了父行的结果,现在区块链事务BT7和BT6之间存在诱发的事务依赖性。
一旦在线,响应于检测到区块链事务BT4和BT5之间的诱发的事务依赖性,PDBMS130可能被迫在应用TC区块TB5之前应用TC区块TB4。这避免了在插入父行之前插入子行,从而避免了外键违反错误。类似地,响应于检测到区块链事务BT6和BT7之间的诱发的事务依赖性,PDBMS 130可能被迫在应用TC区块TB7之前应用TC区块TB6。这避免了在删除子行之前删除父行,从而避免了外键违反。
应用于DOCS
DOCS中文档集合中的文档中的属性对应于数据库表中的行的列。在DOCS中,文档集合可以是XML文档的集合,并且属性可以是该集合中的XML文档中的元素;文档集合还可以是JSON文档的集合,并且属性可以是该集合中的JSON文档中的字段。
DOCS的集合中的属性可能受到唯一性约束的约束,唯一性约束要求属性值在集合中的其他属性值中是唯一的。同样地,DOCS的“子”集合的“子”属性上的外键约束可以要求子属性值作为文档的“父”集合的“父”属性中的值存在。
可以在DOCS中使用如上所述的用于避免复制定时不一致性的过程。例如,可以与使用墓碑表的方式类似地使用文档的墓碑集合。当特定文档中的唯一性约束属性被更新为新值时,可以在墓碑集合中的文档和该特定文档之间创建诱发的事务依赖性。类似地,当子文档出现与早先描述的父更新条件类似的条件时,更新父文档。
硬件概述
根据一个实施例,本文描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行本技术,或者可以包括被永久性地编程以执行本技术的数字电子设备,诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA),或者可以包括被编程为根据固件、存储器、其他存储装置或组合中的程序指令执行本技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制的编程组合来实现本技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或结合硬连线和/或程序逻辑来实现技术的任何其他设备。
例如,图7是图示可以在其上实现本发明的实施例的计算机系统700的框图。计算机系统700包括总线702或用于传达信息的其他通信机制以及与总线702耦合用于处理信息的硬件处理器704。硬件处理器704可以是例如通用微处理器。
计算机系统700还包括耦合到总线702用于存储要由处理器704执行的指令和信息的主存储器706,诸如随机存取存储器(RAM)或其他动态存储设备。主存储器706也可以用于存储在要由处理器704执行的指令的执行期间的临时变量或其他中间信息。这种指令在被存储在处理器704可访问的非暂态存储介质中时,使得计算机系统700成为被定制用于执行指令中指定的操作的专用机器。
计算机系统700还包括耦合到总线702用于存储处理器704的静态信息和指令的只读存储器(ROM)708或其他静态存储设备。诸如磁盘、光盘或固态驱动器之类的存储设备710被提供并且被耦合到总线702,以用于存储信息和指令。
计算机系统700可以经由总线702耦合到用于向计算机用户显示信息的显示器712,诸如阴极射线管(CRT)。包括字母数字键和其他键的输入设备714耦合到总线702,用于将信息和命令选择传达到处理器704。另一种类型的用户输入设备是光标控件716,诸如鼠标、轨迹球或光标方向键,用于向处理器704传达方向信息和命令选择并且用于控制显示器712上的光标移动。这种输入设备通常具有两个轴(第一轴(例如,x)和第二轴(例如,y))上的两个自由度,其允许设备在平面中指定位置。
计算机系统700可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文描述的技术,该定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统结合使计算机系统700成为专用机器或将计算机系统700编程为专用机器。根据一个实施例,本文的技术由计算机系统700响应于处理器704执行主存储器706中包含的一条或多条指令的一个或多个序列而执行。这种指令可以从另一个存储介质(诸如存储设备710)读取到主存储器706中。包含在主存储器706中的指令序列的执行使得处理器704执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令组合使用。
如本文使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非暂态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储设备710。易失性介质包括动态存储器,诸如主存储器706。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒式磁带。
存储介质与传输介质不同但可以与传输介质结合使用。传输介质参与在存储介质之间传递信息。例如,传输介质包括同轴线缆、铜线和光纤,包括包含总线702的电线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信期间产生的那些声波或光波。
将一条或多条指令的一个或多个序列携带到处理器704以供执行可以涉及各种形式的介质。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统700本地的调制解调器可以在电话线上接收数据并使用红外线发射器将数据转换为红外线信号。红外线检测器可以接收红外线信号中携带的数据,并且适当的电路可以将数据放置在总线702上。总线702将数据携带到主存储器706,处理器704从主存储器706中检索并执行指令。由主存储器706接收的指令可以可选地在由处理器704执行之前或之后存储在存储设备710上。
计算机系统700还包括耦合到总线702的通信接口718。通信接口718提供耦合到网络链路720的双向数据通信,网络链路720连接到本地网络722。例如,通信接口718可以是综合业务数字网络(ISDN)卡、线缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一个示例,通信接口718可以是向兼容的局域网(LAN)提供数据通信连接的LAN卡。也可以实现无线链路。在任何这种实现中,通信接口718发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路720通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路720可以通过本地网络722向主机计算机724或向由因特网服务提供商(ISP)726操作的数据设备提供连接。ISP726进而通过现在通常称为“因特网”728的全球分组数据通信网络提供数据通信服务。本地网络722和因特网728都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路720上并且通过通信接口718的信号是传输介质的示例形式,这些信号将数字数据携带到计算机系统700或携带来自计算机系统700的数字数据。
计算机系统700可以通过(一个或多个)网络、网络链路720和通信接口718发送消息和接收数据,包括程序代码。在因特网示例中,服务器730可以通过因特网728、ISP 726、本地网络722和通信接口718传输对于应用程序的请求的代码。
接收的代码可以在它被接收时由处理器704执行,和/或存储在存储设备710或其他非易失性存储装置中以供以后执行。
在前述说明书中,已经参照可能因实施方式的不同而不同的许多具体细节描述了本发明的实施例。因此,要在说明性而非限制性的意义上看待说明书和附图。本发明的范围的唯一且排他的指示以及申请人意图要作为本发明的范围的是以从本申请发布的一组权利要求的具体形式所发布的权利要求集合的字面和等同范围,包括任何后续的修正。
软件概述
图8是可以被用于控制计算机系统700的操作的基本软件系统800的框图。软件系统800及其组件,包括它们的连接、关系和功能,仅仅意味着示例性的,并且不意味着限制(一个或多个)示例实施例的实施方式。适合于实现(一个或多个)示例实施例的其他软件系统可以具有不同的组件,包括具有不同的连接、关系和功能的组件。
提供软件系统800用于指导计算机系统700的操作。可以存储在系统存储器(RAM)706和固定存储装置(例如,硬盘或闪存)710上的软件系统800包括内核或操作系统(OS)810。
OS 810管理计算机操作的低级方面,包括管理进程的执行、存储器分配、文件输入和输出(I/O)以及设备I/O。表示为802A、802B、802C…802N的一个或多个应用程序可以被系统800“加载”(例如,从固定存储装置710传送到存储器706中)以供执行。打算在计算机系统700上使用的应用或其他软件也可以被存储为可下载的计算机可执行指令的集合,例如用于从因特网位置(例如,Web服务器、应用商店或其他在线服务)下载和安装。
软件系统800包括图形用户界面(GUI)815,用于以图形(例如,“点击”或“触摸手势”)方式接收用户命令和数据。进而可以由系统800根据来自操作系统810和/或(一个或多个)应用802的指令来对这些输入采取动作。GUI 815还用于显示来自OS 810和(一个或多个)应用802的操作的结果,用户可以对该结果供给附加输入或终止会话(例如,注销)。
OS 810可以直接在计算机系统700的裸硬件820(例如,(一个或多个)处理器704)上执行。可替代地,可以在裸硬件820和OS 810之间插入管理程序或虚拟机监视器(VMM)830。在这种配置中,VMM830充当计算机系统700的裸硬件820和OS 810之间的软件“缓冲”或虚拟化层。
VMM 830实例化并运行一个或多个虚拟机实例(“客人机器”)。每个客人机器包括“客人”操作系统,诸如OS 810,以及被设计为在客人操作系统上执行的一个或多个应用,诸如(一个或多个)应用802。VMM 830向客人操作系统呈现虚拟操作平台并管理客人操作系统的执行。
在一些情况下,VMM 830可以允许客人操作系统运行,就好像它直接在计算机系统700的裸硬件820上运行一样。在这些情况下,被配置为直接在裸硬件820上执行的相同版本的客人操作系统也可以在VMM 830上执行而无需修改或重新配置。换句话说,在一些情况下,VMM 830可以向客人操作系统提供完整的硬件和CPU虚拟化。
在其他情况下,客人操作系统可以被专门设计或配置为在VMM830上执行以提高效率。在这些情况下,客人操作系统“知道”它在虚拟机监视器上执行。换句话说,在一些情况下,VMM 830可以向客人操作系统提供半虚拟化。
计算机系统进程包括硬件处理器时间的分配以及存储器的分配(物理和/或虚拟),存储器的分配用于存储由硬件处理器执行的指令、用于存储由执行指令的硬件处理器所生成的数据和/或用于在计算机系统进程未运行时存储硬件处理器时间的分配之间的硬件处理器状态(例如,寄存器的内容)。计算机系统进程在操作系统的控制下运行,并且可以在正在计算机系统上执行的其他程序的控制下运行。
云计算
本文一般使用术语“云计算”来描述计算模型,该计算模型使得能够按需访问计算资源(诸如计算机网络、服务器、软件应用和服务)的共享池,并且允许以最少的管理工作或服务提供商交互来快速提供和释放资源。
可以以各种不同方式实现云计算环境(有时称为云环境或云),以最好地适应不同要求。例如,在公共云环境中,底层计算基础设施由组织拥有,该组织使其云服务可供其他组织或公众使用。相反,私有云环境一般仅旨在供单个组织使用或在单个组织内使用。社区云旨在由社区内的多个组织共享;而混合云包括通过数据和应用可移植性绑定在一起的两种或更多种类型的云(例如,私有、社区或公共)。
通常,云计算模型使得先前可能已经由组织自己的信息技术部门提供的那些职责中的一些职责替代地作为云环境内的服务层来递送,以供(根据云的公共/私有性质,在组织内部或外部的)消费者使用。取决于特定实施方式,由每个云服务层提供或在每个云服务层内提供的组件或特征的精确定义可以有所不同,但常见示例包括:软件即服务(SaaS),其中消费者使用在云基础设施上运行的软件应用,同时SaaS提供者管理或控制底层云基础设施和应用。平台即服务(PaaS),其中消费者可以使用由PaaS提供者支持的软件编程语言和开发工具,以开发、部署和以其他方式控制它们自己的应用,同时PaaS提供者管理或控制云环境的其他方面(即,运行时执行环境下的一切)。基础设施即服务(IaaS),其中消费者可以部署和运行任意软件应用,和/或提供处理、存储、网络和其他基础计算资源,同时IaaS提供者管理或控制底层物理云基础设施(即,操作系统层下面的一切)。数据库即服务(DBaaS),其中消费者使用在云基础设施上运行的数据库服务器或数据库管理系统,同时DbaaS提供者管理或控制底层云基础设施、应用和服务器,服务器包括一个或多个数据库服务器。
Claims (10)
1.一种方法,所述方法包括:
BCA网络的特定BCA参与者从特定区块链的特定区块链副本读取第一区块,其中所述第一区块包括由所述BCA网络的发起者BCA参与者执行的特定事务的特定事务上下文;
其中由所述BCA网络执行的多个事务包括所述特定事务,其中所述多个事务中的每个事务由所述BCA网络的区块链记录,其中所述多个事务中的每个事务与相应事务提升时间相关联,所述相应事务提升时间指定所述每个事务何时修改了持久对象;
其中所述特定事务上下文包括一个或多个记录的第一集合,所述一个或多个记录的第一集合中的每个记录与由所述特定事务修改的相应持久对象对应;
其中对于所述一个或多个记录的第一集合中的每个记录,所述每个记录指定相应最后提升时间,对于所述每个记录的相应持久对象,所述相应最后提升时间指定先前修改了所述相应持久对象的所述多个事务中的事务的相应提升时间;
所述特定BCA参与者维护检查点值,所述检查点值指定由所述特定区块链的先前应用的区块所记录的事务的先前提升时间;
进行特定事务对其具有事务依赖性的任何事务已经提交的确定;
其中所述一个或多个记录的第一集合中的特定记录指定特定持久对象的相应最后提升时间,
其中进行所述确定包括确定所述特定持久对象的相应最后提升时间小于检查点值。
2.根据权利要求1所述的方法,
其中所述一个或多个记录的第一集合中的第二记录指定第二持久对象的相应最后提升时间和标识修改了所述第二持久对象的先前事务的事务标识符;
其中进行所述确定包括确定所述第二持久对象的相应最后提升时间不小于检查点值;
响应于确定所述第二持久对象的相应最后提升时间不小于检查点值,基于事务标识符确定所述先前事务是否已经提交。
3.根据权利要求2所述的方法,还包括:
在确定所述先前事务已经提交之后,应用所述特定事务。
4.根据权利要求2所述的方法,
其中一个或多个记录的第一集合指定在所述发起者BCA参与者处由所述特定事务改变的属性的先前值和新值;
其中所述方法包括:
所述特定BCA参与者重放所述特定事务上下文以生成一个或多个记录的第二集合,所述一个或多个记录的第二集合指定由所述特定BCA参与者处的所述特定事务改变的属性的先前值和新值;
所述特定BCA参与者基于一个或多个记录的第一集合与一个或多个记录的第二集合的比较来投票提交所述特定事务。
5.根据权利要求1-4中的任一项所述的方法,包括
其中所述第一区块包括在所述第一区块的副本被添加到所述发起者BCA参与者处的所述区块链的副本时在处理中的一个或多个事务的最早处理中提升时间;
其中所述方法还包括将所述检查点值改变为所述最早处理中提升时间。
6.根据权利要求1-5所述的方法,其中所述BCA网络是数据库管理系统的网络,并且所述特定持久对象是数据库表中的行。
7.根据权利要求1-6所述的方法,其中所述一个或多个记录的第一集合包括:
所述一个或多个记录的第一集合中的第一记录,所述第一记录指定对来自持久对象的第一集合的特定持久对象的属性的改变,所述属性受到唯一性约束,对所述特定持久对象的属性的所述改变将所述属性从第一值改变为第二值,
所述一个或多个记录的第一集合中的第二记录,所述第二记录指定插入具有被设定为所述第一值的属性的持久对象。
8.根据权利要求1-7所述的方法,其中所述一个或多个记录的第一集合包括:
所述一个或多个记录的第一集合中的第一记录,所述第一记录指定对来自子持久对象的第一集合的子持久对象的子属性的改变,所述属性受到外键约束,所述子属性具有与父持久对象的主键值相等的值;
所述一个或多个记录的第一集合中的第二记录,所述第二记录指定对所述父持久对象的修改。
9.一种方法,所述方法包括:
BCA网络的特定BCA参与者对持久对象的第一集合中的第一持久对象的唯一性约束属性进行从第一值到第二值的更新,并进行来自持久对象的第二集合的第二持久对象的插入,所述插入将所述第二持久对象的属性设定为所述第一值;
其中所述BCA网络记录对包括多个成员区块链的聚合区块链中的所述持久对象的第一集合和所述持久对象的第二集合的改变,其中所述BCA网络的每个BCA参与者至少通过在所述每个BCA参与者的所述相应成员区块链中记录由所述每个BCA参与者发起的对所述持久对象的第一集合和所述持久对象的第二集合的相应改变,来复制所述相应改变;
其中对于所述多个成员区块链中的每个成员区块链,所述多个BCA参与者中的每个BCA参与者存储所述每个成员区块链的副本;
所述特定BCA参与者将特定区块添加到指定所述更新和所述插入的所述聚合区块链的特定成员区块链;以及
其中所述多个BCA参与者中的每个其他参与者被配置为通过应用所述特定区块的拷贝来复制所述插入和所述更新。
10.一种方法,所述方法包括:
BCA网络的特定BCA参与者进行将持久对象的第一集合的子属性修改为第一值的修改,并对持久对象的第二集合进行更新,其中所述修改对所述持久对象的第一集合中的第一持久对象的所述子属性进行修改,并且所述更新对所述持久对象的第二集合中的第二持久对象进行更新,其中所述子属性上的外键约束将所述子属性中的值约束为所述第二属性中的值;
其中所述BCA网络记录对包括多个成员区块链的聚合区块链中的所述持久对象的第一集合和所述持久对象的第二集合的改变,其中所述BCA网络的每个BCA参与者通过在所述多个成员区块链中的所述相应成员区块链中记录改变,来复制由所述每个BCA参与者发起的对所述持久对象的第一集合和所述持久对象的第二集合的相应改变;
其中对于所述多个成员区块链中的每个成员区块链,所述多个BCA参与者中的每个BCA参与者存储所述每个成员区块链的副本;
所述特定BCA参与者将特定区块添加到指定所述修改和所述更新的所述聚合区块链的特定成员区块链;
其中所述多个BCA参与者中的每个其他参与者被配置为通过应用所述特定区块的拷贝来复制所述修改和所述更新。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/944,011 | 2020-07-30 | ||
US16/944,011 US11875178B2 (en) | 2020-07-30 | 2020-07-30 | Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems |
PCT/US2021/043827 WO2022026787A1 (en) | 2020-07-30 | 2021-07-30 | Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116134420A true CN116134420A (zh) | 2023-05-16 |
Family
ID=77412386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180062960.9A Pending CN116134420A (zh) | 2020-07-30 | 2021-07-30 | 使用多个区块链以将事务应用于持久存储系统中的持久数据对象集 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11875178B2 (zh) |
EP (2) | EP4189914B1 (zh) |
CN (1) | CN116134420A (zh) |
WO (1) | WO2022026787A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586614B2 (en) | 2019-07-30 | 2023-02-21 | Oracle International Corporation | Native persistent store support for blockchains |
US11640391B2 (en) | 2019-09-11 | 2023-05-02 | Oracle International Corporation | Supporting blockchain collections in a database |
US11494347B1 (en) | 2021-05-05 | 2022-11-08 | Oracle International Corporation | Efficient update-anywhere replication of queue operations on a replicated message queue |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2326805A1 (en) | 2000-11-24 | 2002-05-24 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for deleting data in a database |
US8156083B2 (en) | 2005-12-01 | 2012-04-10 | Oracle International Corporation | Database system that provides for history-enabled tables |
US20080162728A1 (en) * | 2007-01-03 | 2008-07-03 | Microsoft Corporation | Synchronization protocol for loosely coupled devices |
JP5939561B2 (ja) | 2011-12-02 | 2016-06-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 資源のロックを獲得する装置及び方法 |
US9830372B2 (en) | 2013-07-24 | 2017-11-28 | Oracle International Corporation | Scalable coordination aware static partitioning for database replication |
US9589041B2 (en) | 2013-07-25 | 2017-03-07 | Oracle International Corporation | Client and server integration for replicating data |
US9767178B2 (en) | 2013-10-30 | 2017-09-19 | Oracle International Corporation | Multi-instance redo apply |
US9747356B2 (en) | 2014-01-23 | 2017-08-29 | Oracle International Corporation | Eager replication of uncommitted transactions |
US10191932B2 (en) | 2014-03-21 | 2019-01-29 | Oracle International Corporation | Dependency-aware transaction batching for data replication |
US9892143B2 (en) * | 2015-02-04 | 2018-02-13 | Microsoft Technology Licensing, Llc | Association index linking child and parent tables |
US9904722B1 (en) | 2015-03-13 | 2018-02-27 | Amazon Technologies, Inc. | Log-based distributed transaction management |
US10261827B2 (en) * | 2015-10-29 | 2019-04-16 | International Business Machines Corporation | Interprocessor memory status communication |
WO2017136527A1 (en) | 2016-02-05 | 2017-08-10 | Manifold Technology, Inc. | Blockchain-enhanced database |
US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
US10521775B2 (en) * | 2016-04-18 | 2019-12-31 | R3 Ltd. | Secure processing of electronic transactions by a decentralized, distributed ledger system |
US10614239B2 (en) | 2016-09-30 | 2020-04-07 | Amazon Technologies, Inc. | Immutable cryptographically secured ledger-backed databases |
US10586210B2 (en) * | 2016-11-30 | 2020-03-10 | International Business Machines Corporation | Blockchain checkpoints and certified checkpoints |
US10523421B2 (en) * | 2016-11-30 | 2019-12-31 | International Business Machines Corporation | Checkpoints for permissionless blockchains |
US20180158034A1 (en) * | 2016-12-07 | 2018-06-07 | International Business Machines Corporation | Dynamic reordering of blockchain transactions to optimize performance and scalability |
CN110233905B (zh) | 2017-04-20 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 节点设备运行方法、节点设备及存储介质 |
US11025409B1 (en) * | 2017-05-24 | 2021-06-01 | State Farm Mutual Automobile Insurance Company | Systems and methods for generating a blockchain-based user profile |
US10679210B2 (en) * | 2017-06-26 | 2020-06-09 | International Business Machines Corporation | Blockchain transaction commitment ordering |
US10616324B1 (en) * | 2017-07-20 | 2020-04-07 | Architecture Technology Corporation | Decentralized ledger system and method for enterprises |
US11823178B2 (en) * | 2017-11-17 | 2023-11-21 | International Business Machines Corporation | Optimization of high volume transaction performance on a blockchain |
US11243945B2 (en) | 2017-12-11 | 2022-02-08 | International Business Machines Corporation | Distributed database having blockchain attributes |
US10701054B2 (en) | 2018-01-31 | 2020-06-30 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment |
WO2019178300A1 (en) | 2018-03-13 | 2019-09-19 | Blockpoint Systems Inc. | Relational blockchain database |
US10834095B2 (en) | 2018-05-17 | 2020-11-10 | International Business Machines Corporation | Post-commit validation in a distributed ledger |
US20190370793A1 (en) | 2018-06-04 | 2019-12-05 | Decentralized Finance Labs, Inc. | Hybrid consensus for blockchain using proof of work and proof of stake |
US20190378134A1 (en) * | 2018-06-08 | 2019-12-12 | R3 Ltd. | Annotations for protocol flow implementing transactions of a distributed ledger system |
US11803923B1 (en) * | 2018-09-06 | 2023-10-31 | Side, Inc. | Blockchain-based system and method for purchase document transformation and accountability |
US11120024B2 (en) | 2018-11-01 | 2021-09-14 | Sap Se | Dual-stack architecture that integrates relational database with blockchain |
US10936445B2 (en) | 2018-11-28 | 2021-03-02 | International Business Machines Corporation | Resource management |
US11803537B2 (en) | 2019-01-31 | 2023-10-31 | Salesforce, Inc. | Systems, methods, and apparatuses for implementing an SQL query and filter mechanism for blockchain stored data using distributed ledger technology (DLT) |
US12086157B2 (en) | 2019-03-04 | 2024-09-10 | Hitachi Vantara Llc | Asynchronous storage management in a distributed system |
CN111095326B (zh) * | 2019-04-12 | 2023-08-22 | 创新先进技术有限公司 | 用于在区块链网络中执行多个交易的方法、系统和装置 |
US11080257B2 (en) * | 2019-05-13 | 2021-08-03 | Snowflake Inc. | Journaled tables in database systems |
US11469886B2 (en) | 2019-05-22 | 2022-10-11 | Salesforce.Com, Inc. | System or method to implement record level access on metadata driven blockchain using shared secrets and consensus on read |
US11405181B2 (en) | 2019-07-12 | 2022-08-02 | Microsoft Technology Licensing, Llc | Lightweight blockchain based on split-trust |
US11640391B2 (en) | 2019-09-11 | 2023-05-02 | Oracle International Corporation | Supporting blockchain collections in a database |
-
2020
- 2020-07-30 US US16/944,011 patent/US11875178B2/en active Active
-
2021
- 2021-07-30 CN CN202180062960.9A patent/CN116134420A/zh active Pending
- 2021-07-30 EP EP21758264.2A patent/EP4189914B1/en active Active
- 2021-07-30 EP EP24176911.6A patent/EP4447377A2/en active Pending
- 2021-07-30 WO PCT/US2021/043827 patent/WO2022026787A1/en active Application Filing
-
2024
- 2024-01-05 US US18/405,122 patent/US20240143386A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4447377A2 (en) | 2024-10-16 |
US11875178B2 (en) | 2024-01-16 |
WO2022026787A1 (en) | 2022-02-03 |
US20220035652A1 (en) | 2022-02-03 |
EP4189914A1 (en) | 2023-06-07 |
US20240143386A1 (en) | 2024-05-02 |
EP4189914B1 (en) | 2024-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111527487B (zh) | 用于内容项同步的唯一标识符的指配和再分配 | |
US10437795B2 (en) | Upgrading systems with changing constraints | |
US11061884B2 (en) | Method and system to accelerate transaction commit using non-volatile memory | |
EP4189914B1 (en) | Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems | |
US7610314B2 (en) | Online tablespace recovery for export | |
US10248709B2 (en) | Promoted properties in relational structured data | |
EP3391244B1 (en) | Replication control among redundant data centers | |
US11599514B1 (en) | Transactional version sets | |
US20070220328A1 (en) | Shutdown recovery | |
CN108021338B (zh) | 用于实现两层提交协议的系统和方法 | |
EP3391249B1 (en) | Replication of structured data records among partitioned data storage spaces | |
CN114424181A (zh) | 对区块链的原生持久存储支持 | |
CN111753013A (zh) | 分布式事务处理方法及装置 | |
US10235406B2 (en) | Reminder processing of structured data records among partitioned data storage spaces | |
US11886422B1 (en) | Transactional protocol for snapshot isolation without synchronized clocks | |
US11709809B1 (en) | Tree-based approach for transactionally consistent version sets | |
US10740320B2 (en) | Systems and methods of operation lock management and system catalog overrides in database systems | |
EP4315093A1 (en) | Database schema branching workflow, with support for data, keyspaces and vschemas | |
US10459810B2 (en) | Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery | |
US12124474B2 (en) | Real-time masking in a standby database | |
US20240126785A1 (en) | Failover of database sessions to a logical replica database | |
EP4109287A1 (en) | A collaborative system and method for multi-user data management | |
US20200125667A1 (en) | Real-time masking in a standby database | |
CN114722125A (zh) | 数据库事务处理的方法、装置、设备和计算机可读介质 | |
CN115297129A (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 |