专利名称:利用虚拟分区的数据库重新分布方法和系统的制作方法
技术领域:
本发明总地涉及数据处理,更具体地涉及分区数据库(partitioned database)的重新分布(redistribution)。
背景技术:
在存储大量数据的计算环境中,通常通过关系数据库管理系统(RDBMQ管理数据,RDBMS可以用于对一个或多个数据库进行实例化以便存储、访问和操纵数据。每个数据库包括一个或多个表格空间,表格空间进而根据关系数据模型存储表格数据。如表格组织所暗示的,逻辑上按行和列排列表格数据,每个表格行具有相关联的行密钥(row key)。为了提供改进的可管理性、性能和/或可用性,通常将关系数据库划分成多个逻辑或物理分区(下文简称为“分区(partition)”,除非需要更确切含义),每个分区具有它自己的数据、索引、配置文件、和事务处理日志。可以将任何给定表格的表格数据定位在一个或多个分区中,表格数据驻留在其上的分区通常由散列函数确定。因为数据被跨数据库分区分布,所以可以级联地利用可能位于多个计算机上的多个处理器的能力来存储、检索、 处理和管理数据库中的数据。随着所存储数据的量不断增加,诸如在线事务处理(OLTP)系统、数据仓储(data warehousing)企业、金融和保险公司等的管理大数据量的企业经常需要扩大它们的数据存储和处理容量。例如,企业可以将一个或多个附加服务器以及它们的相关联的存储节点添加到企业的现有信息技术(IT)基础设施中,以便在避免查询响应时间恶化的同时管理增加的数据量。为了利用附加服务器,RDBMS必须重新分布和重新组织一个或多个数据库实例,使得数据库实例不仅驻留在现有服务器的存储节点上,而且驻留在新安装服务器的存储节点上。RDBMS根据现有技术重新分布和重新组织数据库的传统过程描绘在图1中。重新分布和重新组织数据库的传统过程从框100开始,此后转到框102,框102描绘了 RDBMS做出要重新分布的整个数据库的备份。取决于数据库的大小,做出数据库的备份可能消耗相当长的处理时间(例如,数天或数星期)。然后该过程进入包括框104-118的迭代循环,其中跨现有和新存储节点逐行重新分布数据库。重新分布从框104开始,框104 描绘了 RDBMS读取要处理的下一个数据库行的密钥值。然后,RDBMS重新散列数据库行的密钥值,以确定重新分布之后数据库行将驻留在其上的目标分区号(框106)。在框110中, RDBMS确定目标分区号是否与现有分区号相同,即意味着数据库行将不被移动。如果目标分区号与现有分区号匹配,则该过程转到如下所述的框118。但是,如果目标分区号与现有分区号不匹配,则该过程转到框112-116。在框112-116中,RDBMS从先有(preexisting)存储节点读取整个数据库行,将该数据库行插入新添加的存储节点上的新分区中,然后从先有存储节点中删除该数据库行。 此后,在框118中,RDBMS确定数据库的所有行是否都已被处理。如果不是,则该过程返回到已经描述过的框104。但是,如果RDBMS在框118中确定数据库的所有行都被处理,则该过程转到框120。应该理解,经由框104-118中所描绘的重新分布将所选数据库行从先有存储节点移动到新安装存储节点使先有存储节点被稀疏地填充(sparsely populated),因此未得到有效利用。因此,在框120中,RDBMS重新组织先有存储节点中的数据库行,使数据库返回到紧凑存储组织。如果成功地完成重新组织,那么RDBMS在框122中做出整个数据库的第二个备份。另外,如框1 所描绘,RDBMS执行实用程序来收集有关数据库的统计,以便重新表征表格空间、索引和分区,并将这些统计记录在目录中。最后,在框126中,RDBMS将跨新添加的存储节点的数据库重新组织通知给任何分区知晓(partition-aware)应用程序(例如,Microsoft Internet InformationServices (IIS)) 此后,在框 130 中结束重新分布和重新组织数据库的传统过程。图2A-2C描绘了根据现有技术的在新添加的数据存储节点上数据库的重新分布和重新组织。具体地说,图2A描绘了包括填充着数据库的四个数据库分区20h-202d的数据存储系统200。因为数据库的大小接近当前安装的数据存储节点的容量,所以数据仓储企业可以将一个或多个附加存储节点添加到数据存储系统200中,以便支持附加数据库分区。在图2B中所描绘的例子中,数据仓储企业将一个或多个附加存储节点添加到数据存储系统200中,以便支持四个附加数据库分区2(^e-202h。图2B进一步例示了在图1的框104-118中所描绘的数据库的传统逐行重新分布之后,移动到新数据库分区20&-202h 的数据库部分变得高度紧凑,但是留在原数据库分区20加-202(1中的数据库部分被稀疏地填充,因此数据存储系统200的存储容量的利用率很差。于是,如上面参考图1的框120所讨论,RDBMS也必须重新组织驻留在数据库分区20加-202(1上的部分,以获得图2C中所示的紧凑、分布良好的数据库。
发明内容
在一些实施例中,将分区数据库存储在至少逻辑或物理第一数据存储节点上的多个逻辑或物理分区中,并且将多个逻辑分区当中的第一分区的子集配置成虚拟分区。接收指示分配第二物理数据存储节点来存储分区数据库的输入。在第二数据存储节点上配置第二分区。响应于该输入,通过将第一分区上的虚拟分区内的数据移动到第二分区,在第一和第二数据存储节点上重新分布分区数据库。
图1是根据现有技术重新分布和重新组织数据库的传统过程的高级流程图;图2A-2C描绘了根据现有技术的在新数据存储节点上的数据库的传统重新分布和重新组织;图3例示了根据一个实施例的示范性数据处理环境;图4示出了图3的数据处理企业的示范性数据存储节点;图5例示了根据一个实施例的分区配置数据结构的示范性实施例;图6描绘了根据一个实施例的分区映射的示范性实施例;图7是重新分布数据库的方法的第一示范性实施例的高级逻辑流程图8例示了根据图7中描绘的第一示范性方法的数据库的示范性重新分布;图9是重新分布数据库的方法的第二示范性实施例的高级逻辑流程图;以及图10描绘了根据图9中所示的第二示范性方法的数据库的示范性重新分布。
具体实施例方式现在参考附图,尤其参考图3,图3例示了根据一个实施例的示范性数据处理环境 300的高级框图。如图所示,示范性数据处理环境300包括可以被操作或代表诸如企业、政府机构、非营利协会、教育机构等管理大量数据的机构的数据处理企业310。为了进行通信, 数据处理企业310与诸如有线或无线局域网或广域网、蜂窝式电话网络和/或公共交换电话网络(PSTN)的一个或多个电路交换或分组交换通信网络304耦合。因此,数据处理企业 310可以经由通信网络304与设备30加-302(1(例如,服务器计算机系统、个人计算机系统、 便携式计算机系统、移动电话、智能电话、陆线电话)通信。设备302a-302d与数据处理系统110之间的通信可以包括经由例如PSTN或互连网协议语音(VoIP)连接的语音通信、和/或经由例如即时消息发送、简单邮件传输协议 (SMTP)或超文本传输协议(HTTP)的数据通信。例如,数据处理企业310与设备30加-302(1 之间的通信可以包括将数据请求从设备302a-302d发送到数据处理企业310和将响应数据 (例如,格式化成包括这种数据的程序代码、图像、图形、文本、音频、视频、和/或文件)从数据处理企业310发送到设备30加-302(1。仍然参照图3,数据处理企业310可以包括诸如服务器31h-312n的耦合成通过通信架构314通信的一个或多个物理计算机系统,通信架构314例如可以包括像内联网、虚拟专用网(VPN)或套接字连接那样的电缆和/或网络连接。在例示的示范性实施例中,服务器31 包括允许服务器31 经由通信网络304和通信架构314通信的一个或多个网络接口 316。服务器31 另外还包括处理数据和程序代码,以便例如管理、访问和操纵组织在一个或多个数据库中的数据的一个或多个处理器320。服务器31 还包括诸如端口、显示器、和附连设备等的接收输入和提供服务器31 执行的处理的输出的输入/输出(I/O)设备322。最后,服务器31 还包括数据存储体330,数据存储体330可以包括一个或多个易失性或非易失性存储设备,包括存储器、固态驱动器、光盘或磁盘驱动器、磁带驱动器等。在描绘的实施例中,数据存储体330存储管理服务器31 的硬件资源以及向在服务器31 上执行的其它软件提供常见服务的操作系统(OS) 332。例如,OS 332可以利用 AIX 、Linux 、Android 或Windows 操作系统之一来实现。数据存储体 330还包括例如可从纽约阿蒙克市IBM公司购买到的DB2 关系数据库管理系统(RDBMS) 的管理、访问和操纵例如示范性数据库350的一个或多个数据库内的数据的数据库管理器 340。在一些实施例中,可以将数据库管理器340与OS 332或另一个软件程序整合在一起。 除了数据库350之外,数据库管理器340还维护定义数据库350的各种逻辑分区以及将分区映射到数据处理企业310的物理存储资源的一个或多个分区配置数据结构352。如下面所进一步讨论,数据库管理器340可选地还可以维护将数据库350的虚拟分区映射到数据库350的逻辑分区的分区映射(partition map)3M。在各种实施例中,数据库管理器340和/或OS 332可以包括支持服务器31 经由通信架构314和通信网络304与其它服务器312和设备302a-302d的通信的代码。如果在一些实施例中未将适当的通信能力整合在OS 332和/或数据库管理器340内,数据存储体330可以另外包括诸如web服务器(例如,ApacheUIS等)、交互式语音应答(IVR)和/ 或其它程序代码的使服务器31 能够经由通信架构314和通信网络304与其它服务器312 和设备302a-302d通信的通信代码342。尤其,如果得到实现,则通信代码342支持将数据库查询传送给数据库管理器340以及将响应数据从数据库管理器340传送给请求者。应该理解,数据存储体330的内容在一些实施例中可以定域(localize)在服务器 312a上,而在其它实施例中将跨多个服务器31h-312n的数据存储体330分布。另外,描绘在服务器31 的数据存储体330中的内容可选地可以部分或全部驻留在数据处理企业 310的存储区域网络(SAN) 360上。如图所示,SAN 360包括接收存储请求和为存储请求服务的交换机/控制器(SW/C)362和多个数据存储节点370a-370k,每个数据存储节点可以包括一个或多个物理非易失性存储器驱动器、硬盘驱动器、光存储驱动器、磁带驱动器等。在一些实施例中,数据存储节点370a-370k可以是呈现这种物理存储资源的虚拟化抽象的逻辑实体。回顾前面的描述可以理解,实现数据处理企业310的形式可以根据一种或多种因素,例如,组织的类型、数据库350的大小、可以查询数据库350的设备30加-302(1的数目等随实施例而变。可以包括例如一个或多个手持机、笔记本、台式机或服务器计算机系统的所有这些实现方式被构想为如所附权利要求书所述的本发明的实施例。图4描绘了图3的数据处理企业310内的数据存储节点400 (例如,SAN 360的数据存储节点370或服务器312的数据存储体330内的数据存储节点)的更详细视图。在所描绘的例子中,数据存储节点400寄宿着八个逻辑或物理分区,下文假设它们是分别编号为LP0-LP7的逻辑分区。逻辑分区LP0-LP7存储包括分别编号为B0-B15的十六个数据块的数据库350。在RDBMS中,每个数据块B0-B15可以对应于具有共同行密钥散列的一个或多个数据库行。根据本公开,数据库管理器340将数据块B0-B15的一个子集指定给虚拟分区。例如,数据库管理器340可以将数据块B8-B15中的每一个指定给编号为VP8-VP15的八个虚拟分区中的相应一个虚拟分区。在各种情形下,每个虚拟分区可以包括优选地都驻留在公共逻辑分区上的一个或多个数据块。如下面参考图7-10所进一步讨论,数据库管理器340 可以通过参考虚拟分区有效地重新分布数据库350。现在参考图5,图5例示了根据一个实施例的分区配置数据结构352的示范性实施例。在所描绘的实施例中,例如可以在一个或多个数据库配置文件中实现的分区配置数据结构352包括定义数据库350的多个逻辑分区以及将逻辑分区映射到数据处理企业310的物理存储资源的多个配置条目500。在一个示范性实施例中,分区配置数据结构352的每个配置条目500包括若干字段,包括节点号字段502、主机名字段504、逻辑分区号字段506、和虚拟分区标志508。节点号字段502规定唯一标识数据库350的分区的整数。与将节点号限于逻辑分区的传统分区数据库相反,节点号字段502优选地包括数据库;350的每个逻辑和虚拟分区的唯一节点号。主机名字段504标识在节点号字段502中标识的数据库分区的TCP/IP主机名(例如, “ServerA(服务器A) ”)。另外,逻辑端口字段506规定指定给在节点号字段502中标识的数据库分区的逻辑端口(例如,逻辑分区),以及虚拟分区标志508标识在节点号字段502中规定的分区是否是虚拟分区。应该理解,配置条目500可以包括提供诸如对逻辑分区的通信路径的附加配置信息和/或操作系统特有信息的一个或多个附加字段。给定图5中所描绘的分区配置数据结构352的示范性实施例,如下面的表I所示, 可以给出分区配置数据结构352的描述图4的数据存储节点400的部分。表 I
权利要求
1.一种数据处理方法,包括将分区数据库存储在数据处理系统的至少第一数据存储节点上的多个分区中; 将所述多个分区当中的第一分区的子集配置成虚拟分区; 接收指示分配第二数据存储节点来存储分区数据库的输入; 在所述第二数据存储节点上配置分区数据库的第二分区;以及响应于所述输入,通过将所述第一分区上的所述虚拟分区内的数据移动到所述第二分区,在所述第一和第二数据存储节点上重新分布分区数据库。
2.如权利要求1所述的方法,其中,所述虚拟分区包括所述第一分区的一个或多个数据块。
3.如权利要求2所述的方法,其中,所述虚拟分区只包括所述第一分区内的数据。
4.如权利要求1所述的方法,其中所述方法包括建立将所述虚拟分区与所述第一分区相关联的分区配置数据结构;以及所述重新分布包括更新所述分区配置数据结构以指示移动到所述第二分区的数据不驻留在虚拟分区中。
5.如权利要求1所述的方法,其中所述方法包括建立将所述分区数据库内的数据映射到所述虚拟分区和所述多个分区中的特定分区的分区映射;以及所述重新分布包括更新所述分区映射以指示移动到所述第二分区的数据未被映射到虚拟分区。
6.如权利要求1所述的方法,其中,所述重新分布包括 创建所述虚拟分区内的数据的备份;以及将数据从所述备份恢复到所述第二分区。
7.如权利要求1所述的方法,其中 所述虚拟分区内的数据是第一数据;在所述重新分布之前,所述第一分区存储所述第一数据和不在所述虚拟分区内的第二数据;以及创建备份包括创建包括所述第一数据但不包括所述第二数据的备份。
8.一种数据处理系统,包括 处理器;与所述处理器耦合的数据存储体;以及存储在所述数据存储体内的程序代码,当被所述处理器执行时,所述程序代码使所述数据处理系统执行如下操作将分区数据库存储在所述数据存储体的至少第一数据存储节点上的多个分区中; 将所述多个分区当中的第一分区的子集配置成虚拟分区; 接收指示分配所述数据存储体的第二数据存储节点来存储分区数据库的输入; 在所述第二数据存储节点上配置分区数据库的第二分区;以及响应于所述输入,通过将所述第一分区上的所述虚拟分区内的数据移动到所述第二分区,在所述第一和第二数据存储节点上重新分布分区数据库。
9.如权利要求8所述的数据处理系统,其中,所述虚拟分区包括所述第一分区的一个或多个数据块。
10.如权利要求9所述的数据处理系统,其中,所述虚拟分区只包括所述第一分区内的数据。
11.如权利要求8所述的数据处理系统,其中所述程序进一步使计算机执行建立将所述虚拟分区与所述第一分区相关联的分区配置数据结构;以及所述重新分布包括更新所述分区配置数据结构以指示移动到所述第二分区的数据不驻留在虚拟分区中。
12.如权利要求8所述的数据处理系统,其中所述程序进一步使计算机执行建立将所述分区数据库内的数据映射到所述虚拟分区和所述多个分区中的特定分区的分区映射;以及所述重新分布包括更新所述分区映射以指示移动到所述第二分区的数据未被映射到所述虚拟分区。
13.如权利要求8所述的数据处理系统,其中,所述重新分布包括 创建所述虚拟分区内的数据的备份;以及将数据从所述备份恢复到所述第二分区。
14.如权利要求8所述的数据处理系统,其中 所述虚拟分区内的数据是第一数据;在所述重新分布之前,所述第一分区存储所述第一数据和不在所述虚拟分区内的第二数据;以及所述创建备份包括创建包括所述第一数据但不包括所述第二数据的备份。
全文摘要
本发明涉及利用虚拟分区的数据库重新分布方法和系统。在一些实施例中,将分区数据库存储在至少逻辑或物理第一数据存储节点上的多个逻辑或物理分区中,并且将多个逻辑分区当中的第一分区的子集配置成虚拟分区。接收指示分配第二物理数据存储节点来存储分区数据库的输入。在第二数据存储节点上配置第二分区。响应于该输入,通过将第一分区上的虚拟分区内的数据移动到第二分区,在第一和第二数据存储节点上重新分布分区数据库。
文档编号G06F17/30GK102541990SQ20111036002
公开日2012年7月4日 申请日期2011年11月15日 优先权日2010年12月7日
发明者N·沙马, S·佳因 申请人:国际商业机器公司