用于使记录在分区之间移动的系统和方法

文档序号:6608600阅读:202来源:国知局
专利名称:用于使记录在分区之间移动的系统和方法
技术领域
本发明的实施例通常涉及具有分区数据的计算机系统,并且具体 地说涉及使数据记录在分区之间移动。
背景技术
基本上,计算机系统用于数据的存储、处理、以及分析。用于对 数据进行管理的 一个机制被称为数据库管理系统,其还被称为数据库系统或者简称为数据库。最通用的通常被称为关系数据库(RDB), 该关系数据库将数据组织在下述这样的表格中,所述表格具有用于表 示数据库中的各个条目或记录的行,以及用于定义将什么存储在每个 行、条目、或者记录中的列。每个表格在数据库之内具有唯一的名称, 并且每一列在特定表格之内具有唯一的名称。数据库还具有下述索引, 该索引是用于向数据库管理系统通知在给定所索引的列值的情况下某 一行在表格中的位置的数据结构,其与用于向读者通知在哪一页上出 现了给定单词的书索引相类似。通常在多个分区上对数据库中的数据进行划分或分布,其中在这 多个分区中使用 一个以上的物理数据空间来存储数据库表格,但是该 表格表现为用于诸如查询、插入、更新、以及删除这样的数据处理操 作的一个对象。分区具有两种基本类型横向和纵向。横向分区可将 表格分成不相交的行集合,该不相交的行集合物理地存储在不同数据 空间中并且对其进行单独存取。与此不同的是,纵向分区可将表格分 成不相交的列集合,该不相交的列集合物理地存储在不同数据空间中 并且对其进行单独存取。对数据进行分区可显著提高对数据进行存取 的请求的性能,但是分区还具有这样的可能性,即,如果不适当地进 行分区,则会使性能降低。
数据库管理员通常对数据进行分区以使它均匀分布在多个分区 上,以便提高对分区进行存取的请求的性能,从而使得没有一个分区 是该请求的瓶颈。令人遗憾的是,在对数据的数月或数年的操作(例 如更新、插入、以及删除)之后,分区可能变得越来越不均匀地分布, 这会导致请求对分区的不均匀分布。必然会出现性能降低,这是因为, 具有最多数据的分区接收最多请求,并且由此变为性能瓶颈。为了对分区数据的不均匀分布进行校正,管理员通常通过使数据 在现有分区之间移动,或者通过创建新分区并且将来自现有分区的数 据拷贝到新分区,来对数据进行重新分布。当前技术在对数据进行重 新分布的同时必须关闭数据库或中断对数据库的请求。由于通常所涉 及的数据量很大,因此重新分布可能会花费数小时、数天、或乃至数 星期,在此时间期间数据是不可用的。对于许多用户来说,这种数据 不可用性的持续时间是很恼人的或无法接受的。因此,需要一种用于使数据在分区上重新分布的改进技术。发明内容提供了一种方法、装置、系统、以及信号承载介质。在一个实施例中,将数据划分成被分成多个级别的分区。按照级别的创建时间,将级别排序成从最新级别至最老级别。在当前分区上接收请求,并且该请求包括用于对记录中的字段进行标识的关键字以及该关键字的值。确定该值是否存在于当前分区的字段中。如果确定为假,那么从当前分区向下一较老分区级别中的下一较老分区发送消息,其中该消 息命令下一较老分区将在所述字段中具有所述值的记录从下一较老分区移动到当前分区。如果确定为真,那么如果下一较新分区发送了该 请求,则将在所述字段中具有所述值的记录从当前分区移动到下一较 新分区,并且从当前分区中删除该记录。 一旦当前分区中的数据是空 的,则删除当前分区。在一个实施例中,使在所述字段中具有所述值 的记录从当前分区移动到最新分区。按照这种方式,在仍执行对分区 的请求的同时,可使记录从较老分区移动到较新分区。


