专利名称:分布式数据库并行处理系统的制作方法
技术领域:
本发明涉及一种数据库系统,尤其涉及一种同时提高数据库数据处理性能和提高 数据库可靠度的带有可控数据冗余度的分布式数据库并行处理系统。
背景技术:
数据库数据高速处理性能和数据库高可靠度这两个指标都是商用数据库系统的 重要指标,为了向客户提供迅速及时且稳定可靠的服务,商用数据库系统对这两个指标都 有非常高的要求。在现有软件和硬件条件的限制下,传统的方法只能以牺牲一个性能指标 来提升另外一个性能指标。
为了提高数据库系统的处理性能,现有的数据库系统通常选用尽可能快速和大容 量的硬件设备(例如处理器、内存、系统总线和存储设备等等),并为一个大型服务器提供 大型硬盘阵列来提高数据读写和处理速度。带有这样高端设备和大型硬盘阵列的数据库系 统往往造价昂贵,但其昂贵的硬盘阵列设备只能保证个别硬盘出现故障时整个数据库系统 能够维持正常工作,而当系统其他设备或软件出现故障时(例如中央处理器、主板、内存、 操作系统、数据库软件等),整个系统就无法继续正常工作,也就是说现有的数据库系统仍 然无法避免单点故障源造成的整个数据库系统的瘫痪。
为了防止单点故障源瘫痪整个数据库系统,数据库软件商采用多台 (shared-nothing)分布式计算机的数据库系统来解决系统可靠度的问题。例如最普通的 数据库集群的架构请参见图1,这个架构包括一个应用程序服务器和多个(图中示为1 4号服务器)服务器节点构成,每个数据库服务器节点只负责存储一部分数据,各服务器节 点存储的数据无交集。其中应用程序服务器接收用户端(即,客户1 客户η)的查询和写 操作请求,并将服务器节点返回的结果回送给用户端。应用程序服务器在接收到用户端的 查询和写操作请求后,根据所掌握的分布式数据库架构信息向服务器节点分配查询和写操 作请求。服务器节点会将操作结果反馈至应用程序服务器。在这种架构的分布式数据库集 群中,整个数据库集群的规模(服务器节点数目)及各服务器上的数据分布方式都要在数 据库设计阶段固定下来。在为客户提供服务时,往往需要多个节点参与以提供完整的数据 信息,这就要求各服务器之间进行大量的数据交换和通讯。这样的设计造成各节点之间彼 此严重依赖并容易引发因大量数据传递而造成的网络堵塞,只要当系统中的一个服务器节 点出现故障时,整个系统将无法正常为用户提供服务。可以说,这种不带有数据冗余优化配 置的分布式数据库系统不能用来解决系统可靠度的问题,其只能以牺牲系统可靠度来突破 使用单机型服务器的数据处理极限。
当前,使用分布式计算机构造数据库集群系统的主要有以下三种构架(1)将数 据分布在多台服务器节点上,利用各个节点下的本机专属中央处理器(CPU)和硬盘同步处 理数据,以期获得高速处理性能。( 使用并行处理技术和Two Phase Commit协议来把所 有的数据都实时同步备份到多个服务器上,每个服务器都保留一份完整的数据。C3)利用异 步复制技术来提高处理性能和可靠度。基本原理是建立一个主服务器和多个辅助服务器,主服务器上存放着全部实时数据,每个辅助服务器定时从主服务器获取最新的数据。所有 对数据的更新和增加(亦即写操作)都要经过主服务器处理,然后复制到各个辅助服务器 上。各个辅助服务器可以分担一部分数据查询(亦即只读操作)的负载。
上述的三种方法都有各自的缺点,无法同时提高数据处理速度和提高数据库可靠 度。对于第(1)种方法,将数据分布在多个服务器节点后,当任一节点出现故障时,任何对 该节点的数据访问和更新都无法继续进行,随着服务器节点数据的增加,整个数据库系统 的可靠性持续下降。这种方法是以牺牲数据库的可靠性来提高数据库系统的处理性能。此 外,因为每个节点和其上存贮的数据相对固定,增减服务器节点会影响原有数据分布,这些 计划内的系统维护任务也会造成数据库的服务间断。
对于第( 种方法,在多个服务器上都存储一份完整的数据,这要求每次数据更 新都必须在每个服务器上同步完成。这使得整个数据库的处理速度永远不超过该数据库集 群中最慢的一台服务器,整个系统的处理性能非但无法按照服务器节点数目线性增加,反 而会永远按照最慢的一台服务器节点速度来统一步调,造成资源浪费。这是靠牺牲数据库 处理性能来提高数据库可靠度的方法。
对于第( 种方法,由于主服务器和辅助服务器之间的异步复制技术存在时间上 的延迟,当主服务器出现故障时,在主服务器上尚未被复制到辅助服务器的数据将有可能 丢失,在修复主服务器之前整个系统无法恢复正常工作,系统的可靠度不会高于单台主服 务器的可靠度,整个系统的可靠度并未提高。另外,所有的写操作必须先由主服务器完成, 这决定了整个系统的处理速度在主服务器达到负载饱和后将无法提高。从主服务器向辅 助服务器传递最新数据还会消耗主服务器上宝贵的系统资源从而降低主服务器处理数据 的能力,这种复制方式决定了数据复制速度将由数据复制队列两端(主服务器和辅助服务 器)中速度较慢的一端来决定,这种瓶颈效应和写操作必须由主服务器处理的结构性要求 限制了数据库系统的规模扩展。这种方法实际上比使用单台主服务器的可靠性更低,数据 处理性能更差。
综上所述,现有技术中不存在一种技术可以同时解决数据库高处理性能和数据库 高可靠度这两个看似矛盾的需求。发明内容
本发明的目的在于解决上述问题,提供了一种带有可控数据冗余度的分布式数据 库并行处理系统,第一方面提供了一个可以动态调节易于使用和管理的分布式并行数据库 架构以消除性能瓶颈,解决了数据库集群的大规模扩展和提高处理性能的问题;第二方面 利用可控数据冗余构架可以提高数据库可靠度;第三方面解决了集群规模最优化的问题。 第四方面解决了数据库节点之间相互依赖的问题。
本发明的技术方案为本发明揭示了一种分布式数据库并行处理系统,通过动态 可控冗余架构将数据库内的数据分布到由多个服务器节点组成的数据库集群中,该系统包 括以下组成部分
数据库应用程序服务器,掌握带有动态可控冗余度的分布式数据库集群的架构信 息和数据分布情况,接收用户递交的对数据库的操作指令并按照操作的特征动态选定能够 完成该操作的服务器节点来执行该操作指令;
多个服务器节点,该数据库应用程序服务器连接多个服务器节点,该些服务器节 点用于存储实体数据并执行用户递交的对数据库的操作指令,该些服务器节点分为两类
第一类服务器节点非满型数据库服务器节点,每个非满型数据库服务器节点只 存储指定的一部分分布式数据,各非满型数据库服务器节点彼此独立工作,不直接与其他 非满型数据库服务器节点交换数据,该非满型数据库服务器节点内包含以下信息模块
存储数据库集群中分布式数据架构信息的模块,该些分布式数据架构信息由该数 据库应用程序服务器负责维护;
存储数据库集群中非分布式数据的普通数据表的模块;
存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,虚拟 表本身不存储数据,每个虚拟表下管理多个数据分区模块,分布式数据的实体数据存储于 该些数据分区模块中,存有分布式数据的分区模块为有效数据分区模块,未存有分布式数 据的分区为空分区模块,非满型数据库服务器节点所属的数据分区模块中至少有一个是空 分区模块,所有对有效数据分区模块内数据的操作指令都由其上的虚拟表来接收并转发至 各个存有实体数据的有效数据分区模块上执行;
第二类服务器节点虚空型数据库服务器节点,虚空型服务器节点本身只保存非 分布式数据,不存储任何实体的分布式数据,依赖其他存有分布式数据的服务器节点为其 提供实体数据,每个虚空型数据库服务器节点将各个存有分布式数据的服务器节点动态链 接起来为用户提供一份覆盖全部分布式数据的完整数据集合,该虚空型数据库服务器节点 内包含以下信息模块
存储数据库集群中分布式数据架构信息的模块;
存储数据库集群中非分布式数据的普通数据表的模块;
存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,该虚 拟表本身不存储数据,每个虚拟表下管理多个数据分区模块,虚空型服务器节点上所有的 数据分区模块均为空模块,不存储实体数据,其下每个数据分区模块与集群中其他存有有 效数据的服务器节点的分区模块保持动态链接,当虚空型数据库服务器节点上的虚拟表接 收到数据操作请求时,虚拟表通过该些动态链接从其他服务器节点获取数据并返回查询结果。
根据本发明的分布式数据库并行处理系统的一实施例,该服务器节点还包括
第三类服务器节点满型数据库服务器节点,其上存储有全部非分布式数据和一 份完整的分布式数据的数据集,单独提供用户所需的全部数据,满型数据库服务器节点内 包括以下模块
存储数据库集群中分布式数据架构信息的模块;
存储数据库集群中非分布式数据的普通数据表的模块;
存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,该虚 拟表本身不存储数据,每个虚拟表下管理多个数据分区模块,各满型数据库服务器节点下 的数据分区模块均为有效数据分区模块,每个满型服务器节点上的全部有效数据分区模块 组成一套完整的分布式数据以保证该满型数据库服务器节点独立为用户提供完整的数据。
根据本发明的分布式数据库并行处理系统的一实施例,该数据库应用程序服务器 监控和管理每个服务器节点,把整个数据库集群的最新状态和最近变更记录作为分布式数据库集群架构的信息保存在每个服务器节点上,在收到用户操作时根据用户操作的特征将 其发往对应的服务器节点如果该用户操作是针对某一数据分区模块的只读操作,则选择 任意一个包含对应有效数据分区模块的服务器节点来执行该只读操作;如果该用户操作是 针对某一数据分区模块的写操作,则将该写操作发往所有存储对应有效数据分区模块的服 务器节点来执行该写操作;如果该用户操作是针对非分布式数据的只读操作,则可选择任 意一个服务器节点来执行该只读操作;如果该用户操作是针对非分布式数据的写操作,则 将该写操作发往所有服务器节点来执行该写操作。
根据本发明的分布式数据库并行处理系统的一实施例,集群内的虚空型数据库服 务器节点动态链接数据库集群内的非满型数据库服务器节点和满型数据库服务器节点以 组成一个覆盖全部分布式数据的星型网络结构,该星型网络结构将涉及大量数据操作的用 户指令分割成多个并行执行的指令,分配到多个独立的服务器节点上同步运行。
根据本发明的分布式数据库并行处理系统的一实施例,满型数据库服务器节点在 数据库管理员需要缩减数据库集群规模或者将数据库集群合并至单台服务器时为用户提 供安全的合并方案,或者为在数据库应用程序开发人员在单个服务器节点上开发针对整个 数据库集群的应用程序时提供便利的调试环境。
本发明还揭示了一种分布式数据库并行处理系统,通过动态可控冗余架构将数据 库内的数据分布到由多个服务器节点组成的数据库集群中,该系统包括以下组成部分
数据库应用程序服务器,掌握带有动态可控冗余度的分布式数据库集群的架构信 息和数据分布情况,接收用户递交的对数据库的操作指令并按照操作的特征动态选定能够 完成该操作的服务器节点来执行该操作指令;
多个服务器节点,该数据库应用程序服务器连接多个服务器节点,该些服务器节 点用于存储实体数据并执行用户递交的对数据库的操作指令,该些服务器节点分为两类
第一类服务器节点非满型数据库服务器节点,每个非满型数据库服务器节点只 存储指定的一部分分布式数据,各非满型数据库服务器节点彼此独立工作,不直接与其他 非满型数据库服务器节点交换数据,该非满型数据库服务器节点内包含以下信息模块
存储数据库集群中分布式数据架构信息的模块,该些分布式数据架构信息由该数 据库应用程序服务器负责维护;
存储数据库集群中非分布式数据的普通数据表的模块;
存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,虚拟 表本身不存储数据,每个虚拟表下管理多个数据分区模块,分布式数据的实体数据存储于 该些数据分区模块中,存有分布式数据的分区模块为有效数据分区模块,未存有分布式数 据的分区为空分区模块,非满型数据库服务器节点所属的数据分区模块中至少有一个是空 分区模块,所有对有效数据分区模块内数据的操作指令都由其上的虚拟表来接收并转发至 各个存有实体数据的有效数据分区模块上执行;
第二类服务器节点满型数据库服务器节点,其上存储有全部非分布式数据和一 份完整的分布式数据的数据集,单独提供用户所需的全部数据,满型数据库服务器节点内 包括以下模块
存储数据库集群中分布式数据架构信息的模块;
存储数据库集群中非分布式数据的普通数据表的模块;
存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,该虚 拟表本身不存储数据,每个虚拟表下管理多个数据分区模块,各满型数据库服务器节点下 的数据分区模块均为有效数据分区模块,每个满型服务器节点上的全部有效数据分区模块 组成一套完整的分布式数据以保证该满型数据库服务器节点独立为用户提供完整的数据。
根据本发明的分布式数据库并行处理系统的一实施例,该数据库应用程序服务器 监控和管理每个服务器节点,把整个数据库集群的最新状态和最近变更记录作为分布式数 据库集群架构的信息保存在每个服务器节点上,在收到用户操作时根据用户操作的特征将 其发往对应的服务器节点如果该用户操作是针对某一数据分区模块的只读操作,则选择 任意一个包含对应有效数据分区模块的服务器节点来执行该只读操作;如果该用户操作是 针对某一数据分区模块的写操作,则将该写操作发往所有存储对应有效数据分区模块的服 务器节点来执行该写操作;如果该用户操作是针对非分布式数据的只读操作,则可选择任 意一个服务器节点来执行该只读操作;如果该用户操作是针对非分布式数据的写操作,则 将该写操作发往所有服务器节点来执行该写操作。
根据本发明的分布式数据库并行处理系统的一实施例,满型数据库服务器节点在 数据库管理员需要缩减数据库集群规模或者将数据库集群合并至单台服务器时为用户提 供安全的合并方案,或者为在数据库应用程序开发人员在单个服务器节点上开发针对整个 数据库集群的应用程序时提供便利的调试环境。
本发明对比现有技术有如下的有益效果本发明的技术方案是采用分布式并行数 据库可控冗余架构,在数据库系统中使用不同类型的数据库服务器节点(满型数据库服务 器、非满型数据库服务器和虚空型数据库服务器)。数据库集群主要由非满型数据库服务器 组成,每个非满型服务器上存储着数据库集群中的部分数据来分担工作负载,多个非满型 服务器可以通过虚空型数据库服务器组成多份完整的数据集合,虚空型数据库服务器从功 能上保证了数据集合的完整。满型数据库服务器也可以单独提供数据集合的完整。这样的 构架既可以提供高速同步的数据处理性能,又可提高数据库可靠度。虚空型数据库服务器 选择数据库集群中的服务器节点组成一个覆盖全部数据的星型网络,用于检索数据库集群 中的全部数据,这样可以将存储于多个数据库服务器节点上的数据分区动态链接起来,提 高数据库处理性能尤其是数据读取操作的性能。
图1是传统的普通数据库集群的示意图。
图2是本发明的带有可控冗余构架的分布式数据库并行处理系统的第一实施例 的架构全局视图。
图3是本发明的带有可控冗余构架的分布式数据库并行处理系统的第二实施例 的架构全局视图。
图4是本发明的带有可控冗余构架的分布式数据库并行处理系统的三类服务器 节点的真实数据分布示意图。
图5是本发明的带有可控冗余构架的分布式数据库并行处理系统中用户及数据 库程序员可见的数据视图。
图6是本发明的带有可控冗余构架的分布式数据库并行处理系统的构造方法的流程图。
图7是本发明的系统构造方法中的满型数据库服务器的构造示意图。
图8是本发明的系统构造方法中的从工作节点向新服务器节点复制同步数据的 示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
分布式数据库并行处理系统的第一实施例
图2示出了本发明的带有可控冗余构架的分布式数据库并行处理系统的第一实 施例。请参见图2,本实施例的分布式数据库并行处理系统包括数据库应用程序服务器10 以及数据库应用程序服务器10连接的多个服务器节点。本实施例的分布式数据库并行处 理系统通过一个独特的动态可控冗余架构将数据库内的数据分布到由多个服务器节点组 成的数据库集群当中。数据库中的数据可以根据工作负载的特征划分为两类分布式数据 和非分布式数据。分布式数据的特点是此类数据往往只在个别数据操作中被访问或更改, 例如某个银行储户的某笔存款记录。非分布式数据的特点是此类数据往往被大量的操作所 查询和使用,例如银行系统中某类账户的存款利息。在动态可控冗余架构下,非分布式数据 存储于普通数据表内并被同步复制到每个服务器节点上,以便于各个数据库节点可以从本 地存储系统内查询到此类数据而无需依赖其它节点提供此类信息;分布式数据存储于按照 数据库管理员指定的模式分割至多个数据分区内,在这些数据分区之上建立虚拟表来代表 和管理其所属的数据分区和分区内的数据。这种虚拟表和数据分区的架构被复制到每个服 务器节点上,而这些分区内的数据可以按照数据库管理员的规划在多个服务器节点内进行 分配和同步复制每个服务器节点只负责存储和管理其指定的数据分区。在这种独特的动 态可控冗余架构管理下,数据库集群中的服务器节点可以提供多个完整的数据备份以增强 数据库的可靠度,整个系统的工作负载可以被分配到各个服务器节点上以提高数据库系统 的工作吞吐量。本实施例中的服务器节点用于存储数据并执行数据指令操作,本实施例中 的服务器节点按照其上存储的分布式数据的情况分为两种满型数据库服务器12和非满 型数据库服务器14。值得注意的是,全部服务器节点上都存有同样的数据分区模块构架,但 不是每个数据分区模块内部都存有具体的实体数据。因为此实施例中没有包含虚空型数据 库服务器,所以满型数据库服务器12在本实施例中的首要用途是提供数据的完整。
在本实施例中,用户端(即图2中的客户1 客户η)和网页服务器建立数据连接, 网页服务器和数据库应用程序服务器10建立数据连接。用户端和网页服务器之间,以及网 页服务器和数据库应用程序服务器10之间传输用户端的查询和写操作请求和服务器反馈 fn息ο
数据库应用程序服务器10负责维护整个数据库集群上的动态可控冗余度的架构 信息和数据分布信息,系统管理员可以为该应用程序服务器配置一个后备应用程序服务 器,在数据库应用程序服务器10出现故障时将后备应用程序服务器投入使用(其中各服务 器节点存储的数据库集群中分布式数据架构信息的模块可以用来帮助后备应用程序服务 器准确了解集群内的最新数据分布情况和各节点的工作状态)。数据库应用程序服务器10 的功能是监控下面的每一个数据库服务器节点的状态,把整个数据库集群的最新状态和最近变更记录作为分布式数据架构的信息保存在每一个服务器节点上,并在收到用户端操 作指令(例如查询和写操作请求)时根据用户端操作的特征向下面的服务器节点分配这一 操作,以及接收服务器节点返回的处理结果。至于如何将用户端的查询和写操作请求分配 到对应的服务器节点,将在描述完满型数据库服务器12和非满型数据库服务器14的结构 之后再作详细说明。
满型数据库服务器12上保存了整个数据库集群中的全部非分布式数据和一份完 整的分布式数据的数据集,可以单独提供用户所需的全部数据服务功能。满型数据库服务 器节点12进一步包括存储数据库集群中分布式数据架构信息的模块120、存储数据库集群 中非分布式数据的普通数据表的模块121、存储数据库集群中代表分布式数据的虚拟表及 其下属数据分区构架的模块122、及其下属的三个数据分区模块123 125(在图2的满型 数据库服务器节点12中示为1号数据分区模块123、2号数据分区模块124、3号数据分区 模块125,当然本实施例仅为示例,实际上数据分区模块的数量可以有更多个)。其中这三 个数据分区模块123 125与代表分布式数据的虚拟表模块122建立从属关系,每个数据 分区都仅从属于一个预先为其指定的虚拟表,用户只对虚拟表提交操作指令,该虚拟表根 据预先定义的数据分区算法得出正确执行用户操作指令所需访问的数据分区并将这些操 作指令传递到这些数据分区。虚拟表本身不存储数据,这三个数据分区模块123 125是 由虚拟表管理的。存储数据库集群中的分布式数据架构信息的模块120和存储非分布式数 据的普通数据表的模块121在每个服务器节点中都实体存在且都是相同的,这些技术均是 现有技术,在此不再赘述。之所以要区分非分布式数据和分布式数据,是因为在进行数据 分区设计时,内容更新频繁的数据表都可以通过被分割并分布到多个节点上以降低写操作 在单个服务器节点上可能引起的负载瓶颈。而其余的数据表因为数据更新频率低,不占用 过多的写操作资源,可以完整地复制到每个节点上,以分担对这些数据表的只读操作负载。 本实施例的特点在于代表分布式区数据的虚拟表的模块122和其所管辖的三个数据分区 模块123 125。虚拟表本身不存储实体数据,而是专门负责管理其下属的数据分区模块 123 125,通过添加trigger或利用现有数据库分区功能可使得所有对其下属数据块分区 的访问都通过这个虚拟表来进行,具体的读写操作在该虚拟表所管理的底层的数据块分区 上进行。
所谓满型数据块服务器12,就是这个服务器节点上存储有一套完整的分布式数据 全集,体现在数据分区中就是这三个数据分区模块123 125都存有有效数据(亦即,每个 数据分区模块都是有效数据分区模块,都存有分配到该数据分区的实体数据),它们组合在 一起覆盖了数据库集群向用户提供的全部数据。这样的满型数据库服务器12可以像普通 单机数据库服务器一样独立运行。
正如前面所述,满型数据库服务器12除了可应用于系统实际使用过程中,也可以 由初始单机版数据库服务器(或者异步复制技术中的主服务器)向本实施例的运用“分布 式并行数据库可控冗余架构”的数据库集群转变过程中出现。构造满型数据库服务器12的 具体过程将在后面系统构造方法的实施例中说明,这里仅作简单说明。当数据库管理员在 主服务器(或单机版数据库服务器)上选定需要分布到多个服务器上的数据表后,首先在 主服务器内部建立数据分区构架,将目标数据放入这些数据分区并在这些数据分区上建立 虚拟表以隐藏底层数据分区后,主服务器即成为一个满型数据库服务器节点。满型数据库服务器12主要用于导入新的非满型数据库服务器时的数据同步复制过程。当一个集群中 的非满型数据库服务器节点上保存的数据已经能够组合出一套完整的数据之后,满型数据 库服务器就不再是必需的,可以清空其上一部分数据分区以使其变为一个非满型数据库服 务器,这样可以防止当工作负载过大时该满型节点因为要处理过多的写操作而变成整个集 群的瓶颈。至于满型数据库服务器所能提供的数据完整性功能,可以由对系统硬件要求较 低的虚空型数据库服务器来替代实现(这种实现方案可以参见下面的第二实施例)。
除了出现在从上述的初始单机版数据库服务器(或者现有的异步复制技术中的 主服务器)向本实施例中使用“分布式并行数据库可控冗余架构”的数据库集群转变过程 中,满型数据库服务器的另外一个用途是应用于数据库应用程序的开发过程。程序员可以 在一台满型数据库服务器上开发调试程序,在满型数据库服务器上开发完毕的应用程序可 以不加任何修改直接应用于具有多个服务器节点的大规模的数据库集群。此外,满型数据 库服务器还可以在数据库管理员需要缩减数据库集群规模或者将数据库集群合并至单台 服务器时为用户提供安全的合并方案。同样,由非满型数据库服务器节点构造满型数据库 服务器节点的过程也很简单,只需利用集群中的多个节点上存储的有效数据分区将一个选 定的非满型数据库服务器节点上的空数据分区全部替换为有效数据分区即可。
非满型数据库服务器是构成本实施例的并行处理系统的主体,每个非满型数据库 服务器只存储数据库集群中由管理员指定的部分分布式数据,各非满型数据库服务器节点 彼此独立工作,不直接与其他的非满型数据库服务器节点交换数据。这种工作模式避免了 非满型数据库服务器节点之间的相互依赖,也减少了大量数据在网络上传递造成的堵塞和 延迟。在本实施例中为说明方便只图示了 2个,下面的说明以其中的非满型数据库服务器 14为例。从结构上看,非满型数据库服务器14和满型数据库服务器12相似,不同之处在于 满型数据库服务器12存储了数据库集群中的全部数据,而非满型数据库服务器14只存储 集群中的部分数据,其节点内至少有一个数据分区模块是空分区模块(即,不存储任何有 效数据的空数据分区),在本实施例的非满型数据库服务器14中,其1号数据分区模块143 为空分区模块,而2号数据分区模块144和3号数据分区模块145均为有效数据分区模块 (即,存储有实体数据)。各非满型数据库服务器上存储的有效数据分区可以由数据库管理 员决定,但是当系统中不存在满型数据库服务器节点时,所有的非满型数据库服务器14组 合在一起必须要保证能够提供覆盖了数据库集群所需的全部分布式数据。在本实施例中, 非满型数据库服务器14包含有存储数据库集群中的分布式数据架构信息的模块140、存 储数据库集群中非分布式数据的普通数据表的模块141、存储数据库集群中代表分布式数 据及其下属数据分区构架的虚拟表模块142、及其下属的三个数据分区模块143 145(在 图2的非满型数据库服务器14中示为1号数据分区模块143、2号数据分区模块144、3号 数据分区模块145,本实施例仅为示例,实际上数据分区模块的数量可以有更多个)。其中 这三个数据分区模块143 145从属于代表分布式数据的虚拟表的模块142,虚拟表向其下 属的数据分区传递用户提交的操作指令并接收数据分区返回的处理结果。虚拟表本身不存 储数据,这三个数据分区模块143 145是由虚拟表管理的。存储数据库集群中的分布式 数据架构信息的模块140和存储数据库集群中非分布式数据的普通数据表的模块141 (包 括未分区的普通表及其表内的数据)在每个服务器节点中都实体存在且都是相同的,这些 技术均是现有技术,在此不再赘述。本实施例的特点在于代表分布式数据的虚拟表及其下属数据分区构架的模块142和这三个数据分区模块143 145。代表分布式数据的虚拟表 及其下属数据分区构架的模块142建立在数据分区模块143 145之上,通过trigger或 利用现有数据库分区功能可使得所有对数据的访问都通过这个虚拟表来进行,具体的读写 操作在该虚拟表所管理的数据分区上进行。每个非满型数据库服务器只需处理与其所存储 的数据分区相关的操作,不依赖于其他任何服务器节点。当新的非满型数据库服务器加入 数据库服务器集群时,其上所存储的数据分区模块可以由一个满型数据库服务器或者其他 已经获得有效数据的非满型数据库服务器以数据同步的方式获得。在第一个节点(通常是 一个满型数据库服务器节点)投入运行后,数据库管理人员可以继续添加新的服务器节点 并从之前产生的满型数据库服务器节点向新的服务器节点复制数据,直至新节点上指定的 数据分区模块与集群中已实现同步的工作节点完成数据同步,此后新节点即可投入使用, 而无需继续从其他节点复制数据。这种数据同步方式把严重消耗系统资源的数据同步限制 在节点投入使用前的短暂的数据同步过程内,而不是像传统的“主服务器到辅助服务器”的 异步复制模式那样在集群正常工作期间必须持续进行,为整个集群节省了宝贵的系统资源 来处理更多的客户操作指令。
再回到数据库应用程序服务器10来观察如何将用户端的查询和写操作请求分配 到对应的服务器节点,这个过程是根据操作的特征和相关服务器节点中数据分区的特征来 决定的。具体而言,如果该用户操作是针对某一数据分区模块的只读操作,则选择任意一个 包含对应有效数据分区模块的服务器节点来执行该只读操作;如果该用户操作是针对某一 数据分区模块的写操作(例如插入记录、删除记录或更新记录),则将该写操作发往所有存 储对应有效数据分区模块的服务器节点来执行该写操作;如果该用户操作是针对非分布式 数据的只读操作,则可选择任意一个服务器节点来执行该只读操作;如果该用户操作是针 对非分布式数据的写操作,则将该写操作发往所有服务器节点来执行该写操作。
基于图2所示的分布式数据库并行处理系统所带来的处理性能提升和可靠度提 升,可以通过下面一个具体示例来说明。假设本实施例的系统集群中包括了 100台非满型 数据库服务器,同时假设所有的用户指令都只访问至多一个数据分区(此种情况下不需要 满型数据库服务器),这100台非满型数据库服务器组成了一个数据库集群,集群中的全部 数据被划分为100份。服务器1负责维护数据块1和数据块2,服务器2负责维护数据块 2和数据块3,……,服务器99负责维护数据块99和数据块100,服务器100负责维护数 据块100和数据块1。一方面,在这样的分布式并行数据库可控冗余架构下,任何一台服务 器出现故障都不会影响整个数据库集群的正常工作。在最好的情况下,即使集群中一半的 服务器停止工作(例如将所有的偶数号服务器停机进行硬件升级或系统维护),剩余的服 务器仍然可以不间断地提供全部实时有效的数据和完整的服务。另一方面,在这样的分布 式并行数据库可控冗余架构下,每台服务器只需要处理原来单台服务器的2%的写操作负 荷,以及原来单台服务器的的只读操作负荷(因为所有数据均为实时数据,对数据的查 询操作只需要由任一存储该有效数据分区的服务器处理即可)。与使用传统的Two Phase Commit协议的普通同步复制技术相比,分布式并行数据库可控冗余架构不需要在每台服务 器上保留整套完整的数据,使得对数据库进行的写操作(插入、删除和修改指令)不必在全 部节点上都同步执行,这些写操作只需要在保存有相应数据块实体数据的非满型数据库服 务器上执行,整个系统的性能不再由某个主服务器限定,消除了数据库集群的数据处理速度瓶颈。
分布式数据库并行处理系统的第二实施例
图3示出了本发明带有可控冗余构架的分布式数据库并行处理系统的第二实施 例的结构。本实施例的分布式数据库并行处理系统包括数据库应用程序服务器20以及 多个服务器节点。本实施例的分布式数据库并行处理系统通过一个独特的动态可控冗余架 构将数据库内的数据分布到由多个服务器节点组成的数据库集群当中。数据库中的数据可 以根据工作负载的特征划分为两类分布式数据和非分布式数据。分布式数据的特点是此 类数据往往只在个别数据操作中被访问或更改,例如某个银行储户的某笔存款记录。非分 布式数据的特点是此类数据往往被大量的操作所查询和使用,例如银行系统中某类账户的 存款利息。在动态可控冗余架构下,非分布式数据存储于普通数据表内并被同步复制到每 个服务器节点上,以便于各个数据库节点可以从本地存储系统内查询到此类数据而无需依 赖其它节点提供此类信息;分布式数据存储于按照数据库管理员指定的模式分割至多个数 据分区内,在这些数据分区之上建立虚拟表来代表和管理其所属的数据分区和分区内的数 据。这种虚拟表和数据分区的架构被复制到每个服务器节点上,而这些分区内的数据可以 按照数据库管理员的规划在多个服务器节点内进行分配和同步复制每个服务器节点只负 责存储和管理其指定的数据分区。在这种独特的动态可控冗余架构管理下,数据库集群中 的服务器节点可以提供多个完整的数据备份以增强数据库的可靠度,整个系统的工作负载 可以被分配到各个服务器节点上以提高数据库系统的工作吞吐量。本实施例中的服务器节 点按照其上存储的分布式数据的情况分为两种非满型数据库服务器M和虚空型数据库 服务器26。值得注意的是,全部服务器节点上都存有同样的数据分区构架(包括代表分布 式数据的虚拟表和其下属的数据分区),但不是每个数据分区模块内部都存有具体的实体 数据。由于虚空型数据库服务器沈的存在,满型数据库服务器在本实施例中不必存在,以 免成为整个集群的性能瓶颈。满型数据库服务器通常只应在建立本实施例的数据库集群的 初始阶段使用或者是为数据库应用程序开发人员在单个服务器节点上开发程序而使用的, 或者是在数据库管理员需要缩减数据库集群规模或者将数据库集群合并至单台服务器时 为用户提供安全的合并方案。包含了满型数据库服务器的集群模式适用于系统刚刚开始由 单机模式向包含有多个服务器节点的小规模数据库集群过渡期,此时数据规模和系统工作 负载开始接近单一服务器的性能极限,引入满型数据库服务器节点和非满型数据库服务器 节点可以将工作负载分配到多个节点上,此时还不必添加虚空型服务器,以便控制数据库 集群规模和管理的复杂度。但在数据库集群增长到一定规模后应尽量避免使用满型数据库 服务器节点以免其成为整个数据库服务器集群的性能瓶颈,此时通常是采用虚空型服务器 和非满型数据库服务器结合的数据库集群模式。
在本实施例中,用户端(即图3中的客户1 客户η)和网页服务器建立数据连接, 网页服务器和数据库应用程序服务器20建立数据连接。用户端和网页服务器之间,以及网 页服务器和数据库应用程序服务器20之间传输用户端的查询和写操作请求以及服务器反 馈信息。数据库应用程序服务器20与多个数据库服务器节点建立数据连接,这些数据库服 务器节点用于存储数据并执行数据指令操作。
数据库应用程序服务器20掌握整个数据库集群上动态可控冗余度的分布式数据 库架构的信息和数据分布信息,系统管理员可以为其配置一个后备应用程序服务器,在数据库应用程序服务器20出现故障时作为备用的应用程序服务器投入使用(其中各服务器 节点存储的数据库集群中分布式数据架构信息的模块可以用来帮助后备应用程序服务器 准确了解集群内的最新数据分布情况和各节点的工作状态)。数据库应用程序服务器20的 功能是监控下面的每一个服务器节点的状态,把整个数据库集群的最新状态和最近变更 记录作为分布式数据架构的信息保存在每一个服务器节点上,并在收到用户操作指令(例 如查询和写操作请求)后根据用户操作指令的特征向下面对应的服务器节点分配这一操 作,以及接收数据库服务器节点返回的处理结果。
非满型数据库服务器是构成本实施例的并行数据库服务器集群系统的主体,在本 实施例中为说明方便只图示了 2个,实际应用中非满型数据库服务器的数量可以有更多 个,下面的说明以图3中的非满型数据库服务器M为例。非满型数据库服务器只存储数据 库集群中由管理员指定的部分数据,各个非满型数据库服务器彼此独立工作,不直接与其 他的非满型数据库服务器交换数据。从结构上看,非满型数据库服务器M和满型数据库服 务器相似,不同之处在于满型数据库服务器存储的数据可以覆盖整个数据库集群向用户提 供的全部数据,而非满型数据库服务器M只存储集群中的部分数据,非满型数据库服务器 M中的数据分区模块并不全部存有数据,根据定义其中至少有一个数据分区模块是空数据 分区模块(即,不存储任何数据),在本实施例中是非满型数据库服务器M中的3号数据 分区模块245为空,1号数据分区模块243和2号数据分区模块244是有效数据分区模块 (即,存储实体数据),而另一个非满型数据库服务器的1号和2号数据分区模块为空。这 样设计的目的是为了减小各数据库服务器节点上的工作负载。但是从整个数据库集群来 看,系统中所有的非满型数据库服务器组合在一起一定要能够覆盖集群所需的全部数据。 非满型数据库服务器M包括存储数据库集群中的分布式数据架构信息的模块M0、存储 数据库集群中非分布式数据的普通数据表的模块Ml、代表分布式数据的虚拟表及其下属 数据分区构架的模块对2、三个数据分区模块243 M5 (在图2中示为1号数据分区模块 243,2号数据分区模块M4、3号数据分区模块M5,当然本实施例仅为示例,实际上数据分 区模块的数量可以有更多个)。这三个数据分区模块243 245从属于代表分布式数据的 虚拟表的模块M2,虚拟表M2向其所属的数据分区243 245传递用户提交的操作指令 并接收数据分区返回的处理结果。也就是说,这三个数据分区模块243 245是由虚拟表 管理的,所有对有效数据分区模块内数据的操作指令都由其上的虚拟表来接收并转发至各 个存有实体数据的有效数据分区模块上执行。存储数据库集群中的分布式数据架构信息的 模块240和存储数据库集群中非分布式数据的普通数据表的模块241 (包括未分区的普通 表及其表内的数据)在每个服务器节点中都实体存在且都是相同的,这些技术均是现有技 术,在此不再赘述。
本实施例相对前一实施例的最大不同在于本实施例的系统没有使用满型数据库 服务器而是采用了虚空型数据库服务器,在图3中示为虚空型数据库服务器26。当使用本 可控冗余构架技术实现的数据库集群内没有包含满型数据库服务器时,需要至少包含一个 虚空型服务器来提供数据完整性的保证。为了描述方便在本实施例中虚空型数据库服务 器示为1个。虚空型数据库服务器沈包括存储数据库集群中的分布式数据架构信息的模 块260、存储数据库集群中非分布式数据的普通数据表的模块261、存储数据库集群中代表 分布式数据及其下属数据分区构架的虚拟表模块262及其下属的各个数据分区模块263 265(为了描述方便,在本实施例中将数据分区模块限定为3个,实际应用中可以有更多个, 本实施例中为1号数据分区模块沈5、2号数据分区模块沈4以及3号数据分区模块沈3)。 虚空型数据库服务器26和满型数据库服务器或者非满型数据库服务器M的最大不同在于 虚空型数据库服务器26内部所有数据分区模块都是不存储数据的(S卩,都是空分区模块), 这也是虚空型数据库服务器模块得名的由来。这些空的数据分区模块263 265是用来和 其他非满型数据库服务器(或者满型数据库服务器)上的有效数据分区模块建立动态链接 以便能够查询这些数据。
之所以要设计本实施例中的虚空型数据库服务器,其目的是为了解决非满型数据 库服务器不能单独处理那些要求扫描全体分布式数据的查询指令,为了减少数据库服务器 节点之间的依赖,每个非满型数据库服务器节点不知道其他节点的存在,也就不需要直接 与其他节点进行数据交换。而在虚空型数据库服务器26上不保存任何真正的分布式数据, 仅保留虚拟表和其下的空分区模块,在这些空分区模块上保存有指向存储有效数据分区的 非满型数据库服务器节点的链接。而且这个链接是动态的,可进行动态调整来保证能够覆 盖全部的数据分区。虚空型数据库服务器可以通过这种方式把多个非满型数据库服务器上 存储的有效数据分区动态组合起来,构成一份完整的数据供用户查询。
下面举例说明一下虚空型数据库服务器的作用。当数据库集群规模包含上百甚至 上千个服务器节点时,任何单一的服务器都没有足够快的处理器和充足的软硬件资源来及 时处理全部工作负载和维护全部的数据。有一些查询请求需要对全部数据进行扫描检索, 这样的查询请求无法由任何一个非满型数据库服务器完成,如果为满足这些查询请求而使 用满型数据库服务器节点,这些满型节点可能会成为整个集群的速度瓶颈。而虚空型数据 库服务器26可以根据集群内节点的情况动态地选择服务器节点,组成一个覆盖集群全部 有效数据分区的星型网络。对需要检索全体数据的特殊查询请求可以经由这种虚空型数 据库服务器来间接访问多个存有实际数据的非满型数据库服务器,最大限度地利用了已有 的集群节点资源。因为这种虚空型数据库服务器不负责维护真正的数据块,却可以借助数 据库集群中的多个节点来提供快速的并行查询处理能力,相比普通数据库复制技术需要购 买昂贵的软硬件设备在某些节点上维持整套数据,使用非满型数据库服务器与虚空型数据 库服务器相结合的分布式并行数据库可控冗余架构可以使用市场上性价比最优的工作站 或个人电脑组成高处理性能和高可靠度的大规模数据集群。在这种星型网络中,涉及大量 数据操作的用户指令分割成多个并行执行的指令,分配到多个独立的服务器节点上同步运 行,以降低在单个服务器节点上的工作负载。
基于图3所示的带有可控冗余构架的分布式数据库并行处理系统可以提供高数 据处理性能和高系统可靠度,下面举一具体示例来说明。假设本实施例的系统包括了 100 台非满型数据库服务器和2台虚空型数据库服务器(不存在满型数据库服务器),这100台 非满型数据库服务器和2台虚空型数据库服务器组成了一个数据库集群,集群中的全部数 据被分作100份。服务器1负责维护数据块1和数据块2,服务器2负责维护数据块2和 数据块3,……,服务器99负责维护数据块99和数据块100,服务器100负责维护数据块 100和数据块1,服务器101和102是虚空型数据库服务器,只负责处理对整体数据的查询 (实际上是将工作负载动态分配到100台非满型数据库服务器)。一方面,在这样的分布式 并行数据库可控冗余架构下,任何一台服务器出现故障都不会影响整个数据库集群的正常工作。在最好的情况下,即使集群中一半的服务器停止工作(例如将所有的偶数号服务器 停机进行硬件升级或系统维护),剩余的服务器仍然可以不间断地提供完整的数据和服务。 另一方面,在这样的分布式并行数据库可控冗余架构下,每台服务器只需要处理原来单台 服务器的2%的写操作负荷,以及原来单台服务器的的只读操作负荷(因为所有数据均 为实时有效数据,对数据的查询操作只需要由任一存储该数据块的服务器处理即可)。与使 用传统的Two Phase Commit协议的普通同步复制技术相比,分布式并行数据库可控冗余架 构不需要在每台服务器上保留整套完整的数据,使得以后对数据库进行写操作的插入、删 除和更新指令都不必在全部节点上都同步执行,这些写操作只需要在保存有相应有效数据 分区的非满型数据库服务器上执行,整个系统的性能不再由某个主服务器限定,消除了数 据库集群的数据处理速度瓶颈。
图4示出了可应用于本实施例的三种服务器节点(满型数据库服务器、非满型数 据库服务器、虚空型数据库服务器)的特征以及有效数据的分布示意。从结构上看,满型数 据库服务器、非满型数据库服务器以及虚空型数据库服务器都包括存储数据库集群中的分 布式数据构架信息的模块、存储数据库集群中非分布式数据的普通数据表的模块、代表数 据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块以及多个数据分区模 块。这些服务器节点的不同之处在于对于满型数据库服务器,所有的数据分区模块都存有 有效数据,每个此类节点内部的数据分区模块所存储的数据组合在一起就能够提供集群正 常工作所需的一套完整数据。对于非满型数据库服务器,部分的数据分区模块存有有效数 据,其余的数据分区模块为空,这些节点内部的数据分区模块所存储的数据合在一起只覆 盖了提供全部服务所需的部分数据(从一个满型数据库服务器删除其中的一个或多个数 据分区模块中的数据就可将其变为非满型数据库服务器)。对于虚空型数据库服务器,所有 的数据分区模块都不存储数据,这些空的数据分区模块与其他服务器节点上存储有效数据 分区保持动态链接。
图5示出了用户及数据库程序员所见的数据视图。虽然系统的整个结构如图3所 示,但就用户以及数据库程序员的视角,他们所看到的系统包括数据库应用程序服务器以 及数据库服务器,数据库服务器中包含存储分布式数据架构的信息的模块、存储非分布式 数据的普通数据表的模块、代表分布式数据的虚拟表及其下属数据分区构架的模块。对于 那些分布式数据,用户及数据库程序员只需按照操作普通表的方式对代表分布式数据的虚 拟表提交操作指令,而不需对其下属的数据分区进行直接的操作,也不需要了解集群内的 实际数据分布情况。
^^mmm^^mmmm^
图6示出了本发明所述的带有可控冗余度的分布式数据库并行处理系统的构造 方法。通过本实施例的这种构造方法,可以将一个普通的数据库系统(例如无数据分区的 单机式数据库服务器)改造成使用本发明的具有可控冗余度的分布式数据库并行处理系 统,下面对这种分布式数据库并行处理系统的构造方法进行详细的描述。
步骤SlO 建立满型数据库服务器。
这个步骤具体由下面的步骤SlOO和步骤S102组成,请同时参见示出了由普通数 据库服务器构造出满型数据库服务器的图7。
步骤SlOO 根据数据库的实际工作负载和数据内容,选定被频繁读写的数据表,将其分割成多个数据块,在这些数据块之上建立一个虚拟表。
步骤S102 通过添加trigger或利用现有数据库分区方式使得所有对数据块(即 数据分区)的访问都通过这个虚拟表来进行,具体的读写操作经由虚拟表传递到底层的数 据块上进行。
当一个数据库服务器上的完整数据按照上述的虚拟表和底层数据块模式分配完 毕后,这个数据库服务器就变成一个满型数据库服务器。
步骤S12 在新服务器节点创建数据分区构架。
将步骤SlO中建立的数据构架,包括非分布式数据表,代表分布式数据的虚拟表 及其下属数据分区构架复制到新的数据库服务器节点上。此时所有的数据分区为空数据分 区。
步骤S14 建立非满型数据库服务器。
这一步骤是由数据库管理员在数据库应用程序服务器上完成。数据库管理员需要 估计系统设计要求或工作负载情况决定新的服务器节点在整个集群中所要担任的角色和 负责分担的工作负载范围,由此而决定其需要存储和维护哪些有效数据分区。在这一过程 完成后,即可开始向新的服务器节点进行数据同步复制。
步骤S15 向新的满型服务器节点或非满型服务器节点同步复制数据。
请具体参见图8所示的从工作节点向新服务器节点复制同步数据。其底层的数据 分区可以由满型数据库服务器或者其他已经获得有效数据的非满型数据库服务器以快速 数据备份方法实现同步。如果一个数据库服务器节点获得了全部的实时数据,就变成了一 个满型数据库服务器。如果一个数据库服务器节点只获得了部分的实时数据,就变成了一 个非满型数据库服务器,这种非满型数据库服务器只处理与其存贮的数据块相关的读写操 作。
在图8中,满型数据库服务器正在向第一个非满型数据库服务器的1号数据分区 模块进行数据同步,而第二个非满型数据库服务器的2号数据分区模块和3号数据分区模 块已经完成了数据同步。
步骤S16 建立虚空型数据库服务器。
当数据库集群规模达到上百甚至上千台时,任何单一的服务器都没有足够快的处 理器和足够多的软硬件资源来及时处理和维护一套完整的数据。在新服务器节点上建立数 据分区构架后,数据库管理员可以选定一些新节点设为虚空型服务器节点。这种情况下,该 节点上所有的分布式数据的分区都必须是空数据分区。在完成必要的数据同步和与其他服 务器节点上的有效数据分区建立链接后(见步骤18),该虚空型数据库服务器节点即可投 入使用。
步骤S18 为新的虚空型服务器节点同步复制数据并建立数据链接。
在新服务器节点上建立数据分区构架后,虚空型数据库服务器节点仍然需要从其 他服务器节点复制除分布式数据以外的所有数据,并在每个数据分区模块上根据数据库集 群中的分布式数据的分布情况建立链接,指向那些存有有效数据分区的数据库节点。
经过上述两个系统实施例的说明,本发明的分布式数据库并行处理系统的优点如 下
一、本发明解决了数据库集群的大规模扩展和提高集群处理性能的问题。
以往的数据库集群技术中,使用普通的分布式数据库会造成数据库集群可靠度随 着服务器节点数目的增加而降低;普通的“主服务器一辅助服务器”异步复制技术会随着工 作负载增加造成在主服务器上为更新辅助服务器节点而浪费更多的资源进而降低数据处 理速度;使用并行处理技术和Two Phase Commit协议的同步复制技术又因为需要在每台服 务器保持全部数据同步更新造成每个节点都会面临随着数据库规模增长而带来的写操作 处理瓶颈。关于写操作瓶颈的讨论请见以下公式。公式1中普通数据库集群的性能加速比 (Sp)由
Sd(NL l 、_ 集群处理能力 _ Lmite + Lreadij^yi v , i^read,^write) 一 丛 4-Π hL -rm 厶κ 一; 777Eq. 1单机处理硓力 Lwnte+Lread IN
N:数据库集群节点数目
Lread:客户端递交的只读负载,这部分负载可以在N个节点间平均分配
Lwite 客户端递交的写指令负载,这部分负载必须在N个节点上都同步执行以保 证各节点上数据的一致。
当数据库集群的节点趋向无穷时,整个集群的理论最大加速比极限值为
Iim Sp = Lwr"e + LreadEq. 2iV—00Τwrite
通常的商用数据库系统中,写操作在总工作负载中所占的比率L ite—般不低于 10%,根据公式2可以看到,使用普通同步复制技术的数据库集群的最大加速比不会超过 10,而且在数据库节点数目超过10之后,添加新的节点对整个集群性能的提高越来越微不 足道。可见,不使用本发明的带有可控冗余构架的分布式并行数据库技术使得数据库集群 都只能局限在个位数到数十个节点的小集群,无法扩展到成百上千台服务器。
本发明通过利用带有可控冗余度的分布式并行数据库构架,利用非满型数据库服 务器和虚空型数据库服务器将分布在多个服务器节点上。增加新的节点会进一步提高整个 数据库集群的可靠度以及数据处理能力,使得数据库集群向大规模扩展成为可能。这种新 的“分布式并行数据库可控冗余构架”可达到的加速比由公式3给出。On^ AT D r T 、— _Lwnp + Lwp + Ltread__4]耿 N,w L-HLwpXR + LreadVNEq. 3
Sp 性能加速比(speedup)
Lwnp 在集群内每个节点都必须执行的写操作负载
Lwp 只需在某个数据分区上执行的写操作负载
Lread 只读查询负载
R 数据分区的冗余度
N:数据库服务器节点数
当数据库集群的节点趋向无穷时,整个集群的理论最大加速比极限值为
Iim Sp = L- + L;p + KadEq. 4^wnp
通过选择合理的数据分区,可以将1^_占整个负载的比例保持在很低的水平。举例说明在一个拥有上百万储户的商业银行使用的数据库服务器上,可以按照账户号码来 分区,不同的账户所对应的信息可以作为分布式数据而被分布在不同的数据分区乃至不同 的服务器节点上,而对诸如存款利率、国际货币汇率、账户管理规则等很少变更且被频繁查 询的数据表可以作为非分布式数据而在每个服务器节点上保持一套完整数据。对这些变更 很少却频繁读取的数据表的零星写操作,即可归为Lwnp类别。可以想象,与每天以百万计的 普通客户的交易信息写操作(属于Lwp类别),变更利率这样Lwnp类别的操作仅占全部负载 的万分之一甚至更低,这就保证了使用“分布式并行数据库可控冗余构架”可以将数据库集 群扩展至成千上万台的超大规模。
二、本发明解决了高数据库处理性能和高可靠度无法同时提高的矛盾
高可靠度多个非满型数据库服务器可分担原来单台服务器的负载,并提供同步 实时可靠度冗余备份,使得在某一节点出现故障时,只要所需有效数据分区还存在于其他 节点上,整个数据库系统即可无间断地继续运行。在常用的“主服务器一辅助服务器”异步 复制中,所有的辅助服务器仅能处理只读操作,其上返回的数据也并非主服务器上的最新 数据,而且主服务器是系统的单点故障源,整个系统的可靠度不会超过主服务器的可靠度。 分布式并行数据库可控冗余构架解决了这个可靠度的难题。因为非满型数据库服务器只负 责对其所存储的数据提供相应的服务,在合理设计数据块分配方案后,每个非满型数据库 服务器上的负载都只有原来单机服务器的一小部分。例如,由100台“非满型服务器”组成 一个数据库集群,数据被分为100份。服务器1负责维护数据块1和数据块2,服务器2负 责维护数据块2和数据块3,……,服务器99负责维护数据块99和数据块100,服务器100 负责维护数据块100和数据块1。在这样的分布式并行数据库可控冗余构架下,任何一台服 务器出现故障都不会影响整个数据库集群的正常工作。在最好的情况下,即使集群中一半 的服务器停止工作(例如将所有的偶数号服务器停机进行硬件升级或系统维护),剩余的 服务器仍然可以不间断地提供服务。
高数据处理性能与普通的“主服务器一辅助服务器”异步复制不同的是使用可 控冗余构架的分布式并行数据库没有一个主服务器来集中处理写操作,所有的读操作和写 操作都可以动态分配到多个服务器上处理,消除了“主服务器一辅助服务器”异步复制技 术中的写操作瓶颈。例如,由100台非满型数据库服务器组成一个数据库集群,数据被分 为100份。服务器1负责维护数据块1和数据块2,服务器2负责维护数据块2和数据块 3,……,服务器99负责维护数据块99和数据块100,服务器100负责维护数据块100和数 据块1。在这样的分布式并行数据库可控冗余构架下,每台服务器只需要处理原来单台服 务器的2%的写操作负荷,以及原来单台服务器的1 %的只读操作负荷(因为所有数据均为 实时数据,对数据的查询操作只需要由任一存储该有效数据分区的服务器处理即可)。与 使用Two Phase Commit协议的普通同步复制技术相比,使用可控冗余构架的分布式并行数 据库集群不需要在每台服务器上保留整套完整的数据,使得任何对数据库进行写操作的插 入、删除和更新指令都不必在全部节点上都同步执行。这些写操作只需要在保存有相应有 效数据分区的非满型数据库服务器上执行。整个系统的性能不再由某个主服务器限定,消 除了数据库集群的数据处理速度瓶颈。
三、本发明解决了集群规模最优化的问题
随着数据库节点的增加,每个节点对整体数据库集群性能提升所带来的边际效应呈递减趋势。考虑到每个节点所需要的软硬件投资和日常维护成本,需要确定整个数据库 集群的最优规模。考虑到不同负载的权重,这个问题可以通过公式5来获得。
权利要求
1.一种分布式数据库并行处理系统,通过动态可控冗余架构将数据库内的数据分布到 由多个服务器节点组成的数据库集群中,该系统包括以下组成部分数据库应用程序服务器,掌握带有动态可控冗余度的分布式数据库集群的架构信息和 数据分布情况,接收用户递交的对数据库的操作指令并按照操作的特征动态选定能够完成 该操作的服务器节点来执行该操作指令;多个服务器节点,该数据库应用程序服务器连接多个服务器节点,该些服务器节点用 于存储实体数据并执行用户递交的对数据库的操作指令,该些服务器节点分为两类第一类服务器节点非满型数据库服务器节点,每个非满型数据库服务器节点只存储 指定的一部分分布式数据,各非满型数据库服务器节点彼此独立工作,不直接与其他非满 型数据库服务器节点交换数据,该非满型数据库服务器节点内包含以下信息模块存储数据库集群中分布式数据架构信息的模块,该些分布式数据架构信息由该数据库 应用程序服务器负责维护;存储数据库集群中非分布式数据的普通数据表的模块;存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,虚拟表本 身不存储数据,每个虚拟表下管理多个数据分区模块,分布式数据的实体数据存储于该些 数据分区模块中,存有分布式数据的分区模块为有效数据分区模块,未存有分布式数据的 分区为空分区模块,非满型数据库服务器节点所属的数据分区模块中至少有一个是空分区 模块,所有对有效数据分区模块内数据的操作指令都由其上的虚拟表来接收并转发至各个 存有实体数据的有效数据分区模块上执行;第二类服务器节点虚空型数据库服务器节点,虚空型服务器节点本身只保存非分布 式数据,不存储任何实体的分布式数据,依赖其他存有分布式数据的服务器节点为其提供 实体数据,每个虚空型数据库服务器节点将各个存有分布式数据的服务器节点动态链接起 来为用户提供一份覆盖全部分布式数据的完整数据集合,该虚空型数据库服务器节点内包 含以下信息模块存储数据库集群中分布式数据架构信息的模块; 存储数据库集群中非分布式数据的普通数据表的模块;存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,该虚拟表 本身不存储数据,每个虚拟表下管理多个数据分区模块,虚空型服务器节点上所有的数据 分区模块均为空模块,不存储实体数据,其下每个数据分区模块与集群中其他存有有效数 据的服务器节点的分区模块保持动态链接,当虚空型数据库服务器节点上的虚拟表接收到 数据操作请求时,虚拟表通过该些动态链接从其他服务器节点获取数据并返回查询结果。
2.根据权利要求1所述的分布式数据库并行处理系统,其特征在于,该服务器节点还 包括第三类服务器节点满型数据库服务器节点,其上存储有全部非分布式数据和一份完 整的分布式数据的数据集,单独提供用户所需的全部数据,满型数据库服务器节点内包括 以下模块存储数据库集群中分布式数据架构信息的模块; 存储数据库集群中非分布式数据的普通数据表的模块;存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,该虚拟表本身不存储数据,每个虚拟表下管理多个数据分区模块,各满型数据库服务器节点下的数 据分区模块均为有效数据分区模块,每个满型服务器节点上的全部有效数据分区模块组成 一套完整的分布式数据以保证该满型数据库服务器节点独立为用户提供完整的数据。
3.根据权利要求1所述的分布式数据库并行处理系统,其特征在于,该数据库应用程 序服务器监控和管理每个服务器节点,把整个数据库集群的最新状态和最近变更记录作为 分布式数据库集群架构的信息保存在每个服务器节点上,在收到用户操作时根据用户操作 的特征将其发往对应的服务器节点如果该用户操作是针对某一数据分区模块的只读操 作,则选择任意一个包含对应有效数据分区模块的服务器节点来执行该只读操作;如果该 用户操作是针对某一数据分区模块的写操作,则将该写操作发往所有存储对应有效数据分 区模块的服务器节点来执行该写操作;如果该用户操作是针对非分布式数据的只读操作, 则可选择任意一个服务器节点来执行该只读操作;如果该用户操作是针对非分布式数据的 写操作,则将该写操作发往所有服务器节点来执行该写操作。
4.根据权利要求1所述的分布式数据库并行处理系统,其特征在于,集群内的虚空型 数据库服务器节点动态链接数据库集群内的非满型数据库服务器节点和满型数据库服务 器节点以组成一个覆盖全部分布式数据的星型网络结构,该星型网络结构将涉及大量数据 操作的用户指令分割成多个并行执行的指令,分配到多个独立的服务器节点上同步运行。
5.根据权利要求2所述的分布式数据库并行处理系统,其特征在于,满型数据库服务 器节点在数据库管理员需要缩减数据库集群规模或者将数据库集群合并至单台服务器时 为用户提供安全的合并方案,或者为在数据库应用程序开发人员在单个服务器节点上开发 针对整个数据库集群的应用程序时提供便利的调试环境。
6.一种分布式数据库并行处理系统,通过动态可控冗余架构将数据库内的数据分布到 由多个服务器节点组成的数据库集群中,该系统包括以下组成部分数据库应用程序服务器,掌握带有动态可控冗余度的分布式数据库集群的架构信息和 数据分布情况,接收用户递交的对数据库的操作指令并按照操作的特征动态选定能够完成 该操作的服务器节点来执行该操作指令;多个服务器节点,该数据库应用程序服务器连接多个服务器节点,该些服务器节点用 于存储实体数据并执行用户递交的对数据库的操作指令,该些服务器节点分为两类第一类服务器节点非满型数据库服务器节点,每个非满型数据库服务器节点只存储 指定的一部分分布式数据,各非满型数据库服务器节点彼此独立工作,不直接与其他非满 型数据库服务器节点交换数据,该非满型数据库服务器节点内包含以下信息模块存储数据库集群中分布式数据架构信息的模块,该些分布式数据架构信息由该数据库 应用程序服务器负责维护;存储数据库集群中非分布式数据的普通数据表的模块;存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,虚拟表本 身不存储数据,每个虚拟表下管理多个数据分区模块,分布式数据的实体数据存储于该些 数据分区模块中,存有分布式数据的分区模块为有效数据分区模块,未存有分布式数据的 分区为空分区模块,非满型数据库服务器节点所属的数据分区模块中至少有一个是空分区 模块,所有对有效数据分区模块内数据的操作指令都由其上的虚拟表来接收并转发至各个 存有实体数据的有效数据分区模块上执行;第二类服务器节点满型数据库服务器节点,其上存储有全部非分布式数据和一份完 整的分布式数据的数据集,单独提供用户所需的全部数据,满型数据库服务器节点内包括 以下模块存储数据库集群中分布式数据架构信息的模块;存储数据库集群中非分布式数据的普通数据表的模块;存储数据库集群中代表分布式数据的虚拟表及其下属数据分区构架的模块,该虚拟表 本身不存储数据,每个虚拟表下管理多个数据分区模块,各满型数据库服务器节点下的数 据分区模块均为有效数据分区模块,每个满型服务器节点上的全部有效数据分区模块组成 一套完整的分布式数据以保证该满型数据库服务器节点独立为用户提供完整的数据。
7.根据权利要求6所述的分布式数据库并行处理系统,其特征在于,该数据库应用程 序服务器监控和管理每个服务器节点,把整个数据库集群的最新状态和最近变更记录作为 分布式数据库集群架构的信息保存在每个服务器节点上,在收到用户操作时根据用户操作 的特征将其发往对应的服务器节点如果该用户操作是针对某一数据分区模块的只读操 作,则选择任意一个包含对应有效数据分区模块的服务器节点来执行该只读操作;如果该 用户操作是针对某一数据分区模块的写操作,则将该写操作发往所有存储对应有效数据分 区模块的服务器节点来执行该写操作;如果该用户操作是针对非分布式数据的只读操作, 则可选择任意一个服务器节点来执行该只读操作;如果该用户操作是针对非分布式数据的 写操作,则将该写操作发往所有服务器节点来执行该写操作。
8.根据权利要求6所述的分布式数据库并行处理系统,其特征在于,满型数据库服务 器节点在数据库管理员需要缩减数据库集群规模或者将数据库集群合并至单台服务器时 为用户提供安全的合并方案,或者为在数据库应用程序开发人员在单个服务器节点上开发 针对整个数据库集群的应用程序时提供便利的调试环境。
全文摘要
本发明公开了分布式数据库并行处理系统,其技术方案为采用分布式并行数据库可控冗余架构,使用不同类型的数据库服务器节点(满型数据库服务器、非满型数据库服务器和虚空型数据库服务器)。数据库集群主要由非满型数据库服务器组成,其上存储数据库集群中的部分数据来分担工作负载,多个非满型服务器通过虚空型数据库服务器组成多份完整的数据集合,虚空型数据库服务器从功能上保证了数据集合的完整。满型数据库服务器也可单独提供数据集合的完整。虚空型数据库服务器选择数据库集群中的服务器节点组成一个覆盖全部数据的星型网络,用于检索数据库集群中的全部数据,将存储于多个数据库服务器节点上的数据分区动态链接起来。
文档编号H04L29/08GK102033889SQ20091019684
公开日2011年4月27日 申请日期2009年9月29日 优先权日2009年9月29日
发明者熊凡凡 申请人:熊凡凡