基于sql的并行计算系统及方法

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

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


图1为中国专利局申请号为200610041548. 6的专利申请的一种加速数据库查询 速度的方法的原理示意图;图2为本发明基于SQL的并行计算系统的一种实施例架构图;图3为本发明基于SQL的并行计算方法的一种实施例流程图;图4为一个大数据量的源数据库示意图。
具体实施例方式本发明的主要思想是将源数据库中的海量数据分割并分配到多个节点数据库,并 以多个独立的节点服务器进行并行计算,从而可以充分发挥多机、多核同时计算的能力,可 以大大提高大数据量数据库的统计或查询效率。本发明的数据查询或统计是建立在SQL指令下的,特别适用于BI (Business Intelligence,商务智能)系统。以下结合附图,具体说明本发明。请参见图2,其为本发明基于SQL的并行计算系统的一种架构图。此系统包括数据 分割服务器14、汇总服务器11、多个节点服务器12和前端展现模块19,数据分割服务器14 与源数据库13相连(源数据库13中存放有大量数据),并与各个节点服务器12通过有线 或无线的方式相连,数据分割服务器14与节点服务器12之间可进行数据传输,且每个节点 服务器12均有独立的运算处理能力。汇总服务器11分别与各个节点服务器12相连。前 端展现模块19与汇总服务器11相连,用来将统计或查询结果形成图形数据或表格数据,以 便于向技术员展现。汇总服务器11又包括主处理器15和临时表存储单元16,每个节点服务器12又包 括节点数据库17和节点处理器18。其中,临时表存储单元16与主处理器15相连,并连接 到各个节点服务器12的节点处理器18,节点处理器18与节点数据库17相连。工作时,数据分割服务器14会将源数据库13中的数据按照一定规则进行分割,然 后将分割后的数据分配到各个节点服务器12的节点数据库17中(优选的方式是按照数据 量最大的分类字段或分类表进行分割,数据量较小的分类字段或分类表不用分割,而直接 复制到各个节点数据库17中)。各个节点处理器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的难度低,且成本投入少。相应于上述基于SQL的并行计算系统,本发明还提出了一种基于SQL的并行计算 方法,用于对源数据库进行统计或查询,请参见图3,其包括以下步骤S301,设置多个节点数据库。S302,将源数据库中的海量数据按照一定规则进行分割,并分配到各个节点数据库。其中可以根据需要来设置分割方式,优选的是按照数据量最大的分类字段或分类 表进行分割,比如客户表。而数据量较小的分类字段或分类表不用分割,直接复制到各个节 点数据库中。S303,对各个节点数据库进行并行查询或统计。其中,各个节点数据库均可以进行 独立的运算,从而每一个节点数据库均可以分担一部份查询或统计任务,并大大提高数据 库的访问效率。S304,将各个节点数据库的查询或统计结果进行汇总,并形成一个临时表。S305,对临时表的信息再次进行查询或统计,并形成最终的结果集。当然,如果节点数据库的数量较少,或者查询或统计的数据量不多,则可以将节点 数据库的查询或统计结果作为最终的结果集。而当节点数据库的数量较多,或者查询或统 计的数据量较大时,则可以将各个节点数据库的查询或统计结果进行汇总,以便于分析。S306,将查询或统计结果形成图形数据或表格数据。下面结合一个具体统计过程来进一步理解本发明,如图4所示,其为一个大数 据量的源数据库示意图。此源数据库包括有四个数据表=Store表、Sales表、Time表和 Product表,数据量分别是40万、1亿、1825和1000。首先要对源数据库的数据进行分割,并分配到各个节点数据库中。由于Store表 和Sales表的数据量比较大,Time表和Product表数据量不大,因此对Store表和Sales 表,按Store字段进行分割,Time表和Product表不分割,直接复制到各个节点数据库。分 割数据时,还可以加上city字段,region字段进行排序,尽量保证一个城市或一个区域的 数据在一个节点数据库或相邻节点数据库上。然后对各个节点数据库的数据进行统计,即对各个节点数据库执行SQL统计指 令。假设要统计各地区各品牌在各年度的销售汇总,则各节点的SQL写法可以如下Select store, region, product, brand,time, year, sum (sales, amount) as amount from sales join store on sales, store = store, store join time on sales, date =time, date join product on sales, product = product, product group by store, region,product, brand, time, year从而从各个节点数据库可以统计出如表1的结果集 ......表 1然后将各节点的结果集导入到临时表,进行汇总后再进行统计,即对导入完成的 临时表再次执行SQL统计指令,SQL写法可以如下Select region, brand, year,sum (amount)as amount from temptabIe group by
6region, brand, year从而可以得到表示源数据库中各地区各品牌在各年度的销售汇总的结果集。最后 将结果集传递给前端展现模块,利用各种展现控件(如表格,图形)展现出来。本发明通过多节点并行运算的方式,将一个大型数据库的运算量分配给多个节点 数据库,从而可以充分发挥多机、多核同时计算的能力,可以极大地提高大数据量数据库的 查询或统计速度。以上公开的仅为本发明的几个具体实施例,但本发明并非局限于此,任何本领域 的技术人员能思之的变化,都应落在本发明的保护范围内。
权利要求
一种基于SQL的并行计算系统,用于对一源数据库进行统计或查询,其特征在于,包括一数据分割服务器,与该源数据库相连,用于将该源数据库中的海量数据按照一定规则进行分割;多个节点服务器,均与该数据分割服务器相连,且每个节点服务器又进一步包括一节点数据库,与该数据分割服务器相连,用于存放经该数据分割服务器分割后分配来的数据;一节点处理器,与该节点数据库相连,用于对该节点数据库中的数据进行查询或统计。
2.如权利要求1所述的基于SQL的并行计算系统,其特征在于,其还包括一汇总服务 器,且该汇总服务器又进一步包括一临时表存储单元,与各个节点服务器相连,用于存放各个节点服务器反馈的查询或 统计结果,并汇总形成一临时表;一主处理器,与该临时表存储单元相连,用于对该临时表的信息进行查询或统计,并形 成最终的结果集。
3.如权利要求2所述的基于SQL的并行计算系统,其特征在于,其还包括一前端展现模 块,与该汇总服务器相连,用于将查询或统计结果形成图形数据或表格数据。
4.一种基于SQL的并行计算方法,用于对一源数据库进行统计或查询,其特征在于,包 括以下步骤设置多个节点数据库;将该源数据库中的海量数据按照一定规则进行分割,并分配到各个节点数据库; 对各个节点数据库进行并行查询或统计;
5.如权利要求4所述的基于SQL的并行计算方法,其特征在于,对各个节点数据库进行 并行查询或统计之后还包括步骤将各个节点数据库的查询或统计结果进行汇总,并形成一临时表; 对该临时表的信息再次进行查询或统计,并形成最终的结果集。
6.如权利要求4所述的基于SQL的并行计算方法,其特征在于,其还包括步骤将查询 或统计结果形成图形数据或表格数据。
7.如权利要求4所述的基于SQL的并行计算方法,其特征在于,对数据进行分割时,按 照数据量最大的分类字段或分类表进行分割。
全文摘要
本发明提出一种基于SQL的并行计算系统和方法,其方法包括以下步骤(1)设置多个节点数据库。(2)将源数据库中的海量数据按照一定规则进行分割,并分配到各个节点数据库。(3)对各个节点数据库进行并行查询或统计。本发明可以大大提高大型数据库的查询或统计速度。
文档编号G06F17/30GK101908075SQ20101025561
公开日2010年12月8日 申请日期2010年8月17日 优先权日2010年8月17日
发明者李晓华 申请人:上海云数信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1