CN108140043B - 只附加分布式数据库的读写协议 - Google Patents
只附加分布式数据库的读写协议 Download PDFInfo
- Publication number
- CN108140043B CN108140043B CN201680057996.7A CN201680057996A CN108140043B CN 108140043 B CN108140043 B CN 108140043B CN 201680057996 A CN201680057996 A CN 201680057996A CN 108140043 B CN108140043 B CN 108140043B
- Authority
- CN
- China
- Prior art keywords
- change set
- distributed
- shards
- boundary
- data
- 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
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/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- 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/2308—Concurrency control
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供使用针对分布式仅附加数据库***的并行写入来执行分布式数据库事务。可以使用中央数据库和多个分布式数据库,也被称为“碎片”。请求实施分布式事务,其需要更新一个或多个碎片,导致将单调增加的标识(ID)号被分配给更改集合。请求和更改集合可以在中央数据库处被登记。一旦更改集合被完全写入所有适当的碎片,则在中央数据库中将更改集合标记为已完成。在写入完成之后,中央数据库处的更改集合ID边界将被推进,以指示分布式数据库的当前完全更改的状态。
Description
背景技术
分布式数据库可以提供将相关数据存储在多个数据库设备中。这对于数据密集型应用可能特别有用,这些应用存储的数据量通常无法由单个数据库设备处理。例如,可能希望在多个数据库设备当中分发用于地图应用的与地理项目(道路、交叉路口、个人地址等)有关的数据。由于期望存储的已定义的地理项目的数目可能需要大量的数据库存储器,所以可能有选的是将地理项目分布在包括多个数据库设备的分布式数据库上。虽然通用的分布式数据库可以用于存储这种数据,但在实现多个数据库设备上的更改的事务的并行写入期间,现有***可能无法提供准确的结果。
发明内容
提供本发明内容是为了以简化的形式介绍将在以下详细描述部分中进一步描述的一些概念。本发明内容不旨在标识所要求保护的技术方案的关键特征或必要特征,也不旨在用于帮助确定所要求保护的技术方案的范围。
公开了用于使用针对分布式只附加数据库***的并行写入来执行分布式数据库事务的***和方法的各方面。根据各个方面,分布式数据库可以包括中央数据库和多个分布式数据库(应当理解,在本公开内可以互换地使用“数据库”和“碎片(shard)”)。可以请求实现需要对彼此远离的一个或多个碎片进行更新的更改集合(分布式事务)。当接收到更改集合时,可以将单调递增的标识号分配给更改集合,并在中央数据库中登记该标识号。贯穿本公开,这样的标识号可以被称为“更改集合ID”。更改集合可以被并行地写入所有涉及的碎片。例如,每个数据更改集合可以被附加到适当碎片中的表上。更改集合ID可以用作底层数据表所使用的主键的分量。一旦更改集合被完全写入所有适当的碎片,则更改集合可以在中央数据库中被标记为已完成。在更改集合完成之后,中央数据库处的可见更改集合ID边界可以被推进,以指示分布式数据库的当前完全更改状态。
在附图和以下说明中阐述了一个或多个方面的细节。通过阅读以下详细描述和查看关联附图,其他特征和优点将变得显而易见。
附图说明
通过参考以下附图,本公开的其他特征、方面和优点将变得更好理解,其中元件不是按比例绘制的,以便更清楚地显示细节,并且其中类似的附图标记在多个视图中指示类似的元件。
图1是示出用于执行分布式数据库事务的***的框图。
图2A是示出用于执行分布式数据库事务的示例性方法中涉及的一般阶段的流程图。
图2B是示出用于执行分布式数据库事务的替代示例性方法中涉及的一般阶段的流程图。
图3是示出用于执行多个同时的分布式数据库事务的示例性方法中涉及的一般阶段的流程图。
图4是示出计算设备的物理部件的一个示例的框图。
图5A和图5B是移动计算设备的框图。
具体实施方式
以下详细描述参考了附图。只要可能,在附图和以下描述中使用相同的附图标记指代相同或相似的元件。虽然描述了本公开的各方面,但是修改、改编和其他实现方式是可能的。例如,可以对附图中示出的元件进行替换、添加或修改,并且可以通过对所公开的方法进行替代、重新排序或添加阶段来修改这里描述的方法。因此,下面的详细描述是非限制性的,相反,适当的范围由随附权利要求限定。示例可以采取硬件实现的形式,或者完全软件实现的形式,或者组合软件和硬件方面实现的形式。因此,下面的详细描述不应被认为是限制性的。
为了说明和理解的目的,参考在分布式数据库***中实现企业事务来讨论本文公开的各方面。从本文阐述的公开内容可以理解,本公开的各方面对于包含用于数据存储的仅附加碎片的分布式数据库***是有用的,其中数据被并行地写入到碎片并且可以在该过程的任何阶段进行一致性读取。
在分布式数据库***中,可能期望在多个位置写入多个数据片段,并且直到这些片段的写入完成,仍然向读取者提供来自写入之前的数据的一致视图。本公开的各方面允许经由并行写入包括分布式事务的多个数据片段(即,更改集合)来实现该目标的方式。
每个分布式事务具有在保持数据库信息的针对读取者的一致性时很重要的特定属性。例如,分布式事务可以包括所需的数据库更新以实现资产从一个账户到另一账户的转移。在第一碎片上可能需要第一更改,以将发送帐户中的资产量减少特定量。在第二碎片上可能需要第二更改,以将接收账户中的资产量增加所述特定量。希望分布式数据库***(其包含第一碎片和第二碎片两者)保证内部状态对于数据读取者永远不可见。换句话说,当第一更改和第二更改的写入成功完成时,两个帐户都将包含正确的量,然后可以使所述更改对读取者可见。如果写入未完全成功,则本公开的各方面允许基于可见更改集合ID边界返回到账户的先前状态。
本公开的各方面涉及更新分布式数据库***,其中个体碎片经由仅附加更新来操作。例如,如上所述,当在第一碎片上需要第一更改以减少发送帐户中的资产量时,***在第一碎片上执行写入操作,但不是重写。该特征允许保留先前的数据状态以回滚到先前的数据状态,以及其他目的。
另一示例性更改集合涉及更新用于地图应用的地理项目。地图应用可以一次更新大量地理项目(例如,1500万条新道路)。将所有新数据写入分布式数据库***可能需要很长的时间段。如果读取者想在处理该事务的同时创建地图,那么并不希望读取一些新的数据而不是所有的新数据。在这样的场景中,本公开的各方面将基于可见更改集合ID边界来将读取者引导到数据的更新前版本,直到整个写入完成并且可见更改集合ID边界被推进。这些方面避免了在写入期间需要对读取者屏蔽分布式数据库***以及阻止写入者重写当前正在读取的数据或中断正在进行的读取。
每组写入都用更改集合ID来标识。在一些方面,更改集合ID与写入的特定日期或时间相关联,但也可以是写入的连续记录。然后可以与分类账类似地读取碎片的结果状态。例如,回到地图应用示例,更改集合可以包括两条道路之间的交叉点位置的更改。这样的更改可能需要对包含关于第一道路的信息的一个碎片进行写入,以及对包含关于与第一道路交叉的第二道路的信息的第二碎片进行写入。然后需要在第一碎片和第二碎片上执行并行写入以准确地更新交叉点信息。
然后给每个碎片附加新道路信息。每个附加的更改集合ID将是相同的,因为更改集合ID由中央数据库分配。在成功完成两个附加写入后,通过在中央数据库处推进可见更改集合ID边界,而使事务变得可见。在推进可见更改集合ID边界之前,读取者可以只访问与非推进的可见更改集合ID边界相关联的信息,使读取者能够查看在该事务之前数据库世界的情况,并且不会被分布式数据库***阻止。如果在并行写入期间发生错误,则可以将第一和第二碎片中的数据回滚到与非推进的可见更改集合ID边界相关联的数据(即,数据的先前版本)。
现在参考附图,图1是示出根据本公开的各方面的用于实现分布式数据库协调的***的框图。用户105被示出为与计算机110相关联,用户可以使用计算机110来操作多种软件应用来从分布式数据库***120读取信息和将信息写入分布式数据库***120,通过该软件应用可以应用如本文所公开的分布式数据库协调的服务。
如图1所示,计算机110可以经由直接数据链路112或经由分布式计算网络115(例如,互联网或者企业或其他实体内联网)与分布式数据库***120通信。分布式数据库***120说明可以应用分布式数据库协调的计算机***的集合。分布式数据库***120可以包括任何数目的数据库,例如碎片130a-130f(通常称作碎片130)。碎片130a-130f中的每一个可以彼此远离。
分布式数据库***120可以进一步包括中央数据库140,其协调在分布式数据库***120之外利用分布式数据库***120以及利用碎片130a-130f进行操作的过程。根据本公开的各方面,中央数据库140可以存储关于存储在分布式碎片130a-130f中的数据项的元数据。该中央数据库140中的元数据片段之一是由可见更改集合ID边界定义的数据的可见版本。
应该认识到,分布式数据库***120可以表示作为用于公司、教育***或其他实体的后端数据存储***而一起操作的一个或多个计算***,或者分布式数据库***120可以说明在基于云的数据中心中操作的一个或多个计算机或者计算机集合,在基于云的数据中心处可以为用户105执行分布式数据库事务。
碎片130a-130f可以表示用于处理分布式数据库事务的通用数据存储单元或***,该分布式数据库事务由与分布式数据库事务相关联的用户105发送、访问或以其他方式被传送到用户105或从用户105被传送。接收到的输入(例如,企业事务)可以存储在碎片130a-130f中,并且分布式事务的关联元数据可以存储在中央数据库140中。
根据各方面,分布式数据库***120的部件在上面被图示和描述为远离用户计算机110运行的部件的***。也就是说,分布式数据库***120的部件可以作为计算设备的独立***操作,其可以由用户的计算机110调用以与分布式数据库事务相关联,如本文所述的。
计算机110、分布式数据库***120、碎片130a-130f以及中央数据库140表示多个计算***,包括但不限于台式计算机***,有线和无线计算***,移动计算***(例如,移动电话、上网本、平板计算机或平板型计算机、笔记本计算机和膝上型计算机),手持设备,多处理器***,基于微处理器或可编程消费电子件,迷你计算机和大型计算机。
已经参照图1在上文描述了本公开的示例架构和其他方面,图2A是示出用于执行改进的分布式数据库事务的示例性方法中涉及的一般阶段的流程图。如上所述,本公开的各方面可以用于高效地在分布式数据库***中写入,这也实现了一致性读取。为了描述的目的,下面阐述的方法是根据更新包括仅附加碎片130的分布式数据库***120来描述的,但是关于分布式事务的这些方面的描述不应被视为是限制性的,而仅仅是用于说明和描述的目的。
接下来参考图2A,方法200A在开始操作205A处开始并且前进到操作210A,其中从特定用户(例如用户105)接收分布式事务(更改集合),该特定用户可以提供将由分布式数据库***120实现的更改集合。例如,分布式事务可以包含多个地理数据项以更新由分布式数据库***120服务的地图应用。
在操作215A处,在分布式数据库***120中的中央数据库140处为接收到的分布式事务定义新的更改集合ID。在中央数据库140中通过可见更改集合ID边界定义所有记录的先前可见版本。例如,可见更改集合ID边界可以等于100。这样,中央数据库140将为接收到的分布式事务分配递增地大于可见更改集合ID边界的更改集合ID。例如,在这种情况下,中央数据库140将为接收到的分布式事务设置更改集合ID等于101。
在操作220A处,将分布式事务并行地写入适当的碎片130。适当的碎片130是仅附加碎片130,其需要基于分布式事务进行更新,例如,碎片130a-130f可以分别由分布式事务涉及。在操作225A处,中央数据库140确定对碎片130的写入是否被成功完成。当确定成功写入时,方法200A前进到操作230A,其中新的更改集合ID被提供给调用者。在本公开的一些方面中,可以通过从每个涉及的碎片130接收到成功响应,来通知中央数据库140成功完成写入更改集合。方法200A然后进行到操作240A。
替代地,如果确定写入未成功,例如,如果一个或多个碎片130在超时时段内未能针对与更改集合ID为101的更改集合中的数据片段相关的附加过程提供成功的响应,或接收到失败消息,则方法200A前进到操作235A,其中更改集合在逻辑上从其被写入的碎片130中删除;释放存储器以便稍后写入,而不会影响写入次序。因为可见更改集合ID边界是最大更改集合,在其之下所有更改集合被成功完成,所以逻辑删除使得数据库140稍后能够将来自未成功写入的任何数据重新写入仅附加碎片,而不浪费其存储设备中的任何存储器。方法200A然后进行到操作240A。
在操作240A处,中央数据库140尝试推进可见更改集合ID边界。在一些方面,可见更改集合ID边界被推进到最近完成的更改集合ID。在该示例中,中央数据库140可以将可见更改集合ID边界推进到完成的更改集合ID 101。可见更改集合ID边界示出了已完成的更改集合的最大更改集合ID,在其之下的所有更改集合完成。如果写入成功完成,则方法200A进行到操作245A,否则,如果写入没有成功完成,则方法200A进行到操作250A。
在操作245A处,将新的更改ID提供给诸如用户105的读取者,读取者可以通过该新的更改ID访问分布式数据库***120以获得数据的一致视图,例如通过地图应用。例如,用户105可能希望构建特定地理区域的地图。构建该地图所需的数据可以包括在分布式数据库***120中被存储在碎片130a-130f中的数据。在操作245A处,中央数据库140向用户105提供新的可见更改集合ID边界。用户105可以读取最近的记录(具有最高更改集合ID的那些记录)直到新的可见更改集合ID边界。这确保了用户105可以访问包括具有更改集合ID 101的更改集合中定义的事务的所有数据,并且确保了所提供的所有数据是一致的。方法200A在结束操作255A处结束。
在操作250A处,新的更改集合ID对读取者不可见。在各个方面,数据库可以将来自不成功写入的更改集合ID重用于下一更改集合,该下一更改集合将重写在上一个更改集合边界之后存在的任何数据,并且保持更改集合ID的次序;保留成功写入的新的更改集合ID。方法200A在结束操作255A处结束。
已经参考图1描述了本公开的示例性架构和其他方面,图2B是示出了关于图2A描述的方法的替代示例性方法中所涉及的一般阶段的流程图,替代示例性方法用于执行改进的分布式数据库事务。如上所述,本公开的各方面可以用于高效地在分布式数据库***中写入,这也实现了一致性读取。为了描述的目的,下面阐述的方法是根据更新包括仅附加碎片130的分布式数据库***120来描述的,但是关于分布式事务的这些方面的描述不应被视为是限制性的,而仅仅用于说明和描述的目的。
接下来参考图2B,方法200B在开始操作205B处开始并且进行到操作210B,其中从特定用户(例如用户105)接收分布式事务(更改集合),该特定用户可以提供将由分布式数据库***120实现的更改集合。例如,分布式事务可以包含多个地理数据项以更新由分布式数据库***120服务的地图应用。
在操作215B处,在分布式数据库***120中的中央数据库140处为接收到的分布式事务定义新的更改集合ID。在中央数据库140中通过可见更改集合ID边界定义所有记录的先前可见版本。例如,可见更改集合ID边界可以等于100。这样,中央数据库140将为接收到的分布式事务分配递增地大于可见更改集合ID边界的更改集合ID。例如,在这种情况下,中央数据库140将为接收到的分布式事务设置更改集合ID等于101。
在操作220B处,将分布式事务并行地写入适当的碎片130。适当的碎片130是仅附加的碎片130,其需要基于分布式事务进行更新,例如,碎片130a-130f可以分别由分布式事务涉及。在操作225B处,中央数据库140确定对碎片130的写入是否成功完成。当确定成功写入时,方法200B进行到操作230B。在本公开的一些方面中,可通过从每个所涉及的碎片130接收到成功的响应,来通知中央数据库140成功完成写入更改集合。替代地,如果确定写入未成功,例如,如果一个或多个碎片130未能提供针对与更改集合ID为101的更改集合中的数据片段相关的附加过程的成功响应,则方法200B进行到结束操作240B并结束。在本公开的其他方面中,可以使用超时功能,以便如果在预定时间段内没有接收到成功的响应则指示写入不成功。
在操作230B处,中央数据库140推进可见更改集合ID边界。在一些方面,可见更改集合ID边界被推进到最近完成的更改集合ID。在该示例中,中央数据库140可以将可见更改集合ID边界推进到完成的更改集合ID 101。
在操作235B处,将新的更改ID提供给诸如用户105的读取者,读取者可以通过该新的更改ID访问分布式数据库***120以获得数据的一致视图,例如通过地图应用。例如,用户105可能希望构建特定地理区域的地图。构建该地图所需的数据可以包括在分布式数据库***120中存储在碎片130a-130f中的数据。在操作235B处,中央数据库140向用户105提供新的可见更改集合ID边界。用户105可以读取最近的记录(具有最高更改集合ID的那些记录)直到新的可见更改集合ID边界。这确保了用户105可以访问包括具有更改集合ID101的更改集合中定义的事务的所有数据,并且确保了所提供的所有数据是一致的。方法200B在结束操作240B处结束。
已经参照图1描述了本公开的示例性架构和其他方面,图3是示出了用于分布式数据库事务的示例性方法中涉及的一般阶段的流程图。如上所述,本公开的各方面可以用于对分布式数据库***120进行高效写入,并且从分布式数据库***120进行一致读取。
接下来参考图3,方法300从开始操作305开始并进行到操作310。回到先前的例子,可能存在同时实施多于一个更改集合的情况。例如,在操作310处,分布式数据库***120可以从一个或多个用户105接收单独的分布式事务(更改集合)。例如,每个分布式事务可以涉及用于更新由分布式数据库***120服务的地图应用的项目。
在操作315处,在分布式数据库***120中的中央数据库140处为两个接收到的分布式事务中的每一个单独定义新的更改集合ID。可以在中央数据库140中通过可见更改集合ID边界再次定义所有记录的先前可见版本。例如,可见更改集合ID边界可以等于100。这样,中央数据库140可以为第一分布式事务分配递增地大于可见更改集合ID边界的更改集合ID。例如,在这种情况下,中央数据库140可以将第一分布式事务的更改集合ID设置为等于101。然后,中央数据库140可以为第二分布式事务分配递增地大于分配给第一更改集合的更改集合ID的更改集合ID。例如,在这种情况下,中央数据库140可以将第二分布式事务的更改集合ID设置为等于102。
在操作320处,将更改集合并行写入相关碎片130。实现对两个更改集合的写入可导致将来自两个事务的信息以并行速率同时写入多个碎片130,例如碎片130a-130f。在这个例子中,可以假设在完成写入更集合ID 101之前写入更改集合ID 102完成。这可能是由于更改集合ID 101是更复杂的更改集合或甚至由于到相应碎片130的各种网络连接上的延迟。
在操作325处,确定针对更改集合的每个写入的成功。例如,可以通知中央数据库140更改集合ID 102已完成并且更改集合ID 101仍在处理中(尚未成功)。在操作330处,当至少一个更改集合ID尚未成功时,例如,在更改集合ID 101仍在处理但更改集合ID 102已经被成功写入时,中央数据库140使用决策逻辑来确定如何以及是否推进可见更改集合ID边界。在不使用决策逻辑的情况下推进可见更改集合ID边界可能会导致连续性问题,因为***中还有尚未完成写入的记录。在本公开的一些方面中,可见更改集合ID可以保持在先前值(在该示例中,在100处),并且可以通知读取者完成的更改集合ID(在该示例中为102)可用于读取。在一些方面,可以对潜在读取者隐藏完成的更改集合ID(在该示例中为102),直到中央数据库140已经被通知已经完成先前接收到的但正在进行的更改集合ID(在示例中为101)的写入。方法300在结束操作335结束。
这里描述的各方面和功能可以经由多个计算***来操作,包括但不限于台式计算机***,有线和无线计算***,移动计算***(例如移动电话、上网本、平板计算机或平板型计算机、笔记本计算机和膝上型计算机),手持设备,多处理器***,基于微处理器或可编程消费电子件,迷你计算机和大型计算机。
此外,根据一方面,本文描述的各方面和功能在分布式***(例如,基于云的计算***)上操作,其中应用功能、存储器、数据存储和取回以及各种处理功能在分布式计算网络(例如,互联网或内联网)上彼此远离地***作。根据一方面,用户界面和各种类型的信息经由机载计算设备显示器或经由与一个或多个计算设备相关联的远程显示单元来显示。例如,用户界面和各种类型的信息在投影用户界面和各种类型的信息的墙面上显示和交互。与实践各方面的众多计算***的交互包括:按键输入,触摸屏输入,语音或其他音频输入,其中相关联的计算设备配备有用于捕获和解释用户手势用于控制计算设备的功能的检测(例如,相机)功能的手势输入等。
图4、图5A和图5B以及相关联的描述提供了其中实践本公开的示例的各种操作环境的讨论。然而,关于图4、图5A和图5B所示和讨论的设备和***用于示例和说明的目的,并不限制用于实践本文所描述的各方面的大量计算设备配置。
图4是示出可以实践本公开的示例的计算设备400的物理部件(即,硬件)的框图。在基本配置中,计算设备400包括至少一个处理单元402和***存储器404。根据一方面,取决于计算设备的配置和类型,***存储器404包括但不限于易失性存储设备(例如,随机存取存储器),非易失性存储设备(例如,只读存储器),闪存或这些存储器的任何组合。根据一方面,***存储器404包括操作***405和适用于运行软件应用450的一个或多个程序模块406。根据一方面,***存储器404包括用于执行分布式数据库事务的软件。例如,操作***405适用于控制计算设备400的操作。此外,结合图形库、其他操作***或任何其他应用程序来实践各方面,并且各方面不限于任何特定应用或***。该基本配置在图4中由虚线408内的那些部件示出。根据一方面,计算设备400具有附加特征或功能。例如,根据一方面,计算设备400包括附加的数据存储设备(可移除和/或不可移除),例如磁盘、光盘或磁带。图4中通过可移除存储设备409和不可移除存储设备410来示出这种附加存储设备。
如上所述,根据一方面,多个程序模块和数据文件被存储在***存储器404中。当在处理单元402上执行时,程序模块406(例如,用于执行分布式数据库事务的软件)执行包括但不限于在图2A、图2B和图3中所示的方法200A、200B和300中的一个或多个阶段的过程。根据一方面,根据本公开的示例可以使用其他程序模块,其他程序模块包括诸如电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用程序等的应用。
本公开的各方面在电路中实践,所述电路包括分立电子元件,包含逻辑门的封装或集成电子芯片,使用微处理器的电路,或包含电子元件或微处理器的单个芯片。例如,经由片上***(SOC)来实践各方面,其中图4中所示的每个部件或多个部件被集成到单个集成电路上。根据一方面,这种SOC器件包括作为单个集成电路而被集成(或“烧制”)到芯片衬底上的一个或多个处理单元、图形单元、通信单元、***虚拟化单元和各种应用功能。当经由SOC进行操作时,这里描述的功能经由与计算设备400的其他部件集成在单个集成电路(芯片)上的专用逻辑来操作。根据一方面,使用能够执行逻辑运算(例如AND、OR和NOT)的其他技术来实践本公开的各方面,包括但不限于机械、光学、流体和量子技术。另外,在通用计算机或任何其他电路或***内实践各方面。
根据一方面,计算设备400具有一个或多个输入设备412,例如键盘、鼠标、笔、声音输入设备、触摸输入设备等。根据一方面,还包括输出设备414,例如显示器、扬声器、打印机等。上述设备是示例,并且可以使用其他设备。根据一方面,计算设备400包括允许与其他计算设备418通信的一个或多个通信连接416。合适的通信连接416的示例包括但不限于RF发射机、接收机和/或收发机电路;通用串行总线(USB)、并行和/或串行端口。
这里使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储信息(例如,计算机可读指令、数据结构或程序模块)的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。***存储器404、可移除存储设备409和不可移除存储设备410都是计算机存储介质示例(即,存储器存储设备)。根据一方面,计算机存储介质包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储设备、磁带盒、磁带、磁盘存储设备或其他磁存储设备,或可以用于存储信息并且可以由计算设备400访问的任何其他制品。根据一方面,任何这样的计算机存储介质是计算设备400的一部分。计算机存储介质不包括载波或其他传播的数据信号。
根据一方面,通信介质通过计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制的已调制数据信号中的其他数据来体现,并且包括任何信息传递介质或传输介质。根据一方面,术语“已调数据信号”描述了如下信号:所述信号的一个或多个特性被设置或改变,使得将信息编码在信号中。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频(RF)、红外线和其它无线介质的无线介质。
图5A和图5B示出了可以实践各方面的移动计算设备500,例如移动电话、智能电话、平板个人计算机、膝上型计算机等。参考图5A,示出了用于实现各方面的移动计算设备500的示例。在基本配置中,移动计算设备500是具有输入元件和输出元件的手持式计算机。移动计算设备500通常包括显示器505和允许用户将信息输入到移动计算设备500中的一个或多个输入按钮510。根据一方面,移动计算设备500的显示器505用作输入设备(例如,触摸屏显示器)。如果被包含,则可选的侧面输入元件515允许进一步的用户输入。根据一方面,侧面输入元件515是旋转开关、按钮或任何其他类型的手动输入元件。在替代示例中,移动计算设备500合并更多或更少的输入元件。例如,在一些示例中,显示器505可能不是触摸屏。在替代示例中,移动计算设备500是便携式电话***,例如蜂窝电话。根据一方面,移动计算设备500包括可选的小键盘535。根据一方面,可选的小键盘535是物理小键盘。根据另一方面,可选的小键盘535是在触摸屏显示器上生成的“软”小键盘。在各个方面,输出元件包括用于示出图形用户界面(GUI)的显示器505、视觉指示器520(例如,发光二极管)和/或音频换能器525(例如,扬声器)。在一些示例中,移动计算设备500合并了用于向用户提供触觉反馈的振动换能器。在又一示例中,移动计算设备500合并了***设备端口540,例如音频输入(例如,麦克风插孔)、音频输出(例如,耳机插孔)和视频输出(例如,HDMI端口),用于向外部设备发送信号或从外部设备接收信号。
图5B是示出移动计算设备的一个示例的架构的框图。也就是说,移动计算设备500合并了***(即,架构)502来实现一些示例。在一个示例中,***502被实现为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息传送客户端、游戏和媒体客户端/播放器)的“智能电话”。在一些示例中,***502被集成为计算设备,例如集成的个人数字助理(PDA)和无线电话。
根据一方面,一个或多个应用程序550被加载到存储器562中,并且在操作***564上或与操作***564相关联地运行。应用程序的示例包括电话拨号程序、电子邮件程序、个人信息管理(PIM)程序、文字处理程序、电子表格程序、互联网浏览器程序、消息传送程序,等等。根据一方面,用于执行分布式数据库事务的软件被加载到存储器562中。***502还包括存储器562内的非易失性存储区域568。非易失性存储区域568用于存储在***502掉电时不应该丢失的持久性信息。应用程序550可以使用信息并将信息存储在非易失性存储区域568中,例如由电子邮件应用所使用的电子邮件或其他消息等。同步应用(未示出)也驻留在***502上并被编程为与驻留在主机计算机上的对应同步应用交互以保持存储在非易失性存储区域568中的信息与存储在主机计算机上的对应信息同步。应该理解,其他应用可以加载到存储器562中并且在移动计算设备500上运行。
根据一方面,***502具有电源570,该电源570被实现为一个或多个电池。根据一方面,电源570还包括外部电源,例如对电池进行补充或再充电的AC适配器或电动对接支架。
根据一方面,***502包括执行发射和接收射频通信的功能的无线电设备552。无线电设备552经由通信运营商或服务提供商促进在***502与“外部世界”之间的无线连接。在操作***564的控制下进行去往和来自无线电设备552的传输。换句话说,由无线电设备552接收到的通信可以经由操作***564传播到应用程序550,反之亦然。
根据一方面,视觉指示器520用于提供视觉通知,和/或音频接口554用于经由音频换能器525产生可听通知。在图示示例中,视觉指示器520是发光二极管(LED)并且音频换能器525是扬声器。这些设备可以直接耦合到电源570,从而当被激活时,即使处理器560和其他部件可能为了节省电池电力而关闭,它们仍然保持开启达由通知机构规定的持续时间。LED可被编程为无限期地保持开启,直到用户采取措施指示设备的开机状态。音频接口554用于向用户提供可听信号并从用户接收可听信号。例如,除了耦合到音频换能器525之外,音频接口554还可以耦合到麦克风以接收可听输入,例如以促进电话对话。根据一方面,***502还包括视频接口556,其使得机载相机530的操作能够记录静止图像、视频流等。
根据一方面,实现***502的移动计算设备500具有附加特征或功能。例如,移动计算设备500包括附加的数据存储设备(可移除和/或不可移除的),例如磁盘、光盘或磁带。这种附加存储设备在图5B中由非易失性存储区域568示出。
根据一方面,如上所述,由移动计算设备500生成或捕获并经由***502存储的数据/信息在本地被存储在移动计算设备500上。根据另一方面,数据被存储在设备可经由无线电设备552或经由移动计算设备500和与移动计算设备500相关联的单独计算设备(例如,分布式计算网络(例如互联网)中的服务器计算机)之间的有线连接被设备访问的任意数目的存储介质上。应该理解,这样的数据/信息可以经由移动计算设备500经由无线电设备552或经由分布式计算网络来访问。类似地,根据一方面,根据众所周知的数据/信息转移和存储手段(包括电子邮件和协作数据/信息共享***),这些数据/信息可容易地在计算设备之间转移以用于存储和使用。
例如,以上参考方法、***和计算机程序产品的框图和/或操作说明来描述了本公开的各方面。在框中示出的功能/动作可以不按照任意流程图中示出的次序发生。例如,取决于所涉及的功能/动作,连续示出的两个框实际上可以基本上同时执行,或者框有时可以以相反的次序执行。
本申请中提供的一个或多个示例的描述和说明不旨在以任何方式限制或约束所要求保护的本公开的范围。本申请中提供的各方面、示例和细节被认为足以传达拥有权并使其他人能够制作和使用所要求保护的最佳模式。本公开不应被解释为限于本申请中提供的任何方面、示例或细节。无论是组合还是单独显示和描述,各种特征(结构和方法两者)都旨在被选择性地包括或省略以产生具有特定特征集合的示例。在被提供了本申请的描述和说明之后,本领域技术人员可以想到落入本申请中体现的总体发明构思的更广泛方面的精神内的变型、修改和替代示例,其不背离本公开的更广范围。
Claims (20)
1.一种用于更新由分布式数据库***存储的数据的方法,所述方法包括:
在所述分布式数据库***处接收分布式事务;
定义所述分布式数据库***的可见更改集合ID边界,所述可见更改集合ID边界指示由所述分布式数据库***的多个碎片存储的数据的版本;
定义所述分布式事务的更改集合ID,其中所述更改集合ID递增地大于所述可见更改集合ID边界;
将来自所述分布式事务的数据并行地写入到所述多个碎片中的一个或多个碎片,其中所述一个或多个碎片是仅附加的;以及
在确定来自所述分布式事务的所述数据已被成功写入到所述一个或多个碎片中的每一个碎片时,将所述可见更改集合ID边界推进到新的可见更改集合ID边界,所述新的可见更改集合ID边界包括针对所述分布式事务的所述更改集合ID,使得由所述多个碎片存储的、包括来自所述分布式事务的所述数据的数据的新的版本是可访问的。
2.根据权利要求1所述的方法,还包括:
允许用户仅读取被定义为处于所述可见更改集合ID边界内的存储数据。
3.根据权利要求1所述的方法,其中所述更改集合ID至少部分地基于与写入所述分布式事务相关联的日期和时间。
4.根据权利要求1所述的方法,其中所述更改集合ID在所述分布式数据库***中的中央数据库处被定义。
5.根据权利要求1所述的方法,还包括:
基于与每个存储的分布式事务相关联的相应更改集合ID来组织所述一个或多个碎片中的每一个碎片内的所有数据。
6.根据权利要求1所述的方法,其中所述可见更改集合ID边界在中央数据库处被定义并被维护。
7.根据权利要求1所述的方法,其中确定所述数据已被成功写入到所述一个或多个碎片中的每一个碎片包括:从所述一个或多个碎片中的每一个碎片接收成功通知。
8.根据权利要求1所述的方法,还包括:
在确定所述数据已被成功写入到所述一个或多个碎片中的每一个碎片之前,接收对所述分布式数据库***的读取请求;以及
仅提供由所述可见更改集合ID边界定义的存储数据。
9.一种用于更新由分布式数据库***存储的数据的方法,所述方法包括:
定义可见更改集合ID边界,所述可见更改集合ID边界指示由所述分布式数据库***中的多个碎片存储的数据的版本;
接收第一分布式事务和第二分布式事务以包含在所述分布式数据库***中;
定义所述第一分布式事务和所述二分布式事务中的每一个分布式事务的单独的更改集合ID;
以并行速率将来自所述第一分布式事务和所述第二分布式事务的数据写入到所述分布式数据库***中的所述多个碎片中的一个或多个碎片;以及
在确定来自所述第一分布式事务和所述第二分布式事务的所述数据已经被成功写入所述一个或多个碎片中的每一个碎片时,将所述可见更改集合ID边界推进到新的可见更改集合ID边界,所述新的可见更改集合ID边界包括针对所述第一分布式事务和所述二分布式事务中的每一个分布式事务的所述单独的更改集合ID,使得由所述多个碎片存储的、包括来自所述第一分布式事务和所述第二分布式事务的所述数据的数据的新的版本是可访问的。
10.根据权利要求9所述的方法,其中所述第一分布式事务和所述第二分布式事务包括用于地图应用的地理数据项,所述地图应用由所述分布式数据库***服务。
11.根据权利要求9所述的方法,其中所述第一分布式事务的所述更改集合ID递增地大于所述可见更改集合ID边界。
12.根据权利要求11所述的方法,其中所述第二分布式事务的所述更改集合ID递增地大于所述第一分布式事务的所述更改集合ID。
13.根据权利要求9所述的方法,还包括:
在所述第一分布式事务被完全写入之前接收所述第二分布式事务已经完成写入的通知;以及
使用决策逻辑来确定如何推进所述可见更改集合ID边界,同时所述第一分布式事务仍在被写入。
14.根据权利要求13所述的方法,其中所述决策逻辑包括:
将所述可见更改集合ID边界保持在当前值处;以及
提供与所述第二分布式事务相关联的所述数据可用的通知。
15.根据权利要求13所述的方法,其中所述决策逻辑包括:
将所述可见更改集合ID边界保持在当前值处;以及
对请求用户隐藏与所述第二分布式事务相关联的所述数据。
16.根据权利要求13所述的方法,还包括:
接收所述第一分布式事务已经完成写入的通知;以及
将所述可见更改集合ID边界推进到包括针对所述第二分布式事务的所述更改集合ID的所述新的可见更改集合ID边界。
17.一种分布式数据库***,用于处理对由所述分布式数据库***存储的数据的更新,所述***包括:
多个仅附加碎片,每一个仅附加碎片存储数据;
中央数据库,用于存储可见更改集合ID边界,所述可见更改集合ID边界指示由所述多个仅附加碎片存储的数据的版本;
被配置为执行指令的处理器,所述指令包括:
在所述分布式数据库***处接收分布式事务;
定义所述分布式事务的更改集合ID;
将来自所述分布式事务的数据并行地写入到所述分布式数据库***中的所述多个仅附加碎片中的一个或多个仅附加碎片;以及
在确定所述数据已被成功写入到所述一个或多个仅附加碎片中的每一个仅附加碎片时,将所述可见更改集合ID边界推进到新的可见更改集合ID边界,所述新的可见更改集合ID边界包括针对所述分布式事务的所述更改集合ID,使得由所述多个仅附加碎片存储的、包括来自所述分布式事务的所述数据的数据的新的版本是可访问的。
18.根据权利要求17所述的分布式数据库***,其中所述一个或多个仅附加碎片是仅附加数据库。
19.根据权利要求17所述的分布式数据库***,其中所述一个或多个仅附加碎片被定位为彼此远离。
20.根据权利要求17所述的分布式数据库***,其中所述中央数据库跟踪所有的更改集合ID。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562235902P | 2015-10-01 | 2015-10-01 | |
US62/235,902 | 2015-10-01 | ||
US15/042,120 | 2016-02-11 | ||
US15/042,120 US10496630B2 (en) | 2015-10-01 | 2016-02-11 | Read-write protocol for append-only distributed databases |
PCT/US2016/053641 WO2017058681A1 (en) | 2015-10-01 | 2016-09-26 | Read-write protocol for append-only distributed databases |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108140043A CN108140043A (zh) | 2018-06-08 |
CN108140043B true CN108140043B (zh) | 2022-05-24 |
Family
ID=57113763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680057996.7A Active CN108140043B (zh) | 2015-10-01 | 2016-09-26 | 只附加分布式数据库的读写协议 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10496630B2 (zh) |
EP (1) | EP3356958A1 (zh) |
CN (1) | CN108140043B (zh) |
WO (1) | WO2017058681A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017189031A1 (en) * | 2016-04-25 | 2017-11-02 | Digital Asset Holdings | Asset and obligation management using flexible settlement times |
US10891302B2 (en) * | 2018-01-08 | 2021-01-12 | Accenture Global Solutions Limited | Scalable synchronization with cache and index management |
CN112015766A (zh) * | 2020-08-24 | 2020-12-01 | 京东数字科技控股股份有限公司 | 一种基于流水的数据处理方法、装置及数据处理*** |
US20240202835A1 (en) * | 2022-12-14 | 2024-06-20 | Goldman Sachs & Co. LLC | Transaction management system for managing transactions being written to storage |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1430734A4 (en) * | 2001-09-05 | 2007-03-14 | Telecomm Systems Inc | INTER-TRÄGER SMS SERVICE PROVISION TELEPHONE NUMBER, EXPERIENCE ONLY |
WO2013103720A1 (en) * | 2012-01-06 | 2013-07-11 | Citus Data Bilgi Islemleri Ticaret A.S. | Time stamp bounded addition of data to an append-only distributed database table |
CN103823810A (zh) * | 2012-11-19 | 2014-05-28 | 中国电信股份有限公司 | 一种在分布式***中生成唯一键的方法、装置及*** |
CN103842994A (zh) * | 2011-08-01 | 2014-06-04 | 标记公司 | 异步分布式数据库管理的***和方法 |
WO2015001596A1 (ja) * | 2013-07-01 | 2015-01-08 | 株式会社日立製作所 | 系列データ並列分析基盤およびその並列分散処理方法 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3667585B2 (ja) | 2000-02-23 | 2005-07-06 | エヌイーシーコンピュータテクノ株式会社 | 分散メモリ型並列計算機及びそのデータ転送終了確認方法 |
US6820088B1 (en) * | 2000-04-10 | 2004-11-16 | Research In Motion Limited | System and method for synchronizing data records between multiple databases |
CN1232914C (zh) | 2000-04-26 | 2005-12-21 | 计算机合作者思维公司 | 在分布计算机***中保持数据完整性的方法与设备 |
KR100625595B1 (ko) | 2001-05-28 | 2006-09-20 | 한국전자통신연구원 | 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템 |
JP4008899B2 (ja) * | 2003-09-08 | 2007-11-14 | 株式会社東芝 | 半導体装置の製造システムおよび半導体装置の製造方法 |
US8090691B2 (en) | 2004-08-13 | 2012-01-03 | Computer Associates Think, Inc. | System and method for variable block logging with log-ahead buffers |
GB0616257D0 (en) | 2006-08-16 | 2006-09-27 | Ibm | Storage management system for preserving consistency of remote copy data |
US9967620B2 (en) * | 2007-03-16 | 2018-05-08 | Adobe Systems Incorporated | Video highlights for streaming media |
US7895172B2 (en) * | 2008-02-19 | 2011-02-22 | Yahoo! Inc. | System and method for writing data dependent upon multiple reads in a distributed database |
JP5047870B2 (ja) * | 2008-04-17 | 2012-10-10 | 株式会社日立製作所 | マスタ管理システム、マスタ管理方法、およびマスタ管理プログラム |
JP4764472B2 (ja) * | 2008-12-02 | 2011-09-07 | 株式会社日立製作所 | データベース管理方法、データベース管理プログラム、および、データベース管理装置 |
US8762333B2 (en) * | 2009-07-08 | 2014-06-24 | Pivotal Software, Inc. | Apparatus and method for read optimized bulk data storage |
US8725951B2 (en) | 2010-04-12 | 2014-05-13 | Sandisk Enterprise Ip Llc | Efficient flash memory-based object store |
US8954385B2 (en) | 2010-06-28 | 2015-02-10 | Sandisk Enterprise Ip Llc | Efficient recovery of transactional data stores |
EP2555129B1 (en) | 2011-08-03 | 2019-02-06 | Amadeus S.A.S. | Method and system to maintain strong consistency of distributed replicated contents in a client/server system |
US9753999B2 (en) | 2012-01-06 | 2017-09-05 | Citus Data Bilgi Islemieri Ticaret A.S. | Distributed database with mappings between append-only files and repartitioned files |
US8812539B2 (en) * | 2012-03-31 | 2014-08-19 | Bmc Software, Inc. | Unique attribute constraints for versioned database objects |
US20130290243A1 (en) * | 2012-04-26 | 2013-10-31 | Cloudtree, Inc. | Method and system for transaction representation in append-only datastores |
WO2013184712A2 (en) | 2012-06-04 | 2013-12-12 | Google Inc. | Systems and methods of increasing database access concurrency using granular timestamps |
US9489445B2 (en) | 2013-03-13 | 2016-11-08 | Nice Systems Ltd. | System and method for distributed categorization |
US10706009B2 (en) | 2013-03-14 | 2020-07-07 | Oracle International Corporation | Techniques to parallelize CPU and IO work of log writes |
US9483516B2 (en) | 2014-03-14 | 2016-11-01 | Sap Se | Multi-version concurrency control across row store and column store |
-
2016
- 2016-02-11 US US15/042,120 patent/US10496630B2/en active Active
- 2016-09-26 WO PCT/US2016/053641 patent/WO2017058681A1/en active Application Filing
- 2016-09-26 CN CN201680057996.7A patent/CN108140043B/zh active Active
- 2016-09-26 EP EP16778603.7A patent/EP3356958A1/en not_active Ceased
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1430734A4 (en) * | 2001-09-05 | 2007-03-14 | Telecomm Systems Inc | INTER-TRÄGER SMS SERVICE PROVISION TELEPHONE NUMBER, EXPERIENCE ONLY |
CN103842994A (zh) * | 2011-08-01 | 2014-06-04 | 标记公司 | 异步分布式数据库管理的***和方法 |
WO2013103720A1 (en) * | 2012-01-06 | 2013-07-11 | Citus Data Bilgi Islemleri Ticaret A.S. | Time stamp bounded addition of data to an append-only distributed database table |
CN103823810A (zh) * | 2012-11-19 | 2014-05-28 | 中国电信股份有限公司 | 一种在分布式***中生成唯一键的方法、装置及*** |
WO2015001596A1 (ja) * | 2013-07-01 | 2015-01-08 | 株式会社日立製作所 | 系列データ並列分析基盤およびその並列分散処理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108140043A (zh) | 2018-06-08 |
EP3356958A1 (en) | 2018-08-08 |
US10496630B2 (en) | 2019-12-03 |
US20170097953A1 (en) | 2017-04-06 |
WO2017058681A1 (en) | 2017-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11847438B2 (en) | Offline capabilities for live applications in a cloud collaboration platform | |
CN106462631B (zh) | 在最终一致***中分区数据的一致视图 | |
US10210171B2 (en) | Scalable eventual consistency system using logical document journaling | |
US10936548B2 (en) | File synchronization pausing for individual files | |
US20170068469A1 (en) | Remote Shared Virtual Disk Snapshot Creation | |
US10409779B2 (en) | Document sharing via logical tagging | |
CN108140043B (zh) | 只附加分布式数据库的读写协议 | |
WO2023231665A1 (zh) | 分布式事务处理方法、***、设备及可读存储介质 | |
CN108140039B (zh) | 流式传输来自并行批次的数据库访问的记录 | |
CN109313589B (zh) | 实现与外部功能的交互 | |
US10963635B2 (en) | Extensibility of compound data objects | |
US10133514B2 (en) | Flushless transactional layer | |
JP6708943B1 (ja) | 情報処理装置、プログラムおよび情報処理システム | |
US20180074867A1 (en) | Provide copy of notebook document | |
BR112016028798B1 (pt) | Método e sistema para fornecer exibições consistentes de dados particionados em um serviço de grande escala eventualmente consistente |
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 |