在下文中结合附图对本发明的各种实施例进行描述图1描述了用于实现本发明实施例的示例性系统的高级方框图;图2描述了根据本发明实施例的存储器中的示例性分区的方框图;图3A描述了根据本发明实施例的示例性数据的方框图;图3B描述了根据本发明实施例的示例性的最新级别路由表的方框图;图3C描述了根据本发明实施例的示例性的次最新级别路由表的 方框图;图4描述了根据本发明实施例的用于第一检查器的示例性数据结 构的方框图;图5描述了根据本发明实施例的用于创建新分区的示例性处理的 流程图;图6描述了根据本发明实施例的用于客户机上的路由器的示例性 处理的流程图;图7描述了根据本发明实施例的用于分区上的路由器的示例性处 理的流程图;图8描述了根据本发明实施例的用于分区上的路由器的进一步示 例性处理的流程图;图9描述了根据本发明实施例的用于使值在分区之间移动的示例 性处理的流程图;图10描述了根据本发明实施例的用于移除分区的示例性处理的 流程图。然而,应该明白的是,附图仅仅对本发明的示例性实施例进行说 明,并且因此不应当被认为是对本发明范围的限制,对于本发明而言 应当承认其他等效的实施例。
具体实施方式
参考附图,其中在整个若干视图中相同的数字表示相同的部分,图1描述了根据本发明实施例的通过网络130与客户机计算机系统 132相连的服务器计算机系统100的高级方框示。在这里,仅仅 为了方便起见,使用了术语"客户机"和"服务器",并且在各个实 施例中,在一个环境中作为客户机进行操作的计算机可能在另 一环境 中作为服务器进行操作,并且反之亦然。在一个实施例中,计算机系 统100的硬件部件可以由可从纽约Armonk的国际商业机器公司中得 到的eServer iSeries计算机系统来实现。然而,本领域普通技术人员 应该明白的是,本发明的实施例中的机制和装置可同样应用于任何适 当的计算系统。计算机系统100的主要部件包括一个或多个处理器101、主存储 器102、终端接口 111、存储接口 112、 1/0(输入/输出)设备接口 113、 以及通信/网络接口 114,它们通过存储器总线103、 I/O总线104、以 及I/O总线接口单元105进行耦合以便进行部件间通信。计算机系统100包括一个或多个通用可编程中央处理单元 (CPU)101A、 101B、 101C、以及101D,它们在此被总称为处理器 101。在一个实施例中,计算机系统IOO包括典型的构成相对大系统的 多处理器;然而,在另一个实施例中,计算机系统IOO或者可以是单 CPU系统。每个处理器101执行存储在主存储器102中的指令,并且 可以包括一个或多个级别的板上高速緩存。主存储器102是用于对数据和程序进行存储或编码的随机存取半 导体存储器。在另一个实施例中,主存储器102表示计算机系统100 的整个虚拟内存,并且还可以包括与计算机系统IOO相耦合的或通过 网络130连接的其他计算机系统的虚拟内存。主存储器102在概念上 是单个单片式实体,但是,在其他实施例中,主存储器102是诸如由 高速緩存和其他存储器设备构成的分级结构这样的更复杂的结构。例 如,存储器可存在于多级的高速緩存中,并且可以进一步按照功能对 这些高速緩存进行划分,从而使得一个高速緩存保存指令,而另一个
高速緩存保存由一个处理器或多个处理器所使用的非指令数据。如在各种所谓的非一致存储器访问(NUMA)计算机体系结构中大家所熟 知的那样,可以进一步对存储器进行分配并且使其与不同CPU或不同 CPU集合相关联。存储器102包括分区156。虽然将分区156说明为包含在计算机 系统100中的存储器102之内,但是,在其他实施例中,它们中的一 些或所有可以在不同计算机系统上,并且可以例如通过网络130对其 进行远程存取。计算机系统100可以使用下述虚拟寻址机制,该虚拟 寻址机制可使计算机系统100中的程序操作起来如同它们仅对大的单 个存储设备实体进行存取而不是对多个较小存储设备实体进行存取那 样。因此,虽然将分区156说明为包含在主存储器102之内,但是分 区156的所有部分不一定都同时完全包含在相同存储设备之中。此夕卜, 虽然将分区156说明为单个实体,但是在其他实施例中可对它们中的 一些或者它们中的一些的某些部分进行单独地封装。分区156包括数据157、路由器158、路由表160、以及第一检查 器164。下面参考图2对分区156进行进一步描述。下面参考图3A对 数据157进行进一步描述。下面参考图3B和3C对路由表160进行进 一步描述。下面参考图4对第一检查器164进行进一步描述。在一个实施例中,路由器158包括可在处理器101上执行的指令 或者可由在处理器101上执行的指令所解释的语句,以执行在下面参 考图5、 6、 7、 8、 9、以及10所进一步描述的功能。在另一个实施例 中,路由器158可以用微码来实现。在另一个实施例中,路由器158 可以经由逻辑门用硬件和/或其他适当的硬件技术来实现。存储器总线103提供用于在处理器101、主存储器102、以及1/0 总线接口单元105之间传送数据的数据通信路径。I/O总线接口单元 105进一步与系统I/O总线104相耦合,以便将数据传送到各种I/O 单元并且对来自各种1/0单元的数据进行传送。I/O总线接口单元105 通过系统I/O总线104与也被称为I/O处理器(IOP)或I/O适配器 (IOA)的多个I/0接口单元111、 112、 113、以及114进行通信。系
统I/O总线104例如可以是工业标准PCI (外围部件接口 )总线,或 者可以是任何其他适当的总线技术。I/O接口单元支持与各种存储设备和I/O设备进行通信。例如, 终端接口单元111支持一个或多个用户终端121、 122、 123、以及124 的附连。存储接口单元112支持一个或多个直接存取存储设拟DASD ) 125、 126、以及127 (它们典型的是旋转的磁盘驱动器存储设备,但 是作为选择,它们也可以是包括被配置为就主机而言表现为单个大存 储设备的盘驱动器阵列的其他设备)的附连。根据需要,可将主存储 器102的内容存储到直接存取存储设备125、 126以及127中,或者可 从直接存取存储设备125、 126以及127中取回主存储器102的内容。I/O设备接口 113提供了与任何各种其他输入/输出设备或者其他 类型的设备的接口。在图1的示意性实施例中示出了打印机128和传 真机129这样的两个设备,但是在其他实施例中可以存在可能不同类 型的许多其他这种设备。网络接口 114提供了从计算机系统100至其 他数字设备和计算机系统的 一个或多个通信路径;这种路径可以包括 例如一个或多个网络130。虽然图1中将存储器总线103显示为用于在处理器101、主存储 器102、以及1/0总线接口 105当中提供直接通信路径的相对简单的 单总线结构,但是事实上存储器总线103可以包括多个不同总线或通 信路径,它们可以按照诸如分层的星形或网络配置中的点到点链路、 多个分层总线、平行和冗余的路径、或者任何其他适当类型的配置这 样的任何各种形式布置。此外,虽然I/O总线接口 105和I/O总线104 被显示为单个相应单元,但是计算机系统100实际上可以包括多个I/O 总线接口单元105和/或多个I/O总线104。虽然示出了使系统I/O总 线104与到达各种I/O设备的各种通信路径分离的多个I/O接口单元, 但是在其他实施例中1/0设备中的一些或全部直接与一个或多个系统 I/O总线相连。图1中所描述的计算机系统IOO具有多个附连的终端121、 122、 123以及124,它们可能诸如典型的为多用户"大型机"计算机系统。
典型地,在这种情况下,附连设备的实际数目大于图1中所示的数目, 但是本发明并不局限于任何特定大小的系统。作为选择,计算机系统100可以是典型地仅包括单个用户显示器和键盘输入的单用户系统,或者可以是几乎没有或者没有直接用户接口但是接收来自其他计算机 系统(客户机)的请求的服务器或类似设备。在其他实施例中,计算机系统IOO可以是被实现为个人计算机、便携式计算机、膝上型计算 机或笔记本计算机、PDA (个人数字助理)、平板计算机、袖珍计算 机、电话、传呼机、车辆、电话会议系统、仪器、或者任何其他适当 类型的电子设备。网络130可以是任何适当的网络或者网络的组合,并且可以支持 适用于对送至/来自计算机系统100的数据和/或代码进行通信的任何 适当协议。在各种实施例中,网络130可以代表直接或间接与计算机 系统IOO相连的存储设备或存储设备的组合。在一个实施例中,网络 130可以支持Infiniband。在另一个实施例中,网络130可以支持无线 通信。在另一个实施例中,网络130可以支持诸如电话线或电缆这样 的硬布线通信。在另一个实施例中,网络130可以支持以太网IEEE(电气及电子工程师协会)802.3x规范。在另一个实施例中,网络130 可以是互联网并且可以支持IP (网际协议)。在另一个实施例中,网络130可以是局域网(LAN)或广域网(WAN)。在另一个实施例中,网络130可以是热点服务提供者网络。 在另一个实施例中,网络130可以是企业内部网。在另一个实施例中, 网络130可以是GPRS (通用分组无线业务)网络。在另一个实施例 中,网络130可以是任何适当的蜂窝数据网络或基于小区的无线电网 络技术。在另一个实施例中,网络130可以是IEEE 802.11B无线网络。 在又一个实施例中,网络130可以是任何适当的网络或网络的组合。 虽然示出了一个网络130,但是在其他实施例中可以存在任何数目(包 括零)的(相同类型或不同类型的)网络。客户机计算机系统132可以包括计算机系统100的先前所述的硬 件和/或软件元件中的一些或者全部。客户机计算机系统132包括与存
储器102相连的处理器101。客户机计算机系统132中的存储器102 包括路由器158、路由表160、以及应用程序170。该应用程序170向 路由器158发送请求。路由器158使用路由表160将请求路由到分区 156。虽然将客户机计算机系统132说明为与计算机系统IOO相分离并 且通过网络130与计算机系统100相连,但是在另一个实施例中,客 户机计算机系统132可以是计算机系统100的一部分,例如,客户机 132可以被实现为存储在存储器102中的软件程序和数据。应该明白的是,图1用来在高级别上对计算机系统100、网络130、 以及客户机计算机系统132的代表性的主要部件进行描述,各个部件 可以具有比图1所示更高的复杂性,可以存在不同于图1所示部件的 部件,或者除了图1所示的部件之外还可以存在其它部件,并且这些 部件的数目、类型以及配置是可以改变的。在这里公开了这种外加复 杂性或外加变化的若干具体示例;但是应该明白的是,这些仅仅是示 例性的并且不 一 定仅仅是这种变化。可以用下述许多方式来实现图1中所说明的并且实现了本发明的 各种实施例的各种软件组件,所述方式包括使用在下文中被称为"计 算机程序"或简称为"程序"的各种计算机软件应用程序、例程、组 件、程序、对象、模块、数据结构等。计算机程序典型地包括下述一 个或多个指令,该指令在各个时间上驻留于计算机系统100中的各种 存储器和存储设备中,并且当由计算机系统100中的一个或多个处理 器101读取并执行时,该指令可使计算机系统100执行要执行构成本 发明实施例的各个方面的步骤或单元所必需的步骤。此外,虽然本发明的实施例已经在完全发挥功能的计算机系统的 环境中进行了描述并且在下文中还将在该环境中进行描述,但是可将 本发明的各个实施例分发作为各种形式的程序产品,并且不管用于实 际上执行这种分发的特定类型的信号承载介质如何,都可同样地应用 本发明。可以通过可操作地或者可通信地与处理器101连接(直接或 间接地)的各种有形信号承载介质,将用于对该实施例的功能进行定 义的程序递送至计算机系统100。信号承载介质可以包括但并不局限
于(1)永久存储在不可重写型存储介质上的信息,所述不可重写 型存储介质例如是与计算机系统附连的或位于其之内的只读存储器设 备,诸如可由CD-ROM驱动器读取的CD-ROM;(2 )存储在例如硬盘驱动器(例如,DASD 125、 126、或127 )、 CD-RW、或者盘之类的可重写型存储介质上的可变信息;或者(3)通过通信介质、诸如通过例如网络130之类的计算机或电 话网络而传送至计算机系统100的信息。当有形信号承栽介质编码有用于指导本发明功能的计算机可读 且可执行的指令或者携带了这种指令时,这种有形信号承栽介质代表 了本发明的实施例。本发明的实施例可作为与客户机公司、非营利组织、政府机构、 内部"组织机构"等的约定服务的一部分进行递送。这些实施例的方 面可以包括对计算机系统进行配置以执行并且部署用于实现在这里所 描述的一些或所有方法的软件系统和web服务。这些实施例的方面还 可以包括对客户机公司进行分析、对该分析做出响应而创建建议、产 生用于实现该建议的某些部分的软件、将该软件集成到现有处理和基 本设施之中、对在这里所描述的方法和系统的使用进行测量、将费用 分配给用户、以及向用户开出他们使用这些方法和系统的帐单。此外,基于下述应用来对下文中描述的各种程序进行标识,在本 发明的特定实施例中对于所述应用实现了各种程序。但是,仅仅为了 方1更起见,使用随后的任何特定程序专门用语,并且因此本发明的实 施例不应当局限于只是在通过这种专门用语所标识的和/或隐含的任 何特定应用中使用。图1中所说明的示意性环境不打算对本发明做出限制。实际上, 在不脱离本发明的范围的情况下可使用其他替换性硬件和/或软件环 境。图2描述了根据本发明实施例的存储器102中的示例性分区的方 框图。存储器102包括示例性分区156-1、 156-2、 156-3、 156-4、 156-5、 以及156-6,所有这些分区均是分区156 (图1)的示例性实例。将分 区划分成可以具有任何数目的分区级别205-1和205-2。将分区级别205-1命名为"N级别",这意味着它是最新分区级 别并且比诸如被命名为"N-1"级别的分区级别205-2 (这意味着它比 分区级别205-1 ( N级别)要老一个级别)这样的所有其他分区级别要 新。分区级别的崭新度(newness )是指创建包含在分区级别之内的分 区并且将新创建的分区的记录放入用于该分区级别的路由表160之中 的日期和/或时间。因此,按照级别的创建时间将分区级别205-1和 205-2排序成从最新级别205-1至最老级别、即图2的示例中的分区级 别205-2,但是在其他实施例中可存在更多的级别。分区级别(N级别)205-1包括分区Ml 156-1和分区M2-2。分 区Ml (N级别)156-1包括数据(N级别)157-1、路由器(N级别) 158-1、路由表(N级别)160-1、以及第一检查器(N级别)164-1。 数据(N级别)157-1是数据157 (图1)的示例。路由器(N级别) 158-1是路由器158 (图1)的示例。路由表(N级别)160-1是路由 表160 (图1)的示例。第一检查器(N级别)164-1是第一检查器164 (图1)的示例。分区M2 ( N级别)156-2包括数据(N级别)157-2、路由器(N 级别)158-2、路由表(N级别)160-2、以及第一检查器(N级别) 164-2。数据(N级别)157-2是数据157 (图1)的示例。路由器(N 级别)158-2是路由器158 (图1)的示例。路由表(N级别)160-2 是路由表160 (图1)的示例。第一检查器(N级别)164-2是第一检 查器164 (图1)的示例。分区级别(N-l级别)205-2包括分区A (N-l级别)156-3、分 区B ( N-l级别)156-4、分区M ( N-l级别)156-5、以及分区Z ( N-l 级别)156-6。分区M ( N-l级别)156-5包括数据(N-l级别)157-3、 路由器(N-l级别)158-3、路由表(N-l级别)160-3、以及第一检查 器(N-l级别)164-3。数据(N-l级别)157-3是数据157 (图1)的 示例。路由器(N-l级别)158-3是路由器158 (图1)的示例。路由 表(N-l级别)160-3是路由表160 (图1)的示例。第一检查器(N-l 级别)164-3是第一检查器164 (图1)的示例。分区Ml ( N级别)156-1和分区M2 ( N级别)156-2表示将要 替换分区M (N-l级别)156-5的新创建的分区。数据库管理员可以 请求路由器158做出该改变,这是因为,例如分区M(N-1级别)156-5 中的数据(N-l级别)157-3具有比其他分区(例如分区A ( N-l级别) 156-3或分区Z (N-l级别)156-6)更多的记录或者正在接收比其他 分区更多的请求。但是,不必使所有数据(N-l级别)157-3都立刻移 动到分区Ml (N级别)156-1中的数据(N级别)157-1以及移动到 分区M2 (N级别)中的数据(N级别)157-2。作为替代,如随后参 考图5、 6、 7、 8、 9以及10所进一步描述的那样,路由器158随着时 间的流逝使记录从数据(N-l级别)157-3移动到分区Ml (N级别)156- 1中的数据(N级别)157-1以及移动到分区M2 ( N级别)中的 数据(N级别)157-2,同时路由器158继续对来自客户机计算机系统 132的数据请求进行处理。最终,可以使曾经处于分区M 156-5中的 所有数据都移动到较新的分区Ml 156-1和156-2,在此之后可以删除 分区M 156-5。但是,在完成使所有数据从分区M 156-5移动到较新 分区级别的时间之前,曾经位于分区M 156-5中的数据分布在数据157- 3、数据157-1、数据157-2上。路由器158使用用于每个级别的各个路由表,按照从最新级别开 始并且朝着最老级别前进的分区级别的顺序,在分区级别中搜索所请 求的数据(通过共同对数据记录进行标识的关键字和值进行搜索)。 特定分区级别不包括分布在各个分区上或划分成各个分区的所有数 据,例如,分区级别205-2中的分区A (N-l级别)156-3不具有分区 级别205-1中的对应分区。图3A描述了根据本发明实施例的示例性数据157的方框图。数 据157包括可以是行或数据项的示例性记录300和301,其每一个都 包括列或字段302、 303、以及304。列302、 303、以及304中的一些 或全部都可用作关键字以对数据157进行存取,列或字段302、 303、
以及304将值存储在记录300和301中。例如,记录300包括列302 中的值"Marie"、列303中的值"Minnesota"、以及列304中的值"55901"。作为另一示例,记录301包括列302中的值"murie"、 列303中的值"Texas"、以及列304中的值"78758"。列302、 303、 以及304中的一些或全部都可用作关鍵字,以通过用于对相关联记录(例如记录300 )进行标识的关键字(例如名称字段)与值(例如"Marie")的指定组合来对数据157中的记录进行存取。图3B描述了根据本发明实施例的示例性的最新路由表(N级别) 160-1的方框图。路由表(N级别)160-1是路由表160 (图1)的示 例。路由器(N级别)158-1和路由器(N级别)158-2使用路由表(N 级别)160-1确定向其分配了由所接收到的请求所请求的数据的分区 156,以便将该请求路由到适当分区。路由表(N级别)160-1包括记录305、 310、 315、 320、以及325, 其每一个都包括关键字字段330、值字段335、以及分区标识符字段 340。关键字字段330对数据157中的列或字段进行标识。值字段335 对可能存在于由相应关键字330所标识的数据157中的字段或列中的 值或值范围进行标识。将关键字330的值335分配给或使其属于由它 们的相应分区标识符340所标识的它们的相应分区156。值335被分配给或属于由分区标识符340所标识的分区156,不 一定意味着关键字330的值335实际上存在于或实际上被存储在由 分区标识符340所标识的分区156的数据157中。作为替代,关键字 330的值335被分配给或属于由分区标识符340所标识的分区156,意 味着如果关键字330的值335存在于或存储在路由表(N级别)160-1 中所标识的分区156内的数据中,那么将关键字330的值335存储在 由其相应分区标识符340所标识的分区156中。例如,如果开始"MB" 的值存在于路由表(N级别)160-1中所标识的分区中,那么将开始"MB"的值存储在用于分区"Ml" 156-1 (记录315)的数据(N级 别)157-1中,而不是存储在记录305、 310、 320、或者325中所标识 的分区内的数据157中。 如在最新路由表(N级别)160-1中所说明的那样,新分区方案 特别包括分区Ml和M2 (记录315和320)。在记录315中所标识的 分区Ml包括在名称字段中具有从Ma开始至Mk的值的记录,并且 在记录320中所标识的分区M2包括在名称字段中具有从M1-Mz开始 的值的记录。值得注意的是,所有分区标识符340不必对处于N级别上的分区 进行标识。例如,如图2中所说明的,分区A156-3 (在记录305中所 标识的)、分区B 156- 4 (在记录305中所标识的)、以及分区Z 156-6 (记录325 )处于N-l级别上。但是,如图2中所说明的,分区Ml 156-1 (在记录315中所标识的)以及分区M2 156-2 (在记录320中所标识 的)处于N级别上。当前分区级别上的路由器通过经由与请求相关联 的关键字和值查找当前分区上的当前路由表中的分区标识符,来查找 适当分区以发送请求。所找到的分区标识符可以对处于当前路由器的 当前分区级别上或者与当前路由器不同的分区级别上的分区进行标 识。图3C描述了根据本发明实施例的示例性N-l级别路由表160-3 的方框图。路由表(N-l级别)160-3是路由表160 (图1)的示例。 路由器(N-l级别)158-3使用路由表(N-l级别)160-3确定向其分 配了由所接收到的请求所请求的数据的分区,以便将该请求路由到适 当分区。路由表160-3包括记录350、 355、 360、以及365,其每一个 都包括关键字字段370、值字段375、以及分区标识符字段380。关键字字段370对数据157中的列或字段进行标识。值字段375 对可能存在于由相应关键字370所标识的数据157中的字段或列中的 值或值范围进行标识。将关键字370的值335分配给或使其属于由它 们的相应分区标识符380所标识的它们的相应分区156。图4描述了根据本发明实施例的第一检查器164的示例性数据结 构。第一检查器164包括删除数据关键字列表405和移动中 (in-moving)数据关键.字列表410。删除数据关键字列表405表示已从分区156的数据157中删除掉
的记录。删除数据关键字列表405包括示例性记录420 、 425 、以及430 , 其每一个都包括关键字字段435、值字段440、以及分区标识符字段 445。已从由分区标识符445所标识的分区156中的数据157中删除了 关键字435的值字段440。移动中数据关键字列表410包括示例性记录460和465,其每一 个都包括关键字字段470、值字段475、以及分区标识符字段480。由 关键字字段470和值字段475所表示的数据157中的记录处于正使其 移出由分区标识符字段480所标识的分区156这样的处理中。图5描述了根据本发明实施例的用于在服务器计算机系统100上 的路由器(N-l) 158-3的示例性处理的流程图。控制在块500开始。 此后控制继续至块505,在块505中,分区(N-l级别)156-5上的路 由器(N-l级别)158-3根据较老分区(N-l级别)156-5创建新分区 (N级别)156-1和156-2。此后控制继续至块510,在块510中,路 由器(N-l) 158-3创建新路由器(N级别)158-1和158-2。此后控制继续至块515,在块515中,路由器(N级别)158-1 创建新路由表(N级别)160-1,并且路由器(N级别)158-2创建新 路由表(N级别)160-2。路由表(N级别)160-1和160-2可以是相 同的路由表,并且路由器158-1和158-2可以是相同的路由器。此后 控制继续至块520,在块520中,路由器(N级别)158-1创建新的第 一检查器(N级别)164-1并且路由器(N级别)158-2创建新的第一 检查器(N级别)164-2。在创建其相应分区156-1和156-2时,不一 定创建数据(N级别)157-1和157-2。此后控制继续至块599,在块 599中,图5中的逻辑返回。图6描述了根据本发明实施例的用于在客户机计算机系统132上 的路由器158的示例性处理的流程图。控制在块600开始。此后控制 继续至块605,在块605中,客户机计算机系统132上的应用程序170 向客户机计算机系统132上的路由器158提出请求。该请求包括关键 字和该关键字的值。该关键字对数据157中的字段或列进行标识。该 值是位于所标识的字段、记录、或者列之内的数据值。关键字和关键字的值一起对数据157之内的记录、行、或者数据项进行标识,并且 该记录、行、或者数据项可以包括该值以及其他数据。此后控制继续至块610,在块610中,客户机计算机系统132上 的路由器158根据与该请求一起接收到的关键字和值,从最新路由表 (N级别)中确定出最新分区(N级别)。例如,如果所接收到的关 键字是"名称",并且所接收到的值是"Marie",那么客户机计算 机系统132上的路由器158通过查找关键字字段330中的名称关键字 以及值335的范围"MA-MK"之内的值"Marie",来确定记录315 中的最新分区Ml 340。此后控制继续至块615,在块615中,客户机计算机系统132上 的路由器158向所确定的分区(N级别)发送请求。此后控制继续至 块620,在块620中,如随后参考图7所进一步描述的那样,分区(N 级别)对该请求进行处理。此后控制继续至块625,在块625中,客 户机计算机系统132上的路由器158接收来自分区(N级别)的响应。 此后控制继续至块630,在块630中,客户机计算机系统132上的路 由器158向应用程序170发送所述响应。此后控制继续至块699,在 块699中,图6中的逻辑返回。图7和8描述了根据本发明实施例的用于当前分区(N-I级别) 156上的当前路由器(N-I级别)158的示例性处理的流程图。如在这 里所使用的,"N-I"是指当前分区级别,其是指与当前正在执行所说 明的逻辑的路由器158相关联的分区级别。用与最新分区级别"N" 的差值来表示当前分区级别"N-r 。因此,如果I-O,那么当前分 区级别是最新创建的分区级别205-1;如果1 = 1,那么当前分区级别 是次最新创建的分区级别205-2;等等。此外,分区级别"N-I-1"是 指比当前分区级别要老一个级别的分区级别,而分区级别"N-I+1"是 指比当前分区级别要新一个级别的分区级别。作为特例,如果1 = 0, 那么N-I+l是指客户机计算机系统132,这是因为不存在比最新分区 级别更新的分区级别,并且客户机计算机系统132向处于最新分区级 别上的分区发送请求并且接收来自其的响应。
控制在块700开始。此后控制继续至块705,在块705中,当前 分区(N-I级别)156上的当前路由器(N-I级别)158接收来自较新 分区(N-I+l级别)或者在I = 0的情况下接收来自客户机计算机系统 132的请求、关键字、以及该关键字的值。此后控制继续至块710,在 块710中,当前分区(N-I级别)156上的当前路由器(N-I级别)158 确定该值是否存在于由当前分区(N-I级别)156的当前数据(N-I级 别)157中的关键字所标识的字段中。如果块710的确定是真,那么该值存在于由当前分区(N-I级别) 156的当前数据(N-I级别)157中的关键字所标识的字段中,因此控 制继续至图8中的块825,在块825中,当前分区(N-I级别)156上 的当前路由器(N-I级别)158确定该请求是否是删除请求。如果块 825的确定是真,那么该请求是删除请求,因此控制继续至块830,在 块830中,当前分区(N-I级别)156上的当前路由器(N-I级别)158 将所述关键字和值添加到当前分区(N-I级别)156上的当前第一检查 器(N-I级别)164中的当前删除数据关键字列表(N-I级别)405上。 此后控制继续至块835,在块835中,如随后参考图9所进一步描述 的那样,当前分区(N-I级别)156上的当前路由器(N-I级别)158 可选地执行以下处理之一 1)使由该请求中的关键字和值所标识的记 录从当前分区(N-I级别)156上的当前数据(N-I级别)157移动到 下一较新分区级别(N-I+l级别)的下一较新数据(N-I+l级别)157; 或者2)启动数据移动器线程,以使由该请求中的关键字和值所标识 的记录从当前分区(N-I级别)156的当前数据(N-I级别)157移动 到最新分区(N) 156的最新数据(N)。使记录移动的处理包括在 将记录发送到较新分区(N-I+l级别)之后,或者在将记录发送到最 新分区(N)之后,从当前数据(N-I级别)中删除记录。如果I-O, 则使记录移动到较新分区(N ) 156是指将响应中的数据发送到客户机 132。此后控制继续至块899,在块899中,图8中的逻辑返回。如果块825的确定是假,那么该请求不是删除请求,因此控制继 续至先前所述的块835。200710097027.7说明书第17/21页如果块710的确定是假,那么该值不存在于由当前分区(N-I级 别)156的当前数据(N-I级别)157中的关键字所标识的字段中,因 此控制继续至块715,在块715中,当前分区(N-I级别)156上的当 前路由器(N-I级别)158确定所述关键字和值是否存在于当前分区 (N-I级别)156的当前第一检查器(N-I级别)164的当前删除数据 关键字列表(N-I级别)405中。如果块715的确定是真,那么所述关 键字和值存在于当前删除数据关键字列表(N-I级别)405中,并且已 从当前分区(N-I级别)156的当前数据(N-I级别)157中删除了关 键字值,因此控制继续至先前所述的图8中的块825。如果块715的确定是假,那么所述关键字和值不存在于删除关键 字列表(N-I级别)405中,并且没有从当前分区(N-I级别)156的 当前数据(N-I级别)157中删除关键字值,因此控制继续至块720, 在块720中,当前分区(N-I级别)156上的当前路由器(N-I级别) 158确定所述关键字和值是否存在于当前分区(N-I级别)156中的当 前移动中关键字列表(N-I级别)410中。如果块720确定是真,那么 所述关键字和值存在于当前分区(N-I级别)156中的当前移动中关键 字列表(N-I级别)410中,并且由该关键字值所标识的记录处于正使 其移动到当前分区(N-I级别)156的数据(N-I级别)157中这样的 处理中,因此控制继续至块725,在块725中,当前分区(N-I级别) 156上的当前路由器(N-I级别)158等待完成将由所述关键字和值所 标识的记录移动到当前分区(N-I级别)156的当前数据(N-I级别) 157中。 一旦移动完成了,此后控制就继续至先前所述的块825。如果块720的确定是假,那么所述关键字和值不存在于当前分区 (N-I级别)156上的当前移动中关键字列表(N-I级别)410中,并 且由该关键字值所标识的记录不处于使其移动到当前分区(N-I级别) 156的数据(N-I级别)157中这样的处理中,因此控制继续至图8的 块805,在块805中,当前分区(N-I级别)156上的当前路由器(N-I 级别)158将所请求的关键字、值、以及当前分区(N-I级别)156的 标识符添加到当前分区(N-I级别)156上的当前移动中列表(N-I级
别)410上。此后控制继续至块810,在块810中,当前分区(N-I级 别)156上的当前路由器(N-I级别)158将一条消息与该请求一起发 送到下一较老分区级别(N-I-l级别)上的下一较老路由器(N-I-l级 别)。该消息命令下一较老分区级别(N-I-l级别)上的下一较老路由 器(N-I-1级别)将由该请求中的关键字和值所标识的记录通过所说明 的对图7中的逻辑的递归调用而从下一较老分区(N-I-l级别)156中 的下一较老数据(N-I-l级别)157移动到当前分区(N-I级别)156 中的当前数据(N-I级别)157。递归调用仅是为了方便说明起见而使 用的,并且在另一个实施例中各个分区级别205-L和205-2所使用的 路由器158可以是彼此不递归调用的独立实体。此后控制继续至块815,在块815中,如随后参考图9所进一步 描述的那样,当前分区(N-I级别)156上的当前路由器(N-I级别) 158启动数据移动器线程,以使由该请求中的关键字和值所标识的记 录从当前分区(N-I级别)156移动到最新分区级别中的最新分区(N) 156。此后控制继续至块820,在块820中,当前路由器(N-I级别) 158等待由关键字值所标识的记录到达当前分区(N-I级别)156上的 当前数据(N-I级别)157。响应于记录到达,当前路由器(N-I级别) 158从移动中列表410中除去(删除)所述关键字、值、以及当前分 区(N-I级别)156。此后控制继续至先前所描述的块825。图9描述了根据本发明实施例的用于使值在分区之间移动的示例 性处理的流程图。控制在块900开始。此后控制继续至块905,在块 905中,路由器(N-I级别)156确定当前分区(N-I级别)156或最 新分区(N)156是否为忙。如果块卯5的确定是真,那么当前分区(N-I 级别)156或最新分区(N) 156中的至少一个为忙,这意味着当前路 由器(N-I级别)158或路由器(N)忙于处理请求或移动数据,因此 控制继续至块945,在块945中,路由器等待某一个时段。此后控制 回到先前所述的块905。如果块905的确定是假,那么当前分区(N-I级别)156和最新 分区(N) 156这两者都不忙,所以控制继续至块910,在块910中,
当前分区(N-I级别)156上的当前路由器(N-I级别)158查找具有 与该请求中的关键字和值相匹配的关键字和值的当前分区(N-I级别) 156中的所有记录、行、或者记录。此后控制继续至块915,在块915 中,当前分区(N-I级别)156上的当前路由器(N-I级别)158选择 具有存在于当前分区(N-I级别)156中的关键字值的记录的一部分。 此后控制继续至块920,在块920中,当前分区(N-I级别)156上的 当前路由器(N-I级别)158将与关键字值相关联的记录的所选部分发 送到最新分区(N) 156的移动中关键字列表410,此后控制继续至块 925,在块925中,当前路由器(N-I级别)158使与该关键字值相关 联的所选记录从当前分区(N-I级别)156中的当前数据(N-I级别) 157移动到最新分区(N) 156,并且从当前分区(N-I级别)156中的 当前数据(N-I级别)157中删除所选记录。此后控制继续至块930, 在块930中,当前分区(N-I级别)156上的当前路由器(N-I级另iJ) 158从最新分区(N) 156的移动中关键字列表410除去(删除)具有 关键字值的所选部分。此后控制继续至块935,在块935中,当前分区(N-I级别)156 上的当前路由器(N-I级别)158确定当前分区(N-I级别)156中的 当前数据(N-I级别)157是否为空。如果块935的确定是真,那么当 前分区(N-I级别)156中的当前数据(N-I级别)157为空,因此控 制继续至块940,在块940中,如随后参考图10所进一步描述的那样, 当前分区(N-I级别)156上的当前路由器(N-I级别)158除去(删 除)当前分区(N-I级别)156和当前路由表(N-I级别)160。此后 控制继续至块999,在块999中图9中的逻辑返回。如果块935的确定是假,那么当前分区(N-I级别)156中的当 前数据(N-I级别)157不为空,因此控制继续至块899,在块899中 图9中的逻辑返回。本发明的实施例支持根据需要由客户机开始的在分区之间的数 据移动以及由服务器开始的在分区之间的数据移动。按照这种方式,可使数据从较老分区移动到较新分区,同时仍执行发往分区的请求。
客户机开始的在分区之间的数据移动具有较高优先级,以确保客户机 服务并且确保在对数据进行重新分区期间不会妨碍性能。服务器开始的数据移动通过使用计算机的空闲周期,例如通过如先前针对块905 所描述的那样等待直到这两个分区都不忙,而使重新分区处理加速。
图IO描述了根据本发明实施例的用于除去当前分区(N-I级别) 156的示例性处理的流程图。控制在块1000开始。此后控制继续至块 1005,在块1005中,当前路由器(N-I级别)158确定当前分区(N-I 级别)156中的当前数据(N-I级别)157是否为空。如果块1005的 确定是真,那么当前分区(N-I级别)156中的当前数据(N-I级别) 157为空(不包含记录),因此控制继续至块1010,在块1010中,当 前路由器(N-I级别)158从当前分区(N-I级别)156中除去(删除) 路由表(N-I级别)。此后控制继续至块1015,在块1015中,当前路 由器(N-I级别)158从存储器102中除去(删除)当前分区(N-I级 别)156。此后控制继续至块1099,在块1099中图10中的逻辑返回。
如果块1005的确定是假,那么当前分区(N-I级别)156中的当 前数据(N-I级别)157不为空(仍包括至少一个记录),因此控制继 续至块1020,在块1020中,当前路由器(N-I级别)158等待某一个 时段。此后控制回到先前所述的块1005。
在本发明的示意性实施例的先前详细说明中,参考了构成其一部 分的附图(其中相同的数字表示相同元件),其中附图是通过说明在 其中可实施本发明的特定示意性实施例而给出的。对这些实施例进行 了足够详细地描述,以使本领域普通技术人员可实施本发明,但是也 可^f吏用其他实施例,并且在不背离本发明的范围的情况下可做出逻辑 上的、机械的、电的、以及其他改变。在先前的描述中,对许多具有 细节进行了描述以提供对本发明实施例的彻底了解。但是,无需这些 细节也可实施本发明。在其他情况下,为了不使本发明难以理解,没 有详细地示出众所周知的电路、结构、以及技术。在该说明书内使用的词语"实施例"的不同情况未必是指相同实 施例,但是它们可以指相同实施例。在这里所说明的或所描述的任何
数据和数据结构仅仅是示例性的,并且在其他实施例中,可使用不同 量的数据、不同数据类型、不同字段、不同的字段数目和类型、不同 字段名称、不同的行数目和类型、不同记录、不同条目、或者不同的 数据组织结构。此外,可将任何数据与逻辑进行组合,从而使得分离 的数据结构不是必需的。因此,先前的详细说明不应构成限制,并且 本发明的范围仅由所附权利要求书来定义。
权利要求
1、一种方法,包括在当前分区上接收请求,其中当前分区是多个分区中的一个,其中数据被分成多个分区,其中多个分区被划分成多个级别,其中当前级别包括当前分区,其中按照级别的创建时间将所述级别排序成从最新级别至最老级别,并且其中该请求包括关键字和该关键字的值,其中该关键字对数据中的记录中的字段进行标识;确定所述值是否存在于当前分区的字段中;以及如果所述确定为假,那么从当前分区向下一较老分区级别中的下一较老分区发送消息,其中该消息命令下一较老分区将在所述字段中具有所述值的记录从下一较老分区移动到当前分区。
2、 根据权利要求l的方法,进一步包括 如果所述确定为真,那么如果下一较新分区发送了该请求,则使在所述字段中具有所述值的记录从当前分区移动到下一较新分区,并 且从当前分区中删除该记录。
3、 根据权利要求l的方法,其中,所述确定进一步包括 确定是否已从当前分区中删除了该关键字的值。
4、 根据权利要求l的方法,其中,所述确定进一步包括 确定该记录是否已从下一较老分区移动到当前分区。
5、 根据权利要求l的方法,进一步包括 将在所述字段中具有所述值的记录从当前分区移动到最新分区;并且从当前分区中删除该记录。
6、 根据权利要求5的方法,其中,所述移动进一步包括 等待移动记录直至当前分区和最新分区不忙为止。
7、 根据权利要求5的方法,进一步包括 如果当前分区中的数据为空,那么删除当前分区。
8、 一种用于对计算机进行配置的方法,其中该方法包括 对计算机进行配置以在当前分区上接收请求,其中当前分区是多 个分区中的一个,其中数据被分成多个分区,其中多个分区被划分成 多个级别,其中当前级别包括当前分区,其中按照级别的创建时间将 所述级别排序成从最新级别至最老级别,并且其中该请求包括关键字和该关键字的值,其中该关键字对数据中的记录中的字段进行标识; 对计算机进行配置以确定所述值是否存在于当前分区的字段中; 对计算机进行配置以便如果该确定为假,那么从当前分区向下一较老分区级别中的下一较老分区发送消息,其中该消息命令下一较老分区将在所述字段中具有所述值的记录从下一较老分区移动到当前分区;以及对计算机进行配置以便如果该确定为真,那么如果下一较新分区 发送了该请求,则将在所述字段中具有所述值的记录从当前分区移动 到下一较新分区,并且从当前分区中删除该记录。
9、 根据权利要求8的方法,其中,对计算机进行配置以执行确 定进一步包括对计算机进行配置以确定是否已从当前分区中删除了该关键字的值。
10、 根据权利要求8的方法,其中,对计算机进行配置以执行确 定进一步包括对计算机进行配置以确定该记录是否已从下一较老分区移动到 当前分区。
11、 根据权利要求8的方法,进一步包括 对计算机进行配置以使在所述字段中具有所述值的记录从当前分区移动到最新分区;并且对计算机进行配置以从当前分区中删除该记录。
12、 根据权利要求8的方法,其中,对计算机进行配置以执行移 动进一步包括对计算机进行配置以等待移动记录直至当前分区和最新分区不 忙为止。
13、 根据权利要求8的方法,进一步包括 对计算机进行配置以便如果当前分区中的数据为空,那么删除当前分区。
14、 根据权利要求8的方法,其中,所述移动进一步包括 对计算机进行配置以查找当前分区中的多个记录,其中关键字对多个记录中的字段进行标识;对计算机进行配置以选择多个记录中的一部分;以及对计算机进行配置以使多个记录的所述部分从当前分区移动到最新分区。
15、 一种用于使记录在分区之间移动的系统,该系统包括用于执 行先前方法权利要求中的任何一个方法的装置。
全文摘要
在一个实施例中,将数据分成被划分为多个级别的分区。按照级别的创建时间对级别进行排序。在当前分区上接收请求,该请求包括用于对记录中的字段进行标识的关键字以及该关键字的值。确定该值是否存在于当前分区的字段中。如果确定为假,那么从当前分区向下一较老分区发送消息,并且该消息命令下一较老分区将具有该值的记录从下一较老分区移动到当前分区。如果确定为真,那么如果下一较新分区发送了该请求,则使在所述字段中具有所述值的记录从当前分区移动到下一较新分区,并且从当前分区中删除该记录。
文档编号G06F17/30GK101131697SQ20071009702
公开日2008年2月27日 申请日期2007年4月17日 优先权日2006年6月14日
发明者沈金梅, 浩 王 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1