索引更新管线制造技术

技术编号:12913924 阅读:58 留言:0更新日期:2016-02-24 19:05
分布式数据库管理系统可跨多个分区维护项目集合。索引结构可与一个分区上的项目或多个分区上的项目对应。可复制项目集合和索引。对所述分布式数据库管理系统维护的数据的变更可导致更新多个索引结构。可将所述变更编译成适用于所述索引结构的指令集。存储器内缓冲区可包含在传输到受影响的分区之前的指令。复制日志可与用于将指令可靠地传输到所述受影响分区的确认机制进行组合。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】索引更新管线相关申请的交叉引用本申请要求于2013年5月20日提交的美国专利申请第13,898,151号的权益,本申请的公开内容通过引用的方式全部并入本文。专利技术背景分布式数据库管理系统(“DBMS”)可允许存储并检索分布在多个计算节点中的数据。可将分布式DBMS中的数据组织成表,所述表进而可包括项目集合(有时被描述为分区)。为了改善系统的性能、可靠性和可用性,可将每个分区各自容纳在单独的计算节点上,单独的计算节点处理请求以存储并检索其容纳的项目。分布式数据库还可采用复制,以维护在出现系统故障的情况下可采用的备用分区。可将索引描述为允许定位存储在分布式DBMS中的项目的数据结构。例如,它们可允许通过扫描索引而非搜遍存储在一个或多个分区上的全部项目而定位落在特定数据范围内的项目。分布式DBMS可包含局部和全局索引。可将局部索引描述为指代存储于单个分区上的项目的索引。术语全局索引可用于描述指代由表维护的全部数据的索引。由于复制,分布式DBMS可包含每个局部和全局索引的多个版本。当添加、删除或变更由分布式DBMS维护的数据时,可更新若干个这些索引。附图简述本文提供的附图被设计成图示示例性实施方案,且不旨在限制本公开的范围。图1A是描绘采用散列和范围键函数来访问与计算节点对应的数据分区的分布式DBMS的实施方案的框图。图1B是描绘分布式DBMS的实施方案的框图,其中对参与基于法定个数(quorum)的事务的一组分区执行操作。图2A是描绘具有相关联的复制伙伴和索引结构的分区表的框图。图2B是描绘具有两个相关联的索引分区的表分区的框图。图3是描绘由索引值的变更导致的多个索引更新的说明性实例的图示。图4描绘包含更新索引结构的指令的复制日志的实施方案。图5是描绘用于将指令从一个分区记录并发送到一个或多个受影响分区的实施方案的流程图。图6是描绘用于配置发送和接收缓冲区以在索引结构上传输并执行指令的实施方案的框图。图7A是描绘用于在出现系统故障之后恢复接收缓冲区的内容的实施方案的流程图。图7B是描绘用于记录由分区执行的最后指令的数据结构的实施方案的图示。图8是描绘用于利用记录的指令来分裂分区的实施方案的流程图。图9是描绘用于基于接收分区处理指令的容量而将流量控制应用到指令的传输的实施方案的流程图。图10是描绘计算环境的实施方案的框图,其中本公开的方面可被实践。【具体实施方式】分布式DBMS可维护由表组织的数据,每个表包含项目集合。所述项目可各自包括一组名称值对、由列名称识别的一组值或未定义值。在各个实施方案中,个别项目可能不符合任何特定模式,且每个项目相应地包含不同数量的值一其中的每个值可具有不同的逻辑意义和类型。为了方便起见,具有相同逻辑意义和类型的值(诸如由相同名称或列识别的那些值)可被称为列。DBMS的其它实施方案可执行特定的结构要求,诸如行和列格式、唯一性约束、主键和外来键关系等。分布式DBMS的实例包括键值数据库、关系数据库、非结构性查询语言(“NoSQL”)数据库、面向对象的数据库等。表中的项目可由主键值识别。每个主键值(整体而言)唯一地识别存储在表中的项目。为了访问项目,分布式DBMS的客户可发出包括与所述项目对应的主键值的请求。实施方案还可支持使用辅助键的访问,所述辅助键可能不一定与表中精确一个项目对应。可在创建表时定义主键。对主键的描述可与表的模式的其它方面一起存储,其可包括任何所需的列、有关值的约束等。对于主键,模式可包括对主键的长度和值的描述。例如,可将主键定义为256位的二进制值或定义为具有可变长度的字符串。还可将主键定义为具有内部结构。虽然在一些实施方案中,主键的结构可仅由单个值构成,但是实施方案可支持或要求主键包括两个或多个值的合成。例如,可将主键划分为两部分,散列键和范围键。主键的这些部分一起可反映或定义项目集合内的分级关系。散列键可识别分级结构内的一组项目,而范围键识别组内的特定项目。还可在分布式DBMS中使用主键以及分区。为了支持大量数据和高工作负载需求,分布式DBMS可支持在若干个计算节点上对表中的数据进行分区。可支持各种形式的分区。在水平分区中,每个计算节点可维护项目集合的子集。在垂直分区中,可基于列或字段划分数据,使得每个计算节点可包含在表上定义的列的子集。一些分布式DBMS可组合这两种形式的分区。如本文中使用,术语水平和垂直分区指的是与前面段落一致的数据集的划分。实施方案可将每个水平或垂直分区托管在单独的计算节点上。如本文中使用,术语分区通常指的是托管在计算节点上的水平或垂直分区,然而该术语也可包括仅具有单个分区的表。如本文中使用,术语扇出分区、无投票权的成员和复制伙伴指的是分区的子类别。水平分区的一种方法涉及应用以随机或半随机方式在各种计算节点之间分布数据的方法。图1A描绘一种这样的方法。主键100包括散列键成分102和范围键成分104。数据跨分区108、110和112的随机或半随机分布可改善分布式DBMS 114的性能。相应地,基于散列函数106到散列键成分102的应用,可将项目存储在分区108、110和112中的一个上。散列函数106可以是将主键值转换成另一值(诸如整数)的计算机代码,这可能被描述为键空间。散列函数106可被配置来将输入主值转换为键空间中的半随机点,其中在函数的每次调用时,将给定的输入值转换成键空间中的相同点。给定的散列函数可从输入值映射到键空间内的有限点集或有限桶集。在各种实施方案中,散列函数106可将映射聚集在某些点附近。对于一些散列函数,当输入值类似时,这种情况可能发生。偏移可降低性能,因为其可导致项目在特定计算节点的不均匀分布。防止该问题发生的一种方法是使用映射到键空间内的大量离散点的散列函数。然后,可将键空间的区域指派到计算节点。替代地,可将键空间的区域指派到指代计算节点的中间数据结构。可将不同的区域映射到相同计算节点或中间数据结构。返回图1A,可将主键100的散列键102作为输入值提供给散列函数106。对于散列键102的给定值,散列函数106的应用产生与散列键116对应的输出。散列函数106的输出对于给定输入值是一致的。其它值到散列函数106的应用可产生其它潜在输出118,但是任何给定输入值的结果是一致的。一致的输出116可用于确定最初存储与主键100对应的项目的地点。此外,因为散列函数106的输出对于给定的输入值是一致的,所以可将散列键102应用到散列函数106,以确定之前存储项目的地点。虽然可将表分裂成多个水平分区,但是每个水平分区可在计算节点之间进行复制,使得将相同的项目存储在一个以上的计算节点上,或更一般而言,可将相同的水平分区托管在一个以上的计算节点上。这样可改善系统的可用性,因为如果计算节点中的一个变得不可用,则具有复制数据的另一计算节点也许能够步进且取代其位置。复制可以通过允许在多个计算节点之间共享负载来改善系统的可扩展性。 复制分区之间的一致性可使用涉及复制分区之间的法定个数或一致性的技术来维护。实施方案可能要求仅在当前活动的计算节点之间的法定个数,这样可改善可用性,因为其不要求全部计算节点在线。在一些实施方案中,法定个数可能涉及确定参与读或写操作的计算节点的最小数量。对于读操作,至少最小数量的计算节点必本文档来自技高网...

【技术保护点】
一种分布式数据库管理系统,其包括:第一计算节点,其包括第一一个或多个存储装置,所述第一一个或多个存储装置上面存储有日志文件和与第一索引对应的第一项目集合;第二计算节点,其包括存储器和第二一个或多个存储装置,所述第二一个或多个存储装置上面存储有第二索引,所述第二索引与所述第一集合的至少一个子集的版本对应;一个或多个存储器,其上存储有计算机可读指令,所述计算机可读指令在执行时促使所述系统至少:将与对所述第一索引的第一操作对应的指令写入所述日志文件,所述第一操作与修改所述第一项目集合的第一请求对应;至少部分基于从所述第一计算节点接收且由所述第二计算节点对所述第二索引执行的最后指令的记录,将来自所述日志文件的所述指令发送到所述第二计算节点;以及由所述第二计算节点对所述第二索引执行第二操作,所述第二操作至少部分基于所述指令。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:肖伟吴·克拉伦斯·荣然麦达维·达万蒂莫西·安德鲁·拉斯施蒂芬诺·斯特凡尼
申请(专利权)人:亚马逊技术有限公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1