索引更新管线的制作方法

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