买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】复合分区函数_微软技术许可有限责任公司_201580057337.9 

申请/专利权人:微软技术许可有限责任公司

申请日:2015-10-14

公开(公告)日:2020-07-28

公开(公告)号:CN107077497B

主分类号:G06F16/27(20190101)

分类号:G06F16/27(20190101)

优先权:["20141021 US 14/519,952"]

专利状态码:有效-授权

法律状态:2020.07.28#授权;2017.09.12#实质审查的生效;2017.08.18#公开

摘要:本文描述了可以用于对数据库重新分区而不移动现有数据的复合分区函数技术。在一个或多个实现中,以与第一分区函数相关联的第一布置来对数据库进行分区。数据库被重新分区以形成与第二分区函数相关联的第二布置。创建在重新分区时存在的分区中的数据条目的键成员资格的记录,其可用于识别与第一布置相对应的数据。针对后续数据库操作定义复合分区函数,该复合分区函数被配置为对具有在键成员资格的记录中找到的键的数据应用第一分区函数,并且对具有在键成员资格的记录中未找到的键的其他数据应用第二分区函数。

主权项:1.一种由计算设备实现的方法,所述方法包括:利用第一分区函数来对数据库分区;以及通过以下方式来对所述数据库重新分区:创建位于重新分区时存在的分区中的数据条目的键成员资格的记录,其中,所述键成员资格的记录被配置为记录与位于所述重新分区时存在的所述分区中的数据条目相关联的键值,并且其中,所述重新分区被执行,使得位于所述重新分区时存在的分区中的所述数据条目保持其各自的位置;添加与第二分区函数相关联的一个或多个新分区;定义用于后续数据库操作的复合分区函数,所述复合分区函数被配置为:对具有在所述键成员资格的记录中找到的键值的数据应用所述第一分区函数;并且对具有在所述键成员资格的记录中未找到的键值的数据应用所述第二分区函数。

