并行计算系统及按查询内容进行负载均衡的方法

文档序号:6607818阅读:177来源:国知局
专利名称:并行计算系统及按查询内容进行负载均衡的方法
技术领域
本发明涉及一种数据库的查询或统计方法,特别涉及一种并行计算系统及按查询 内容进行负载均衡的方法。
背景技术
随着计算机技术的发展和普及,大型数据库迅速地进入到电信、金融等各个行业。 SQL (Structured Query Language,结构化查询语言)是专为数据库而建立的操作命令集, 是一种数据库语言。SQL的主要功能就是同各种数据库建立联系,使不同类型的数据库之间 进行沟通。按照ANSI (美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的 标准语言。在使用SQL时,只需要发出“做什么”的命令,而不需要考虑“怎么做”。SQL语 句可以用来执行对数据库的各种各样的操作,例如更新数据库中的数据,从数据库中提取 数据等。目前,绝大多数流行的关系型数据库管理系统,如QraclhSybashMicrosoft Sql Server, Access等都采用了 SQL语言标准。然而,随着信息化建设的深入,各行各业都建立了大量的数据库,而这些数据库的 数据量也越来越大,限制了对数据库的查询和统计速度。例如在计费系统中,各种业务程序 需要对数据库中的数据进行频繁的查询操作,涉及的数据量非常巨大,访问数据库的频率 很高,由此过多的数据库交互导致计算机程序的性能降低。为了提高数据库的查询和统计速度,最常用的方式是对硬件系统进行优化,例如 中国专利局申请号为200610041548. 6的专利申请,其提出了 一种加速数据库查询速度的 方法,如图1所示,其通过在系统内存中开辟用于存放数据和数据索引的共享内存段,由守 护进程按约定的方式将数据库中的数据和数据索引分别调入相应的共享内存段中供务业 进程调用,同时由守护进程定时或循环对数据库中的记录进行查询,及时将更接的数据内 容记录到上述共享内存段中。这种加速数据库查询速度的方法可以在一定程度上提高数据库的查询速度,减少 对数据库性能的依赖。但是对于海量数据库的查询或统计来说,由于硬件运算速度的限制, 这种方法并不能从根本上解决数据库查询速度慢的问题,而计算机性能的提升,如提高CPU 频率、增加内存、提高磁盘访问速度等,其提升空间有限,且硬件性能的升级需要投入大量 的资金成本。因而如何行之有效地解决大型数据库查询或统计的速率问题,一直是一个需 要解决的问题。

发明内容
本发明的目的是提供一种并行计算系统,以解决大型数据库的查询或统计速度慢 的问题。本发明的另一目的是提供一种按查询内容进行负载均衡的方法,以解决大型数据 库的查询或统计速度慢的问题。本发明提出一种并行计算系统,用于对源数据库进行统计或查询,包括数据分割服务器、多个节点服务器和主服务器。数据分割服务器与源数据库相连,用于将源数据库中 的海量数据按照一定规则进行分割。多个节点服务器均与数据分割服务器相连,且每个节 点服务器又进一步包括节点数据库和节点处理器。节点数据库与数据分割服务器相连,用 于存放经数据分割服务器分割后分配来的数据。节点处理器与节点数据库相连,用于对节 点数据库中的数据进行查询或统计。主服务器分别与数据分割服务器及所有的节点服务器 相连,且主服务器又进一步包括节点索引存储单元和线程分配单元。节点索引存储单元与 数据分割服务器相连,用于存放表示各个节点服务器所分配到的数据内容的索引信息。线 程分配单元与节点索引存储单元相连,用于对查询或统计参数的解析,并结合各个节点服 务器的该索引信息,分配各个节点服务器的查询或统计任务。依照本发明较佳实施例所述的并行计算系统,主服务器还包括简化单元,其与节 点索引存储单元相连,用于根据分割规则,对索引信息进行简化。依照本发明较佳实施例所述的并行计算系统,主服务器还包括临时表存储单元和 主处理器。临时表存储单元与各个节点服务器相连,用于存放各个节点服务器反馈的查询 或统计结果,并汇总形成临时表。主处理器与临时表存储单元相连,用于对临时表的信息进 行查询或统计,并形成最终的结果集。依照本发明较佳实施例所述的并行计算系统,其还包括前端展现模块,与主服务 器相连,用于将查询或统计结果形成图形数据或表格数据。本发明另提出一种按查询内容进行负载均衡的方法,用于对源数据库进行统计或 查询,包括以下步骤(1)设置多个节点数据库。(2)将源数据库中的海量数据按照一定规 则进行分割,并分配到各个节点数据库。(3)根据分割规则,形成表示各个节点数据库所分 配到的数据内容的索引信息。(4)对查询或统计参数进行解析,并结合索引信息,分配各个 节点数据库的查询或统计任务。(5)对各个节点数据库进行并行查询或统计。依照本发明较佳实施例所述的按查询内容进行负载均衡的方法,在形成该索引信 息之后还进一步包括步骤根据分割规则,对索引信息进行简化。依照本发明较佳实施例所述的按查询内容进行负载均衡的方法,对各个节点数据 库进行并行查询或统计之后还包括步骤(1)将各个节点数据库的查询或统计结果进行汇 总,并形成临时表。(2)对临时表的信息再次进行查询或统计,并形成最终的结果集。依照本发明较佳实施例所述的按查询内容进行负载均衡的方法,其还包括步骤 将查询或统计结果形成图形数据或表格数据。依照本发明较佳实施例所述的按查询内容进行负载均衡的方法,对数据进行分割 时,按照数据量最大的分类字段或分类表进行分割。相对于现有技术,本发明具有以下优点1、本发明通过多节点并行运算的方式,将一个大型数据库的运算量分配给多个节 点数据库,从而可以充分发挥多机、多核同时计算的能力,可以极大地提高大数据量数据库 的查询或统计速度,相对于优化硬件配置的方式,本发明不会受到提升空间的限制,查询或 统计速率可以提高10倍、100倍甚至1000倍。2、本发明利用对查询的内容进行负载均衡,对每个查询,先提前判断该查询可能 要访问的节点,可以大大减少不必要的并行计算。(比如查询条件中有过滤条件,如果所有 节点都查,那么绝大部分查询都是空查询,减少后可能只要对某一个或某几个节点执行查询就可以了)使用本发明,在同样的硬件条件下,可以成倍甚至几十倍的提高整个系统的 并发访问能力。3、本发明所采用的节点服务器可以是普通的PC机,相对于主服务器硬件配置的 优化所需要的成本,在提升相同的查询或统计速率的前提下,增加节点服务器势必需要更 少的投入成本。4、本发明不依赖于专门的硬件和网络,普通的PC机和千兆网络甚至百兆网络就 可以实现。与其它需要昂贵服务器(小型机)、专用通讯通道的方案相比,本发明具有很高 的性价比。


图1为中国专利局申请号为200610041548. 6的专利申请的一种加速数据库查询 速度的方法的原理示意图;图2为本发明并行计算系统的一种实施例架构图;图3为本发明按查询内容进行负载均衡的方法的一种实施例流程图;图4为一个大数据量的主数据库示意图;图5为本发明一种查询或统计的线程分配示意图。
具体实施例方式本发明的主要思想是将源数据库中的海量数据分割并分配到多个节点数据库,并 以多个独立的节点服务器进行并行计算,从而可以充分发挥多机、多核同时计算的能力。另 外,本发明对查询内容进行负载均衡,并根据各节点服务器的索引信息分配查询和统计任 务,可以大大提高大数据量数据库的统计或查询效率。本发明的数据查询或统计是建立在SQL指令下的,特别适用于BI (Business Intelligence,商务智能)系统。以下结合附图,具体说明本发明。请参见图2,其为本发明并行计算系统的一种架构图。此系统包括数据分割服务器 14、主服务器11、多个节点服务器12和前端展现模块19,数据分割服务器14与源数据库13 相连(源数据库13中存放有大量数据),并与各个节点服务器12通过有线或无线的方式相 连,数据分割服务器14与节点服务器12之间可进行数据传输,且每个节点服务器12均有 独立的运算处理能力。主服务器11分别与数据分割服务器14及各个节点服务器12相连。 前端展现模块19与主服务器11相连,用来将统计或查询结果形成图形数据或表格数据,以 便于向技术员展现。主服务器11又包括节点索引存储单元20、线程分配单元21、简化单元22、主处理 器15和临时表存储单元16。其中,节点索引存储单元20分别与数据分割服务器14、简化 单元22及线程分配单元21相连。线程分配单元21与各个节点服务器12相连。临时表存 储单元16与主处理器15相连,并连接到各个节点服务器12的节点处理器18,节点处理器 18与节点数据库17相连。工作时,数据分割服务器14会将源数据库13中的数据按照一定规则进行分割,然 后将分割后的数据分配到各个节点服务器12的节点数据库17中(优选的方式是按照数据 量最大的分类字段或分类表进行分割,数据量较小的分类字段或分类表不用分割,而直接复制到各个节点数据库17中)。同时,在分割数据的时候,可以得到关于数据内容和节点服 务器12的关系信息,即表示各个节点服务器12所分配到的数据内容的索引信息,并存放在 节点索引存储单元20中。而线程分配单元21会根据对查询或统计参数的解析,并结合节点 索引存储单元20中的索引信息,分配各个节点服务器12的查询或统计任务,从而找出每个 特定查询或统计所对应的特定节点,从而避免所有的查询或统计都要访问所有节点,有效 地减少了系统的压力,合理地分配了资源,极大地提高了系统应对并发查询或统计的能力。值得注意的是,在分割数据时,如果数据内容与节点服务器12的对应信息的数据 量不大,可以直接作为索引信息。而如果数据内容与节点服务器12的对应信息的数据量比 较大,则可能造成解析耗时过长,因而可以利用简化单元22对索引信息进行简化,以提高 线程分配单元21的解析效率。各个节点处理器18则会根据分配到的查询或统计任务,对 节点数据库17中的数据分别进行查询或统计,并反馈给主服务器11。如果主服务器11接 收到的结果集数据量不大,或者节点服务器12的数量不多(例如两个或三个节点服务器 12),则主服务器11可以直接将节点服务器12的查询或统计结果传输给前端展现模块19。 而如果节点服务器12的数量较多,或者节点服务器12向主服务器11返回的数据量较大, 则可以将查询或统计结果复制到临时表存储单元16中,并由临时表存储单元16汇总生成 一个临时表。然后由主处理器15再次对这个临时表进行查询或统计,形成最终的结果集后 传输给前端展现模块19。前端展现模块19将接收到的数据生成图形、表格等形式,并与技 术员实现交互。本发明的系统利用多个独立的节点服务器12实现并行计算,充分利用每一个节 点服务器12的运算能力,大大提高查询或统计效率。而节点服务器12的数量可以根据需 要相应地增加或减少,且每增加一个节点服务器12也就意味着系统整体性能的成倍增加, 数据分小之后,每个节点的运算量减小,总的运算量也会减小,使系统的查询、统计速度可 以提高10倍、100倍甚至1000倍。相对于传统的提高cpu,内存,硬盘频率(转速)等硬件 配置,增加节点服务器12的难度低,且成本投入少。并且,本发明根据对查询或统计进行解 析,并结合数据分割时的索引信息,可以确定查询或统计内容所在的节点服务器,从而针对 特定的节点产生访问线程,大大减少了不必要的并行计算,可以更合理地分配系统资源,提 高系统的查询或统计能力。相应于上述并行计算系统,本发明还提出了一种按查询内容进行负载均衡的方 法,用于对源数据库进行统计或查询,请参见图3,其包括以下步骤S301,设置多个节点数据库。S302,将源数据库中的海量数据按照一定规则进行分割,并分配到各个节点数据库。其中可以根据需要来设置分割方式,优选的是按照数据量最大的分类字段或分类 表进行分割,比如客户表。而数据量较小的分类字段或分类表不用分割,直接复制到各个节 点数据库中。S303,根据分割规则,形成表示各个节点数据库所分配到的数据内容的索引信息。S304,根据分割规则,对索引信息进行简化。S305,对查询或统计参数进行解析,并结合索引信息,分配各个节点数据库的查询 或统计任务。
7
S306,对各个节点数据库进行并行查询或统计。其中,各个节点数据库均可以进行 独立的运算,从而每一个节点数据库均可以分担一部份查询或统计任务,并大大提高数据 库的访问效率。S307,将各个节点数据库的查询或统计结果进行汇总,并形成一个临时表。S308,对临时表的信息再次进行查询或统计,并形成最终的结果集。当然,如果节点数据库的数量较少,或者查询或统计的数据量不多,则可以将节点 数据库的查询或统计结果作为最终的结果集。而当节点数据库的数量较多,或者查询或统 计的数据量较大时,则可以将各个节点数据库的查询或统计结果进行汇总,以便于分析。S309,将查询或统计结果形成图形数据或表格数据。下面结合一个具体统计过程来进一步理解本发明,如图4所示,其为一个大数 据量的源数据库示意图。此源数据库包括有四个数据表=Store表、Sales表、Time表和 Product表,数据量分别是40万、1亿、1825和1000。首先要对源数据库的数据进行分割,并分配到各个节点数据库中。由于Store表 和Sales表的数据量比较大,Time表和Product表数据量不大,因此对Store表和Sales 表,按Store字段进行分割,Time表和Product表不分割,直接复制到各个节点数据库。分 割数据时,还可以加上city字段,region字段进行排序,尽量保证一个城市或一个区域的 数据在一个节点数据库或相邻节点数据库上。接着根据分割规则形成索引信息。假设这里是按照Store名称进行分割的,则形 成Store名称与节点服务器的对应信息。为了便于说明,现将Store名称划分为Storel、 Store2、Store3...,则索引信息可以以表1来表示
节点服务器Store名称NlStorelN2Store2N3Store3...表 1而如果索引信息的数据量较大时(例如Store的具体名称过长,或者Store数量 较多),可以对索引信息进行简化处理。例如可以产生一张上层分类汇总字段的对应表,如 表2所示
节点服务器Store名称Store名称的上层字段NlStorelA
8 ......表2其中,表2中的上层字段用字母A、B、B来分别表示Store名称,除此之外,上层字 段也可以采用Store名称的缩写、特定的符号等,其作用为简化搜索、减少解析的时间。当用户要访问数据库时,对其查询或统计参数进行解析,并结合索引信息,分配各 个节点数据库的查询或统计任务。这里所述的查询或统计参数可以是查询内容、用户权限 等。例如,当用户需要查询Storel和Store2的相关数据时,由于Storel和Store2的数据 是分别被分割到W和N2两个节点上了,因此根据索引信息,系统会在产生m和N2两个节 点上产生两个线程进行并行运算,而不会在N3节点上产生线程(请参见图5),这样当同时 有许多用户访问数据库时,便会大大减小系统的运算量。当然,如果某用户为Storel的负 责人,而其只能有查询Storel相关数据的权限时,即使该用户的查询内容包括Storel和 Store2,系统会取查询内容和用户权限的交集(即解析过程),从而只在m节点上产生一个 线程。分配了线程任务以后,要对各个节点数据库的数据进行查询或统计,即对各个节 点数据库执行SQL指令。然后将各节点的结果集导入到临时表,进行汇总后再进行查询或 统计,即对导入完成的临时表再次执行SQL指令,从而可以得到最终的结果集。最后将结果 集传递给前端展现模块,利用各种展现控件(如表格,图形)展现出来。本发明通过多节点并行运算的方式,将一个大型数据库的运算量分配给多个节点 数据库,从而可以充分发挥多机、多核同时计算的能力,并根据查询参数以及索引信息对运 算线程进行合理地分配,可以极大地提高大数据量数据库的查询或统计速度。以上公开的仅为本发明的几个具体实施例,但本发明并非局限于此,任何本领域 的技术人员能思之的变化,都应落在本发明的保护范围内。
权利要求
一种并行计算系统,用于对一源数据库进行统计或查询,其特征在于,包括一数据分割服务器,与该源数据库相连,用于将该源数据库中的海量数据按照一定规则进行分割;多个节点服务器,均与该数据分割服务器相连,且每个节点服务器又进一步包括一节点数据库,与该数据分割服务器相连,用于存放经该数据分割服务器分割后分配来的数据;一节点处理器,与该节点数据库相连,用于对该节点数据库中的数据进行查询或统计;一主服务器,分别与该数据分割服务器及所有的节点服务器相连,且该主服务器又进一步包括一节点索引存储单元,与该数据分割服务器相连,用于存放表示各个节点服务器所分配到的数据内容的一索引信息;一线程分配单元,与该节点索引存储单元相连,用于对查询或统计参数的解析,并结合各个节点服务器的该索引信息,分配各个节点服务器的查询或统计任务。
2.如权利要求1所述的并行计算系统,其特征在于,该主服务器还包括一简化单元,其 与该节点索引存储单元相连,用于根据分割规则,对该索引信息进行简化。
3.如权利要求1所述的并行计算系统,其特征在于,该主服务器还包括一临时表存储单元,与各个节点服务器相连,用于存放各个节点服务器反馈的查询或 统计结果,并汇总形成一临时表;一主处理器,与该临时表存储单元相连,用于对该临时表的信息进行查询或统计,并形 成最终的结果集。
4.如权利要求1所述的并行计算系统,其特征在于,其还包括一前端展现模块,与该主 服务器相连,用于将查询或统计结果形成图形数据或表格数据。
5.一种按查询内容进行负载均衡的方法,用于对一源数据库进行统计或查询,其特征 在于,包括以下步骤设置多个节点数据库;将该源数据库中的海量数据按照一定规则进行分割,并分配到各个节点数据库;根据分割规则,形成表示各个节点数据库所分配到的数据内容的一索引信息;对查询或统计参数进行解析,并结合该索引信息,分配各个节点数据库的查询或统计 任务;对各个节点数据库进行并行查询或统计。
6.如权利要求5所述的按查询内容进行负载均衡的方法,其特征在于,在形成该索引 信息之后还进一步包括步骤根据分割规则,对该索引信息进行简化。
7.如权利要求5所述的按查询内容进行负载均衡的方法,其特征在于,对各个节点数 据库进行并行查询或统计之后还包括步骤将各个节点数据库的查询或统计结果进行汇总,并形成一临时表;对该临时表的信息再次进行查询或统计,并形成最终的结果集。
8.如权利要求5所述的按查询内容进行负载均衡的方法,其特征在于,其还包括步骤 将查询或统计结果形成图形数据或表格数据。
9.如权利要求5所述的按查询内容进行负载均衡的方法,其特征在于,对数据进行分 割时,按照数据量最大的分类字段或分类表进行分割。
全文摘要
本发明另提出一种并行计算系统及按查询内容进行负载均衡的方法,其方法包括以下步骤(1)设置多个节点数据库。(2)将主数据库中的海量数据按照一定规则进行分割,并分配到各个节点数据库。(3)根据分割规则,形成表示各个节点数据库所分配到的数据内容的索引信息。(4)对查询或统计参数进行解析,并结合索引信息,分配各个节点数据库的查询或统计任务。(5)对各个节点数据库进行并行查询或统计。本发明可以大大提高大型数据库的查询或统计速度。
文档编号G06F17/30GK101916280SQ20101025562
公开日2010年12月15日 申请日期2010年8月17日 优先权日2010年8月17日
发明者李晓华 申请人:上海云数信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1