全文数据:复合分区函数背景技术[0001]用户越来越依赖基于云的资源进行在线活动,例如开展业务和个人通信、在线会议、屏幕分享、视频聊天、消息传递,以及使用服务提供商提供的各种资源。可以在与资源相关联的数据库中维护与用户交互相关联的各种应用和用户数据。通常,数据库可以包括被分配数据的许多不同的单独分区或数据库节点。分区可以分布在多个不同的物理设备和服务器上。数据条目可以与诸如键值的标识符相关联,这些标识符指示哪个分区对应于数据。标识符可以用于分配和引用数据以执行诸如添加、访问和修改相应数据条目的操作。[0002]随着时间推移,存储在数据库中的数据量增长,并且在某点可以扩展存储容量以适应数据量和请求量。一种传统的数据库扩展方法包括停止对数据库的服务和或对数据库的访问,向数据库添加新的存储分区,然后在分区的新的布置上重新分配所有预先存在的数据。在这种方法中,预先存在的数据被移动到新的位置,并且这个移动过程对于大规模数据库可能是相当耗时的。因此,传统的数据库扩展技术可能对提供给用户的服务具有相当的破坏性,并且花费大量的时间来处理数据以及将数据重新插入在分区的更新的布置中的新位置处。发明内容[0003]本文描述了可以用于对数据库重新分区而不移动现有数据的复合分区函数技术。在一个或多个实现中,以与第一分区函数相关联的第一布置来对数据库分区。数据库被重新分区以形成与第二分区函数相关联的第二布置。创建在重新分区时存在的分区中的数据条目的键成员资格的记录,其可用于识别与第一布置相对应的数据。在一种方法中,键成员资格的记录被配置为布隆过滤器,其紧凑地表示与第一分区的布置相关联的键或其他标识符。并入第一分区函数和第二分区函数的复合分区函数被定义了并且用于第二布置中的后续数据库操作。复合分区函数被配置为对具有在键成员资格的记录中找到的键的数据应用第一分区函数,并且对具有在键成员资格的记录中未找到的键的其他数据应用第二分区函数。执行重新分区,使得在重新分区时存在的数据条目保持它们在第一布置的分区中的各自的位置。[0004]提供该发明内容以便以简化的形式来引入下面的具体实施方式中进一步描述的概念的选择。该发明内容不旨在识别所要求保护的主题的关键特征或主要特征,也不旨在用作确定所要求保护的主题的范围的辅助。附图说明[0005]参考附图描述具体实施方式。在附图中,附图标记的最左边的数字表示附图标记首次出现的图。在说明书和附图中在不同实例中使用相同的附图标记可以指示相似或相同的项目。附图中所表示的实体可以指示一个或多个实体,并且因此可以在下面的讨论中可互换地引用可单独或复数形式的实体。[0006]图1是可操作以采用复合分区函数的技术的示例性的操作环境的图示。[0007]图2描绘了根据一个或多个实现的用于数据库系统的分区的示例性布置。[0008]图3描绘了根据一个或多个实现的表示图2的系统的扩展的数据库系统的分区的另一示例布置。[0009]图4描绘了根据一个或多个实现的用于数据库系统的分区的另一示例布置。[0010]图5描绘了根据一个或多个实现的将分区分配给时隙的表示。[0011]图6是描绘了根据一个或多个实现来定义复合分区函数的示例过程的流程图。[0012]图7是描绘了根据一个或多个实现使用复合分区函数来路由对分区的布置的请求的示例过程的流程图。[0013]图8示出了具有可用于实现本文描述的技术的各方面的设备和组件的示例系统。具体实施方式[0014][0015]随着时间推移,存储在数据库中的数据量会增长,并且在某些时候可以扩展存储容量以适应数据量和请求量。一种传统的数据库扩展方法涉及关闭数据库以创建新的分区,并将所有预先存在的数据分布在分区的新的布置中,这对用户来说是耗时的且是破坏性的。[0016]本文描述了可以用于对数据库重新分区而不移动现有数据的复合分区函数技术。在一个或多个实现中,以与第一分区函数相关联的第一布置来对数据库分区。数据库被重新分区以形成与第二分区函数相关联的第二布置。创建在重新分区时存在的分区中的数据条目的键成员资格的记录,其可用于识别与第一布置相对应的数据。在一种方法中,键成员资格的记录被配置为布隆过滤器Bloomfilter,其紧凑地表示与布置的第一分区相关联的键或其他标识符。并入第一分区函数和第二分区函数的复合分区函数被定义并且用于第二布置中的后续数据库操作。复合分区函数被配置为对具有键成员资格的记录中找到的键的数据应用第一分区函数,并且对具有在键成员资格的记录中未找到的键的其他数据应用第二分区函数。执行重新分区,使得在重新分区时存在的数据条目保持它们在第一布置的分区中的各自的位置。[0017]使用如本文所述的复合分区函数技术,可以在数据库的重新分区期间将现有数据保持在其在分区的布置内的各自的位置。因此,不需要移动大量的数据,这减少了与重新分区相关联的时间量。此外,使用布隆过滤器或键成员的其他压缩表示可以快速评估以区分与分区的不同布置例如,分区时期)相关联的数据,并选择用于管理数据请求的正确分区函数。此外,键成员资格的记录被配置为具有相对较小的大小,使记录可管理,并且由数据库系统的不同服务器、分区和组件使用的记录的分发是可行的。[0018]在下面的讨论中,首先描述可以使用本文描述的技术的示例环境。然后描述可以在示例环境以及其他环境中实现的示例的细节和过程。因此,示例的细节和过程不限于示例环境,并且示例环境不限于示例的细节和过程。最后,讨论了可用于实现本文描述的技术的各方面的系统的示例的系统和组件。[0019]示例的环境[0020]图1是可操作以使用本文描述的技术的示例实现中的环境100的图示。示出的环境100包括经由网络108通信地耦合的客户端设备102、其他客户端设备104和服务提供商106。客户端设备102、其他客户端设备104和服务提供商106可以由一个或多个计算设备实现,并且还可以代表一个或多个实体。[0021]可以以各种方式配置计算设备。例如,计算设备可以被配置为能够通过网络108进行通信的计算机,例如,桌面型计算机、移动站、娱乐设备、通信地耦合到显示设备的机顶盒、无线电话、游戏控制台等等。因此,计算设备可以从具有大量存储器和处理器资源的全资源设备例如,个人计算机、游戏控制台)到具有有限的存储器和或处理资源的低资源设备例如,传统的机顶盒、手持式游戏控制台)。另外,尽管在一些情况下示出了单个计算设备,但是计算设备可以代表多个不同的设备,例如,企业使用来执行操作的服务提供商106的多个服务器等等。下面结合图8描述适用于实现本文描述的技术的计算系统和设备的其它示例。[0022]虽然网络108被示为互联网,但是网络可以假定各种各样的配置。例如,网络108可以包括广域网WAN、局域网(LAN、无线网络、公用电话网、内联网、对等网络等。此外,虽然示出了单个网络108,但是网络108可以被配置为包括多个网络。[0023]客户端设备102被进一步示出为包括操作系统110。操作系统110被配置为将底层设备的底层功能抽象为在客户端设备102上可执行的应用112。例如,操作系统110可以抽象处理、存储器、网络和或显示功能,使得应用112可以被写入而不知道“如何”实现该底层功能。例如,应用112可以向操作系统110提供数据,以由显示设备渲染和显示,如图所示,而不理解如何执行该渲染。通常与客户端设备相关联的各种应用112被构思包括但不限于集成了多个办公室生产力模块的生产率套件、web浏览器、游戏、多媒体播放器、文字处理器、电子表格程序、照片管理员等等。[0024]客户端设备102和其他客户端设备每个被示为包括通信模块114。通信模块代表通过网络108实现各种通信的功能。通信模块的示例包括语音通信应用例如VoIP客户端)、视频通信应用、消息传递应用、内容共享应用、访问web内容的浏览器及其组合。例如,通信模块114使不同的通信模态能够组合以提供不同的通信场景。这包括但不限于实现用于用户存在指示、视频通信、在线协作和会议体验、即时消息传递(IM和语音呼叫的集成功能。此夕卜,通信模块可以可操作以访问在线资源例如,内容和服务)、浏览网页和站点,建立与服务提供商和其他客户端的通信连接,以及通过可以经由通信模块输出的用户接口116实现其它各种交互。在至少一些实现中,通信模块114表示被部署到且本地安装在客户端设备上的应用。可替代地或者另外地,通信模块114可以全部或部分地实现为通过web浏览器访问和执行的远程应用例如,web应用),作为来自提供商的远程服务,使用点对点技术等等。[0025]服务提供商106包括可操作以管理可以通过网络108可用的各种资源118的功能,例如经由如图1所示的资源管理器120。资源管理器120表示用于管理资源118的各种功能以及与资源相关的数据,如本文所讨论的。服务提供商106可以经由网页或其他用户接口116提供各种资源118,所述网页或其他用户接口116通过网络传送以由一个或多个客户端经由web浏览器或其他客户端应用程序输出。服务提供商106被配置为管理对资源118的访问、资源的执行以及用户接口116的配置以提供资源122等等。服务提供商106可以表示用于提供各种资源118的一个或多个服务器设备。[0026]另外,资源管理器120可以被配置为实现分区函数122以管理与资源118相关联的数据库124,数据库124可以被分区和重新分区成多个分区126也称为分片)。通常,分区函数被配置来定义如何在分区的布置上分配数据,并且分区函数还可以用于将数据请求路由到适当的分区。分区函数122中的至少一些可以是以上述和下文描述的方式配置和操作的复合分区函数。关于复合分区函数的形成和使用的附加细节可以参考下列附图找到。[0027]在至少一些实施例中,客户端可以通过客户端被认证到的客户端用户账户访问由服务提供商106提供的资源118。例如,为了访问资源118,客户端设备可以提供由认证服务认证的用户名和密码。当认证成功时例如,客户端“确如其所言”),认证服务可以传递标记或其它合适的认证标识符密文)来访问对应的资源。单个认证可以对应于一个或多个资源,使得通过“单一登录”对单个账户的认证可以提供对单个资源的访问,对来自多个服务提供商106的资源的访问和或对来自服务提供商106可用的整套资源的访问。[0028]通常,服务提供商106可访问的资源118可以包括通常由一个或多个提供商使得在网络上可用的服务和或内容的任何合适的组合。服务的一些示例包括但不限于搜索服务、电子邮件服务、即时消息传递服务、在线生产力套件、协作服务例如,集成用于VoIP呼叫、在线会议和会议、屏幕共享、统一通信和协作UCC服务、即时消息传递、视频聊天、语音通信等中的一个或多个的功能的服务和控制客户端对资源118的访问的认证服务。内容可以包括文本、多媒体流、文档、应用文件、照片、音频视频文件动画、图像、网页、web应用、设备应用、由浏览器或其他客户端应用显示的内容等的各种组合。[0029]考虑了前述示例环境,现在考虑根据一个或多个实现的针对复合分区函数技术的一些示例的细节和过程的讨论。[0030]复合分区函数的细节[0031]本部分讨论复合分区函数技术和示例过程的细节,其可以用于根据一个或多个实现对数据库重新分区而不移动现有数据。一般来说,分区是一种可用于缩放数据库的技术。分区可以涉及将记录数据条目分割为称为分区126也称为分片)的分离的子集。分区可以基于用于记录的合适的标识符,其一个示例是记录的主要键。分区可以物理地分布在多个不同的服务器和或存储设备例如,数据库节点)上。在一种方法中,每个分区可以分配给单独的数据库服务器,使得在分区和数据库节点之间存在一对一的映射。可替代地或者另外地,一个或多个分区可以跨服务器存储设备在逻辑上划分,使得针对给定分区分配的空间可以位于两个或更多个单独的数据库节点上。[0032]在该上下文中,分区的给定的布置具有有限量的存储容量,其在数据库被数据填充时被消耗。在某个时间点,可能达到可能必须扩展存储容量以使数据库的继续操作成为可能的容量阈值。数据库的扩展可以包括将一个或多个分区添加到分区的现有的布置,以创建具有更多存储容量的分区的另一布置。数据库的扩展在本文中也称为重新分区。对于每个数据库节点相对于所存储的数据量或访问数据的请求速率而变得均匀饱和的平衡系统可能发生重新分区。在这种情况下,可以利用被配置为利用额外的存储的新分区函数来添加额外的存储例如,另一个服务器存储设备)。对于某些数据库节点接近存储限值而其他节点轻负载并剩余空间的不均衡系统也可能会发生重新分区。在这种情况下,数据库节点可以保持相同,但是可以定义新的分区函数,其被配置为相对于更多加载的节点有利于较少使用的节点。[0033]根据本文描述的技术,可以执行重新分区,使得位于重新分区时存在的分区中的数据条目保持其各自的位置。换句话说,重新分区时已经在数据库中的数据不会由于重新分区而移动,这导致处理时间缩短和资源利用降低。这可以通过使用如本文所讨论的复合分区函数来实现,其被配置为选择性地应用与分区或“分区时期”的连续布置相对应的多个不同的底层分区函数,以用于处理数据请求。为了这样做,复合分区函数可以包括或以其他方式利用键成员资格的记录来识别每个数据请求所对应的分区时期,并对被识别为处理请求的分区时期应用适当的分区函数。[0034]现在考虑图2-5的示例,其中说明了有关复合分区函数和键成员资格记录、以及使用复合分区函数的重新分区的进一步细节和概念。具体而言,图2总体上描述了根据一个或多个实现的用于数据库系统的分区的示例性布置200。在所示的示例中,表示可以与服务提供商106相关联的服务器202,如关于图1所讨论的。服务器202可以被配置为提供与web应用204和或其他资源118相关联的功能。服务器202还包括资源管理器120,其可以如本文所讨论的那样操作以管理与web应用程序204的交互和与相应数据库中的web应用相关联的数据的存储。数据可以经由存储设备存储,在所述存储设备上定义了用于数据库的分区126,并且所述所述存储可以经由一个或多个服务器(其可以包括或可以不包括服务器202来实现。在一个实现中,数据库的分区126中的一个或多个可以经由服务器202提供。[0035]所描绘的示例中的资源管理器120被配置为实现用于图2所描绘的分区的布置的分区函数Pl2061,其包括两个示例的分区,即分区2080和分区2081。数据以键值格式表示,其中键是数据记录的主要键,该值表示数据记录的内容。可以进行数据请求以访问数据并对数据执行操作,包括但不限于添加记录、删除记录、修改数据、读取操作、写入操作等等。为了访问数据以执行操作,请求应用使用键或其他类似的标识符来定位与所指示的键相对应的用于分区的数据库节点。一旦完成,可以根据对于不同系统可能不同的用于数据库系统的特定协议、格式和或数据库技术,从所选节点和或分区访问数据。[0036]分区函数pi2061和分区函数122通常能够基于相应的键来实现确定性的分区选择。换句话说,该函数一致地对于给定的键选择相同的分区,以便可靠地定位数据。考虑了分区函数122的各种配置。在一种方法中,分区函数可以被配置为散列函数,当被应用于数据请求的键值时,所述散列函数返回标识与键值对应的数据库的分区的数据。[0037]作为示例而非限制,分区函数p可以具有形式pk=hashkmodN,其中k是键,hash是散列函数,而N是给定布置的分区编号。在此示例中,分区函数返回从0到N-I计数的分区编号。散列函数用于将大的整数值分配给表示键k或其他标识数据的字符串(或字节数组)。以此形式使用的散列函数可以被配置为提供均匀的值分布。可替代地,可以选择配置散列函数以实现可用于偏移数据到特定分区(例如,未充分利用的分区)的位移的值的分布。模函数modN将大整数返回到0到N-I的范围内,这可以用作分区的布置中各个分区的标识符。因此,分区函数可以被设计为根据分区函数所反映的分布方案在数据库节点分区之间分配数据。[0038]在图2的示例中,分区函数pi206⑴被配置为将用于键kl和k2的记录映射到在该示例中为分区208⑶的第一分区。换句话说,针对键kl和k2进行评估的分区函数pi2061返回分区2080的标识符,在这种情况下为零值例如,(pikl=plk2=0。因此,与键kl和k2相对应的数据记录值可以存储在与如图2所示的分区2080相关联的服务器存储器中并从其访问。分区函数Pl2061也被配置将键k3和k4的记录映射到第二分区,即分区2081。本文,针对键k3和k4评估的函数返回分区2081的标识符,这种情况下该标识符是值I例如,(pik3=plk4=1。因此,如图2所示,可以将对应于键k3和k4的数据记录值存储在与分区2081相关联的服务器存储器中并从其访问。[0039]现在,如果对于图2所示的示例系统达到容量阈值,则可以通过包括附加的服务器存储器以及在分区的新的布置中重新分区数据库来添加额外的容量。考虑例如从N扩展至|JN’N,其中例如Ν’=N+1或Ν’=2*N。分区的新的布置由新分区函数来管理,所述新分区函数被创建以容纳附加容量分区。然后可以使用新的分区函数将新数据分配给扩展系统,如以上所讨论的那样,可以具有形式P’(k=hashkmodN’。现有数据的位置虽然由前一个分区函数例如分区函数Pl2061管理,因此新的分区函数可能无法可靠地定位现有数据,因为这两个函数通常不对齐例如,Pk辛p’(k。传统的解决方案包括停止数据库服务一段时间,迭代现有记录,并根据新的分区函数执行删除和重新插入操作,以便新分区函数的后续使用。如前所述,对于具有大量数据和请求的数据库来说,这可能是相当有破坏性且耗时的。[0040]然而,本文描述的复合分区函数技术可用于在不移动现有数据的情况下对数据库重新分区。通常,复合分区函数使用用于分区的不同布置的键成员资格的记录来选择用于给定数据库操作的相应分区函数。在这种情况下,即使在重新分区之后,通过其将特定数据最初分配给数据库的分区函数也继续用于该特定数据。键成员资格的记录使得能够选择正确的函数来应用,并且复合分区函数被设计为使用两个或更多个单独分区函数的组合,其分别对应于不同的分区时期。[0041]为了说明,考虑图3,图3总体上以300描绘了根据一个或多个实现的用于表示图2的系统的扩展的数据库系统的分区的另一示例性的布置。在该示例中,附加分区2082被描绘为包括在图3的分区的布置中。另外,资源管理器120被示为实现管理用于图3的分区的布置的数据分配的复合分区函数302。复合分区函数302被配置为将用于图2的布置的前一函数分区函数Pl2061与建立用于图3所示的分区的重新布置的新函数即分区函数p22062相结合。复合分区函数302还被配置为包括或使用键记录bl3041,键记录bl3041可以用于利用复合分区函数302中包含的各个分区函数来识别键值的对应关系。在一种方法中,键记录bl3041提供了一种识别哪些键值与前一个函数分区函数pi2061相关联,并且因此选择该函数来处理相应的数据请求的机制。分区函数P22061可以用于与键记录bl3041中包含的键值不对应的其他数据请求。[0042]在该示例中,与键kl、k3、k3和k4相关联的日期条目值在系统中预先存在,并且分布在两个分区上,如图2所示。可能会发生重新分区,以添加如图3所示的附加分区。在实现中,可以停止数据库系统以创建附加分区并安装复合分区函数。作为重新分区的一部分,处理系统中的现有键例如,kl、k2、k3和k4以在重新分区时创建由键记录bl3041表示的记录键成员资格。应注意,相对于根据新的分区函数移动现有记录所花费的时间量,该处理可能花费显著少的时间。[0043]复合分区函数302可以以如下方式定义。分区函数pi2061是用于分区的两个布置的原始分区函数,并且可以具有形式为口11〇=1^此1〇111〇12。分区函数?22062是针对三个分区的扩展的布置而建立的新分区函数,并且可以具有形式p2k=hashkmod3。现在,表示为P’(k的复合分区函数302可以表示为:[0044]p’(k=plk,对于blk=true或否则p’(k=p2k中的任何k[0045]换句话说,进行检查以确定键值是否包括在键记录bl3041中。如果找到键值,则使用Pl来处理相应的请求操作。否则,如果没有找到键值,则使用P2来处理相应的请求操作。使用复合分区函数302,现有记录可以保留在其原始位置,因为它们仍然使用pi定位。新记录可以使用P2在包括新分区的分区的布置中填充数据。因此,数据库节点的整个集合将被向前使用。[0046]键成员资格的记录,例如图3的键记录bl3041,可以以任何合适的方式配置以区分与分区不同的布置和或分区时期相关联的键。可以在一个或多个实现中采用与每个布置时期相对应的键的原始列表。实际上,尽管如此,键的原始列表的大小可能使得难以将列表分布到不同的数据库服务器和节点并占用相当多的存储器。因此,作为使用原始列表的附加或替代,可以使用压缩格式的键的紧凑表示。可以设想各种不同的压缩的数据结构,其可以被配置为识别与在重新分区时存在于数据库中的数据条目对应的键。压缩的数据结构的示例包括但不限于位图、数组、矩阵和过滤器,仅举几个示例。[0047]—个或多个实现中可以适用于键成员资格的记录的压缩的数据结构的另一示例是布隆过滤器。布隆过滤器是一种数据结构,其被设计为在以空间高效的方式记住值的集合的集合成员资格。特别地,给定键的集合S={kl,...kN},可以创建布隆过滤器以“记住”集合S中每个键的存在。由于它是空间高效的,所以布隆过滤器不仅仅是记住所有键的列表。相反,布隆过滤器维持位向量,其中对于来自集合S的每个键k,在索引hashkmodM处设置一位,其中hash是散列函数其可以或可以不与关联于分区函数的散列函数不同),M是位向量的长度。为了确定任何给定键k的集合成员资格,对位置hashkmodM处的位执行查找。如果该位被置位,则该键是该集合的成员,否则不是该集合的成员。位向量是非常空间高效的,因此它使得可以将布隆过滤器存储在数据库节点的存储器中是可能的,即使对于通常在支持大型应用的数据库中发现的大量键也是如此。[0048]注意,布隆过滤器是产生一些假阳性错误的概率数据结构。例如,不是集合S的成员的键k2可能散列成与作为S的成员的键kl相同的值。该错误被称为散列函数的冲突。错误率很小,但仍然有可能。因此,对于不是S成员的少量键,布隆过滤器可能会错误地将其分类为集合成员。可以通过扩展位向量的长度和或通过使用多个散列函数和基于由这些散列函数指示的多位设置的检查来解析成员资格来最小化错误的概率。因此,布隆过滤器可以被选择性地配置为通过指定位向量的长度并且通过选择用于布隆过滤器的一个或多个散列函数来控制错误。在实践中,可以进行权衡以设置可接受的错误率,其受到布隆过滤器占用的存储空间和用于计算散列函数的延迟成本的限制。错误率是可以接受的,因为如果布隆过滤器将新数据的键误识别为集合的成员,那么它将一直这样做。因此,即使使用前一分区函数来放置数据,数据也可以可靠地定位。此外,布隆过滤器不会返回对作为集合成员的键例如,用于预先存在的记录的键)的假否定,并且因此旧数据可以保留在原始位置并且可靠地位于原始位置。在一种方法中,布隆过滤器的配置可以包括设置可配置容限,可配置容限确定产生假阳性错误的频率。反过来,布隆过滤器的紧凑程度取决于可配置容限。例如,通过设置可配置容限以产生或“容忍”更多的假阳性错误,可以实现更高的紧凑度。在实践中,可以获得非常高的紧凑度,因为使用来自前一个时期的函数仍然可靠地定位误识别的数据条目。换句话说,布隆过滤器错误的影响可以忽略,因此相对较大频率的错误是可以容许的,因此可以采用布隆过滤器的非常紧凑的配置。[0049]现在考虑由图3表示的例子,在重新分区之后,系统中添加了四条新记录。为了该示例的目的,假设键记录bl3041被配置为刚刚描述的布隆过滤器。键kl、k3、k3和k4在系统中预先存在,并且将被识别为布隆过滤器的成员。因此,与这些键相关联的请求由分区函数Pl2061来管理。发现键k5和k6不是布隆过滤器的成员,并且可以由分区函数p22062分配给分区2081。键k7在布隆过滤器中也没有找到,并由分区函数p22062分配给数据库3的新分区。键k8是一个有趣的情况,因为它是重新分区后出现的一个新键,然而由于如上所述的布隆过滤器错误,它被错误地分类为成员,并且因此由分区函数Pl2061分配给分区2081。如上所述,这不会导致数据的完整性或定位与键k8相对应的数据的能力的问题,因为布隆过滤器将一直误识别键k8,并因此可靠地路由数据请求。[0050]还应注意,本文描述的重新分区过程可以针对连续的分区时期多次执行。上面关于图1-3讨论的概念可以应用于涉及多次重新分区操作的一般化情况。例如,前面的示例中的前一函数Pl可以是对应于先前的重新分区的不同的复合分区函数。换句话说,针对分区的当前的布置而建立的复合分区函数可以包括用于先前的布置的一个或多个其他的复合分区函数。[0051]为了进一步说明,考虑图4,图4总体上描绘了根据一个或多个实现的用于数据库系统的分区的另一示例性的布置。具体而言,图4描绘了多个数据库分区(1到N和多个重新分区操作的一般化情况,每个分区操作不会导致现有数据移动到分区的布置中的新位置。在该示例中,数据库系统的生命周期可以具有一系列连续的分区时期(1到M。每个分区时期与相应的分区函数122相关联,分区函数定义如何针对该分区时期存在的分区分配和定位数据。此外,重新分区表示先前的分区时期的结束和新分区时期的开始。每个时期结束时存在的布隆过滤器或其他键成员资格的记录可以被建立作为重新分区的一部分。因此,不同的分区时期可以与可以用于识别正确的分区函数122以应用数据请求的不同的键成员资格的记录相关联。[0052]当前请愿时期M由复合分区函数402来管理,复合分区函数402是具有针对每个分区时期的参考标记2061·,·206M的多个基于散列的分区函数pi……ρΜ的组合。另外,具有参考标记304I+304M-I的键记录bl...bM-i被描绘为在当前时期之前针对每个请愿时期建立的。复合分区函数402可以被配置为检查在键记录的任何一个中是否找到键值,然后当确定键记录之一的成员资格时应用相应的分区函数。在一种方法中,检查通过检查最旧时期的键记录而开始,然后从最旧到最新进展通过每个时期,直到找到匹配。如果在任何键记录中都找不到匹配,则选择并应用当前时期的分区函数PM206M。在这种上下文中,复合分区函数402可以表示如下:[0053]如果在过滤器bl中找到k,则设Pk=Pik[0054]否则如果在过滤器b2中找到k,则设pk=p2k[0055]...对干预时期继续评估[0056]否则如果在过滤器bM-i中找到k,则设pk=Pm-Ik[0057]否则设pk=pM-ik[0058]伪代码中的示例复合分区函数402的表示如下:[0059][0060]根据上述讨论,可以被配置成选择性地应用两个或更多个分区时期的分区函数的复合分区函数,所述分区函数可以被定义为管理当前时期的数据库操作和请求。在一个或多个实现中,复合分区函数被配置为在分区当前的布置中提供跨分区的新数据记录的基本相等的分布。取决于重新分区时存在的数据的分布,尽管新数据的分布可能会或可能不会创建可接受的负载平衡,因为新添加的分区可能具有比已经存储有旧数据的现有分区更多的可用存储空间。[0061]例如,考虑使用分区函数hashkmodN和hashkmodΝ’将N个分区扩展为Ν’的系统。为了示例的目的,假设分别在图2和图3的示例中Ν=2和Ν’=3。相应的分区函数?11〇=hashkmod2和p2k=hashkmod3将一些数据放置到新的分区上,但是现有的分区可能会因为重新分区时的负载条件而负载更大。因此,分配可能导致不平衡的系统。[0062]因此,还可以结合本文讨论的复合分区函数技术来提供重新平衡特征。在一种方法中,可以将重新平衡特征提供作为可以选择性地切换打开或关闭以偏向于将新数据分配给新的和或未充分利用的分区的选项。另外地或可替代地,资源管理器120可以被配置为基于诸如分区的可用容量、请求量、数据增加率等因素来自动实现重新平衡。通常,重新平衡特征可以涉及使用经修改的散列函数,该修改的散列函数被配置为并入偏移因子,以使得与其他分区相比将新数据更频繁地分配给一个或多个指定的分区。例如,偏移因子可能导致数据的不均匀分布,以将更多的数据分配给重新配置的布置所添加的新分区,而不是在重新分区操作之前存在的旧分区。考虑了朝向特定分区偏移分配的各种技术。例如,偏移因子可以操作用于指定将请求分配给所选分区的可配置间隔,即使散列函数指示不同的分区。因此,可以将系统设置为以间隔(例如,每第三或第四个请求)自动分配请求给所选分区。在另一种方法中,可以基于分区的相对负载来动态地改变偏移因子,使得最初将更多请求分配给所选分区,但是随着时间的推移,函数逐渐可以返回到进行均匀分布。例如,偏移因子可以根据衰减函数而变化,其使得偏移因子的影响随着时间的推移而减小,因为所选分区被填满数据。[0063]在另一种方法中,通过经修改的分区函数来实现偏移因子,该修改的分区函数使用时隙概念来将分配偏置于布置中的新分区。本文,修改的分区函数定义了数量上大于分区数的多个时隙。然后,这些时隙被逻辑地分配给分区,使得可以将新的分区或所选分区分配给多于一个的时隙。散列函数被配置为返回识别时隙的数据,并将数据分配给相应的分区。由于散列函数返回的值跨越多个时隙,因此相对于仅分配给一个时隙的分区,数据将更频繁地分配给多于一个时隙的分区。[0064]为了说明,考虑图5,图5描绘了根据一个或多个实现方式的通常以500表示的将分区分配给时隙的表示。本文,示出图3中的示例的三个分区2080、2081、2082。多个时隙502被定义并分配给分区。在该示例中,四个时隙502被分配给三个分区2080、2081、2082,其中分区208⑶和分区2081例如,旧分区)中的每个被分配给一个时隙,而分区208⑵(例如,新分区)被分配给两个时隙。[0065]对于具有非以上一般形式pk=hashkmodN的分区函数,实现偏置的修改包括用S的值替换N的值,其中S是时隙数。此外,可以维护指示时隙分配的数据,以映射返回到实际分区的时隙标识。然后,按两个步骤计算分区:[0066]1计算slot=hashkmodS,其中S是时隙数[0067]⑵使用指示时隙分配的数据将时隙映射到分区[0068]随着新的数据到达,更多的键被映射到新的分区,并且相应地,新的分区以比旧的分区更快的速率填满并且接管更多的负载。最终,系统可以在分区之间取得平衡,在这一点上继续向较新的分区偏移可能会导致不平衡的返回,此时较新的分区维护太多的负载。为了解决这个问题,可以执行如本文描述的另一重新分区操作,其使用相同的分区,但是导致从偏移的散列函数切换回不使用时隙或偏移因子的“标准”函数。本文执行额外的重新分区来更改更新分区函数,而不增加更多的容量。在这个额外的重新分区之后,系统将得到平衡和扩展。[0069]示例的过程[0070]以下讨论描述了可以利用先前描述的系统和设备来实现的技术。每个过程的方面可以利用硬件、固件或软件或其组合实现。这些过程被示出为指定由一个或多个设备执行的操作的框的集合,并且不一定限于由各个块执行操作的所示的顺序。在以下讨论的部分中,可以参考图1的环境100以及图2-5的示例。作为示例,过程的各方面可以由适当配置的计算设备来执行,例如由被配置为提供资源118和或资源管理器120的、与服务提供商106相关联的一个或多个服务器设备。[0071]关于图1-5的示例描述的功能性、特征和概念可以在本文描述的过程的上下文中使用。此外,关于下面的不同过程描述的功能性、特征和概念可以在不同的过程之间互换,并且不限于在单个过程的上下文中的实现。此外,本文中与不同的代表性过程相关联的框和对应的图可以一起应用和或以不同的方式组合。因此,可以以任何合适的组合使用关于本文档通篇中的不同的示例环境、设备、组件和过程所描述的各个功能性、特征和概念,并且不限于由列举的示例表示的特定组合。[0072]图6是描绘了根据一个或多个实现来定义复合分区函数的示例的过程600的流程图。数据库用第一分区函数分区(框602。例如,如前所述,资源管理器120可以操作以管理与资源118相关联的数据库124。数据库124可以被划分为多个分区126,其经由由资源管理器120或其他方式实现的分区函数122来定义和或管理。[0073]随后,数据库被重新分区(框604。重新分区可以自动地或者在用户的指导下启动。当分区的现有布置的存储容量达到利用的阈值水平时,可以执行重新分区。在这种情况下,重新分区可能涉及增加更多的存储容量。另外地或可替代地,重新分区可以由于其他原因而执行,例如如本文所讨论的重新平衡分区,改变分区函数以实现特定的分配目标,撤销偏移的散列函数以返回到均衡分配等等。[0074]作为重新分区的一部分,针对位于重新分区时存在的分区中的数据条目创建键成员资格的记录框606,并且添加与第二分区函数相关联的一个或多个新分区(608。可以使用各种技术来实现如前所述的键成员资格的记录。例如,可以使用布隆过滤器或其他压缩的数据结构来记录与位于重新分区时存在的分区中的数据条目相关联的键值或其他合适的标识符。此外,可以添加新的分区以增加存储容量并创建分区的新的布置。如本文所讨论的,分区的新的布置与考虑新分区的第二分区函数相关联,并且被配置为在新分区和旧分区两者上分布新数据。[0075]另外,针对后续数据库操作定义了复合分区函数,其被配置为对具有在键成员资格的记录中找到的键值的数据应用第一分区函数,或以其他方式对于具有在键成员资格的记录中未找到的键值的数据应用第二分区函数框610。然后,应用复合分区函数来管理与数据库相关联的数据请求框612。通常,复合分区函数被配置为利用键成员资格的记录或多个记录将数据的键值标识符映射到与不同分区时期相关联的相对应的分区函数。然后可以根据通过应用复合分区函数所返回的相应分区函数来处理数据请求。使用本文讨论的复合分区函数方法使得能够执行重新分区,使得位于重新分区时存在的分区中的数据条目保持其各自的位置。换句话说,旧数据没有移动。关于可以结合过程600使用的复合分区函数的各种细节和例子在先前关于图1-5进行了讨论。[0076]图7是描绘了根据一个或多个实现方式的复合分区函数用于路由分区的布置请求的示例过程700的流程图。针对对应于与数据库的一个或多个分区的第一布置相关联的第一分区函数的数据建立标识符的记录框702。标识符的记录可以被配置为如本文所描述的布隆过滤器或可用于指示关于一个或多个分区的布置例如,分区时期)的数据的成员资格的其他合适的数据结构。标识符可以被配置为如本文所讨论的键值,尽管也可以考虑其他标识符,例如标识字符串、数据内容的散列值等等。一个或多个分区的第一布置可以对应于数据库的初始配置例如,初始分区时期)。另外地或可替代地,一个或多个分区的第一布置可以由对先前的时期的布置进行重新分区而得到,在这种情况下,第一分区函数可以被配置为复合函数。[0077]用于数据库的分区的布置被重新配置以添加至少一个附加分区以增加重新配置的布置中的存储容量框704。在本文,可能会发送如前所述的重新分区,以增加系统的额外容量。重新分区导致可能具有比第一布置更多的分区的重新配置的布置。因此,生成复合分区函数,其组合了与第一配置相关联的第一分区函数和与重新配置的布置相关联的第二分区函数,该复合分区函数被配置为使用标识符的记录来确定是应用第一分区函数还是第二分区函数用于在数据库的分区之间路由数据请求框706。然后,使用复合分区函数路由数据请求框708。如前所述,可以生成考虑与分区的不同布置相关联的两个或更多个连续的分区时期的复合分区函数。不同的布置可以与不同的单独分区函数和或不同数量的分区相关联尽管在某些场景中可以使用相同数量的分区用于两个或更多个时期例如,重新平衡)。不同的时期布置也可以与标识符的记录相关联,所述标识符可用于识别特定时期内的数据请求的成员资格标识符。然后将适当的分区函数映射到数据请求,并用于将数据请求路由到相应的分区。复合分区函数被配置为将与连续的分区时期相关联的两个或更多个分区函数与对应于数据库的分区的特定布置的每个分区时期组合。关于可以与过程700结合使用的复合分区函数的各种附加细节和示例在上文关于图1-6进行了论述。[0078]考虑了一些示例的过程,现在考虑可以用于实现在一个或多个实现中描述的技术的方面的示例系统和设备的讨论。[0079]示例的系统和设备[0080]图8示出了包括代表可以实现本文所描述的各种技术的一个或多个计算系统和或设备的示例的计算设备802的示例的系统,一般以800表示。计算设备802可以是例如服务提供商的服务器、与客户端相关联的设备例如,客户端设备)、片上系统和或任何其它适合的计算设备或计算系统。[0081]如图所示的示例的计算设备802包括处理系统804、一个或多个计算机可读介质806和一个或多个IO接口808,它们彼此通信耦合。虽然没有示出,但是计算设备802还可以包括将各组件彼此耦合的系统总线或其它数据和命令传输系统。系统总线可以包括不同总线结构的任意一个或组合,诸如使用各种总线架构中的任一种的存储器总线或存储器控制器、外围设备总线、通用串行总线和或处理器或本地总线。还可以设想其它各种示例,例如,控制线和数据线。[0082]处理系统804代表了利用硬件来执行一个或多个操作的功能。因此,处理系统804被图示为包括可被配置为处理器、功能块等的硬件元件810。这可以包括以硬件实现为专用集成电路或利用一个或多个半导体形成的其它逻辑器件。硬件元件810不受形成它们的材料或本文所采用的处理机制的限制。例如,处理器可以由半导体和或晶体管(电子集成电路IC构成。在该上下文中,处理器可执行指令可以是电子可执行指令。[0083]计算机可读介质806被图示为包含存储器存储设备812。存储器存储设备812代表了与一个或多个计算机可读介质相关联的存储器存储设备容量。存储器存储设备812可以包括易失性介质(诸如随机存取存储器RAM和或非易失性介质(诸如只读存储器ROM、闪存、光盘、磁盘等)。存储器存储设备812可以包括固定介质(例如,RAM、R0M、固定硬盘驱动器等)以及可移除介质例如,闪存、可移除硬盘驱动器、光盘等)。计算机可读介质806可以如下面进一步描述的其它各种方式来配置。[0084]输入输出接口808代表允许用户输入命令和信息到计算设备802以及还允许利用各种输入输出设备向用户和或其它组件或设备呈现信息的功能。输入设备的示例包括键盘、光标控制设备例如,鼠标)、麦克风、扫描仪、触控功能例如,被配置为检测物理触摸的电容或其它传感器)、照相机例如,可以采用可见或诸如红外频率的非可见波长来检测作为姿势的未涉及触摸的运动),等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备,等等。因此,计算设备802可以如下文所描述的多种方式来配置以支持用户交互。[0085]可以在软件、硬件元件或程序模块的一般上下文中在此描述各个技术。一般地,这些模块包括执行特定的任务和或实现特定的抽象数据类型的例程、程序、对象、元件、组件、数据结构等。本文所使用的术语“模块”、“功能”、和“组件”一般表示软件、固件、硬件或其组合。本文所描述的技术的特征是平台无关的,意味着这些技术可以实现在具有各种处理器的各种商用计算平台上。[0086]所描述的模块和技术的实现方式可以存储在某形式的计算机可读介质上或者在某形式的计算机可读介质上传输。计算机可读介质可以包括可由计算设备802访问的各种介质。通过示例而非限制的方式,计算机可读介质可以包括“计算机可读存储介质”和“通信介质”。[0087]“计算机可读存储介质”可以是指使能持久存储信息的介质和或设备,与仅仅信号传输、载波或信号本身不同。因此,计算机可读存储介质不包含承载介质或信号本身的信号。计算机可读存储介质包括诸如以适合于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件电路或其它数据的信息的方法或技术实现的易失性和非易失性、可移除和非可移除介质和或存储设备的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘DVD或其它光学存储、硬盘、磁盒、磁带、磁盘存储或其它磁存储设备、或其它存储设备、有形介质或适合于存储所需信息且可由计算机访问的制品。[0088]“通信介质”可以是指被配置为例如经由网络向计算设备802的硬件传输指令的信号承载介质。通信介质典型地可以具体体现计算机可读指令、数据结构、程序模块或调制数据信号中的其它数据,例如载波、数据信号或其它传输机制。信号介质还包括任何信息输送介质。术语“调制数据信号”意指使其特性中的一个或多个以将信息编码到信号中的方式来设定或改变的信号。通过示例而非限制的方式,通信介质包括诸如有线网或直接接线连接的有线介质以及诸如声波、RF、红外和其它无线介质的无线介质。[0089]如之前所描述的,硬件元件810和计算机可读介质806代表了可以在一些实施例中采用来实现本文所描述的技术的至少一些方面的、以硬件形式实现的指令、模块、可编程器件逻辑和或固定器件逻辑。硬件元件可以包括集成电路或片上系统、专用集成电路ASIC、现场可编程门阵列FPGA、复杂可编程逻辑器件CPLD和在硅或其它硬件器件中的其它实现方式的组件。在该上下文中,硬件元件可以操作作为处理设备,其执行由用来存储用于执行的指令例如,之前所描述的计算机可读存储介质)的硬件元件以及硬件设备实现的指令、模块、和或逻辑定义的程序任务。[0090]上述的组合还可以用来实现本文所述的各种技术和模块。因此,软件、硬件或包括应用112的程序模块、通信模块114、资源管理器120的程序模块和其它程序模块可以实现为具体实施在某形式的计算机可读存储介质上和或由一个或多个硬件元件810具体实施的一条或多条指令和或逻辑。计算设备802可以被配置为实现对应于软件和或硬件模块的特定的指令和或功能。因此,作为能够由计算设备802执行作为软件的模块的模块实现方式可以至少部分地以硬件来实现,例如,通过使用处理系统的计算机可读存储介质和或硬件元件810。指令和或功能可以是由一个或多个制品(例如,一个或多个计算设备802和或处理系统804能执行的能操作的以实现本文所描述的技术、模块和示例。[0091]如图8中进一步图示的,示例的系统800实现了当运行应用于个人计算机PC、电视设备和或移动设备上时用于无缝用户体验的普遍适用的环境。当在使用应用、播放视频游戏、观看视频等的同时从一个设备过渡到下一设备时,服务和应用在所有三种环境中运行基本相似以达到共同的用户体验。[0092]在示例的系统800中,多个设备通过中央计算设备来互连。中央计算设备可以在多个设备的本地或者可以在多个设备的远程定位。在一个实施例中,中央计算设备可以是通过网络、因特网或其它数据通信链路与多个设备连接的一个或多个服务器计算机的云。[0093]在一个实施例中,该互连架构使能在多个设备之间输送功能以向多个设备的用户提供共同的且无缝的体验。多个设备中的每个设备可以具有不同的物理要求和能力,并且中央计算设备使用平台来向设备输送既针对设备进行调整又对全部设备共用的体验。在一个实施例中,创建一类目标设备,并且针对通用类的设备来调整体验。一类设备可由设备的物理特征、使用类型或其它共同特性来定义。[0094]在各个实现方式中,计算设备802可以采用各种不同的配置,例如计算机814、移动设备816和电视机818用途。这些配置中的每一个配置包括通常可具有不同的构造和能力的设备,并且因此,计算设备802可以根据不同的设备类中的一种或多种来配置。例如,计算设备802可以实现为包含个人计算机、桌面型计算机、多屏幕计算机、膝上型计算机、上网本等的计算机814设备类。[0095]计算设备802还可以实现为包括移动设备的移动设备816设备类,诸如移动电话、便携式音乐播放器、便携式游戏设备、平板式计算机、多屏幕计算机等。计算设备802还可以实现为包括在临时观看环境中具有通常较大的屏幕或与通常较大的屏幕连接的设备的电视机818设备类。这些设备包括电视机、机顶盒、游戏控制台等。[0096]本文所描述的技术可以由计算设备802的这些各种配置来支持并且不限于本文所描述的技术的具体示例。这通过在计算设备802上包含资源管理器120来图示说明。资源管理器120和其它模块的功能可以全部或部分地通过使用分布式系统来实现,例如经由平台822在“云”820上实现,如下文所述。[0097]云820包括和或代表用于资源824的平台822。平台822抽象了云820的硬件(例如,服务器)的底层功能和软件资源。资源824可以包括可以在计算机处理在远离计算设备802的服务器执行上时所能使用的应用和或数据。资源824还可以包括在因特网上和或通过订户网络例如,蜂窝或Wi-Fi网络所提供的服务。[0098]平台822可以抽象出将计算设备802与其它计算设备连接的资源和功能。平台822还可以起到抽象资源的缩放以提供相应级别的缩放给所遇到的对经由平台822实现的资源824的需求的作用。因此,在互连设备实施例中,本文所描述的功能的实现方式可以遍布系统800分布。例如,功能可以部分地实现在计算设备802上以及经由抽象云820的功能的平台822来实现。[0099]示例的实现[0100]本文描述的复合分区函数的示例实现包括但不限于以下以下示例中的一个或多个的一个或任何组合:[0101]—种由计算设备实现的方法,包括:利用第一分区函数对数据库进行分区;并通过以下方式对数据库重新分区:创建位于重新分区时存在的分区中的数据条目的键成员资格的记录;添加与第二分区函数相关联的一个或多个新分区;定义用于后续数据库操作的复合分区函数,其被配置为:对具有在键成员资格的记录中找到的键值的数据应用第一分区函数;或者对于具有在键成员资格的记录中找不到的键值的数据应用第二分区函数。[0102]如上所述的方法,其中重新分区被执行,使得位于重新分区时存在的分区中的数据条目保持其各自的位置。[0103]如上所述的方法,其中键成员资格的记录被配置为记录与位于重新分区时存在的分区中的数据条目相关联的键值。[0104]如上所述的方法,其中所述键成员资格的记录包括压缩的数据结构,其被配置为识别与在重新分区时存在于数据库中的数据条目相对应的键。[0105]如上所述的方法,其中键成员资格的记录包括布隆过滤器。[0106]如上所述的方法,其中所述复合分区函数被配置为组合与连续的分区时期相关联的两个或更多分区函数,每个分区时期对应于数据库的分区的特定布置。[0107]如上所述的方法,其中所述第一分区函数和所述第二分区函数被配置为散列函数,当应用于数据请求的键值时,所述散列函数返回识别与所述键值对应的数据库的分区的数据。[0108]如上所述的方法,其中所述第一分区函数包括针对数据库的先前的重新分区建立以添加附加存储容量的在先的复合函数,被定义的所述复合分区函数被配置为对于具有在键成员资格的记录中找到的键值的数据应用在先的复合函数,而对于其他数据应用第二分区函数。[0109]如上所述的方法,其中所述组合分区函数被配置为将数据分配偏置于将新数据条目放置在新分区上以平衡跨数据库分区的数据分布。[0110]如上所述的方法,其中所述组合分区函数将新数据条目的至少一些键值误识别为在键成员资格的记录中找到,使得与误认识的键值相关联的数据条目被分配给重新分区时存在的分区内并一致地被定位在重新分区时存在的分区内。[0111]一种计算设备,包括:处理系统;以及一个或多个模块,当由处理系统执行时,所述一个或多个模块执行用于对数据库重新分区以增加存储容量的操作,所述操作包括:创建位于重新分区时存在的数据库的分区中的数据条目的键成员资格的记录,在重新分区时存在的数据库的分区与第一分区函数相关联;添加与第二分区函数相关联的新分区;以及定义用于处理后续数据库请求的复合分区函数,所述复合分区函数被配置为:对包括键成员资格的记录中找到的键值的数据请求应用第一分区函数;或者对于包括在键成员资格的记录中未找到的键值的数据请求应用第二分区函数,使得位于重新分区时存在的分区中的数据条目保持其在重新分区时存在的分区中的各自的位置。[0112]上述计算设备,其中键成员资格的记录被配置为布隆过滤器,其具有针对与重新分区时存在的数据条目相关联的键设置的位值,以通过布隆过滤器指示键的成员资格。[0113]上述的计算设备,其中:布隆过滤器根据可配置容限产生假阳性错误,这导致在重新分区之后创建的数据条目的至少一部分被误识别并使用第一分区函数被处理,假阳性错误是一致的,使得误识别的数据条目被使用第一分区函数而可靠地定位;并且布隆过滤器的紧凑程度取决于可配置容限。[0114]上述计算,其中所述复合分区函数被配置为将所述第二分区函数同与多个先前的操作相关联的多个单独的分区函数组合以对所述数据库重新分区。[0115]上面的计算设备,其中第二分区函数被配置为在重新分区时存在的数据库的分区和新的分区当中分配数据。[0116]—种由计算设备实现的方法,包括:建立与关联于数据库的一个或多个分区的第一布置相关联的第一分区函数对应的数据的标识符的记录;重新配置数据库的分区的布置以添加至少一个附加分区以增加重新配置的布置中的存储容量;生成复合分区函数,该复合分区函数组合了与所述第一布置相关联的第一分区函数和与所述重新配置的布置相关联的第二分区函数,所述复合分区函数被配置为使用所述标识符的记录来确定是应用所述第一分区函数还是第二分区函数,用于在数据库的分区之间路由数据请求;以及使用复合分区函数来路由数据请求。[0117]如上所述的方法,其中使用所述复合分区函数路由数据请求包括,对于每个数据请求:使用标识符的记录来确定与所述数据请求相关联的标识符是否包括在所述标识符的记录中;并且当包括标识符时,使用第一分区函数来路由数据请求;或者当不包括标识符时,使用第二分区函数来路由数据请求。[0118]如上所述的方法,其中数据请求包括在数据库的分区中访问、添加或修改数据条目的请求。[0119]如上所述的方法,其中在重新配置之前存在的数据条目作为重新配置的结果不被移动到不同的位置。[0120]如上所述的方法,其中所述第二分区函数包括经修改的散列函数,所述修改的散列函数被配置为包含偏移因子以使得与针对第一布置存在的一个或多个分区相比更频繁地将新数据分配给针对所述重新配置的布置所添加的所述至少一个附加分区。[0121][0122]虽然以特定于结构特征和或方法行为的语言描述了实现方式,但是应当理解的是,在随附的权利要求中所限定的实现方式不一定限于所描述的具体的特征或行为。相反,具体的特征和行为被公开作为实现所要求保护的主题的示例形式。

权利要求:1.一种用于对数据库重新分区以增加存储容量的由计算设备实现的方法,所述方法包括:利用第一分区函数来对数据库分区;以及通过以下方式来对所述数据库重新分区:创建位于重新分区时存在的分区中的数据条目的键成员资格的记录;添加与第二分区函数相关联的一个或多个新分区;定义用于后续数据库操作的复合分区函数,所述复合分区函数被配置为:对具有在所述键成员资格的记录中找到的键值的数据应用所述第一分区函数;或者对具有在所述键成员资格的记录中未找到的键值的数据应用所述第二分区函数。2.如权利要求1所述的方法,其中,所述重新分区被执行,使得位于所述重新分区时存在的分区中的数据条目保持其各自的位置。3.如权利要求1所述的方法,其中,所述键成员资格的记录被配置为记录与位于所述重新分区时存在的所述分区中的数据条目相关联的键值。4.如权利要求1所述的方法,其中,所述键成员资格的记录包括压缩的数据结构,所述压缩的数据结构被配置为识别与在所述重新分区时存在于所述数据库中的数据条目对应的键。5.如权利要求1所述的方法,其中,所述键成员资格的记录包括布隆过滤器。6.根据权利要求1所述的方法,其中,所述复合分区函数被配置为组合与连续的分区时期相关联的两个或更多个分区函数,每个分区时期对应于所述数据库的分区的特定布置。7.根据权利要求1所述的方法,其中,所述第一分区函数和所述第二分区函数被配置为散列函数,当被应用于数据请求的键值时,所述散列函数返回识别与所述键值对应的所述数据库的分区的数据。8.根据权利要求1所述的方法,其中,所述第一分区函数包括针对所述数据库的先前的重新分区建立以用于添加附加存储容量的在先的复合函数,被定义的所述复合分区函数被配置为对于具有在所述键成员资格的记录中找到的键值的数据应用所述在先的复合函数,而对于其他数据应用所述第二分区函数。9.根据权利要求1所述的方法,其中,所述组合分区函数被配置为将数据的分配偏置于在所述新分区上放置新数据条目偏置以平衡所述数据库的分区上的数据的分布。10.根据权利要求1所述的方法,其中,所述组合分区函数将新数据条目的至少一些键值误识别为在所述键成员资格的记录中被找到,使得与误识别的键值相关联的数据条目被分配给所述重新分区时存在的所述分区并且一致地定位在所述重新分区时存在的所述分区内。11.一种计算设备,包括:处理系统;以及一个或多个模块,当由所述处理系统执行时,所述一个或多个模块执行用于数据库的重新分区以增加存储容量的操作,所述操作包括:创建位于所述重新分区时存在的所述数据库的分区中的数据条目的键成员资格的记录,在重新分区时存在的所述数据库的分区与第一分区函数相关联;添加与第二分区函数相关联的新分区;以及定义用于处理后续的数据库请求的复合分区函数,其被配置为:对于包括在所述键成员资格的记录中找到的键值的数据请求应用所述第一分区函数;或者对于包括未在所述键成员资格的记录中找到的键值的数据请求应用所述第二分区函数,使得位于所述重新分区时存在的分区中的数据条目保持其在所述重新分区时存在的所述分区中的各自的位置。12.根据权利要求11所述的计算设备,其中,所述键成员资格的记录被配置为布隆过滤器,所述布隆过滤器具有针对与所述重新分区时存在的数据条目相关联的键而设置的位值,以用于经由所述布隆过滤器来指示所述键的成员资格。13.根据权利要求12所述的计算设备,其中:所述布隆过滤器根据能够配置的容限而产生假阳性错误,其使得在重新分区之后创建的数据条目中的至少一部分被误识别并且被使用所述第一分区函数来处理,所述假阳性错误是一致的,使得误识别的数据条目被使用所述第一分区函数而可靠地定位;以及所述布隆过滤器的紧凑程度取决于所述能够配置的容限。14.根据权利要求11所述的计算设备,其中,所述复合分区函数被配置为将所述第二分区函数与关联于多个先前的操作的多个单独分区函数组合以对所述数据库重新分区。15.根据权利要求11所述的计算设备,其中,所述第二分区函数被配置为在所述重新分区时存在的所述数据库的分区和所述新分区当中分配数据。

百度查询: 微软技术许可有限责任公司 复合分区函数

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。