CN101916281B - 并行计算系统及去重计数方法 - Google Patents
并行计算系统及去重计数方法 Download PDFInfo
- Publication number
- CN101916281B CN101916281B CN 201010255635 CN201010255635A CN101916281B CN 101916281 B CN101916281 B CN 101916281B CN 201010255635 CN201010255635 CN 201010255635 CN 201010255635 A CN201010255635 A CN 201010255635A CN 101916281 B CN101916281 B CN 101916281B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- statistics
- server
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明另提出一种并行计算系统及方法,其方法包括以下步骤:(1)设置多个节点数据库。(2)将源数据库中的海量数据按照关键字段进行分割,并分配到各个节点数据库。(3)判断统计内容是否是被分割的关键字段。(4)若是,则对关键字段进行非重复的计数运算。(5)若不是,对非关键字段进行分组统计运算。本发明可以大大提高大型数据库的统计速度,并可以确保数据统计的准确性。
Description
技术领域
本发明涉及一种数据库的统计方法,特别涉及一种并行计算系统及去重计数方法。
背景技术
随着计算机技术的发展和普及,大型数据库迅速地进入到电信、金融等各个行业。SQL(Structured Query Language,结构化查询语言)是专为数据库而建立的操作命令集,是一种数据库语言。SQL的主要功能就是同各种数据库建立联系,使不同类型的数据库之间进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。在使用SQL时,只需要发出“做什么”的命令,而不需要考虑“怎么做”。SQL语句可以用来执行对数据库的各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Qracle,Sybase,Microsoft Sql Server,Access等都采用了SQL语言标准。
然而,随着信息化建设的深入,各行各业都建立了大量的数据库,而这些数据库的数据量也越来越大,限制了对数据库的统计速度。为了提高数据库的统计速度,最常用的方式是对硬件系统进行优化,提升的计算机性能,如提高CPU频率、增加内存、提高磁盘访问速度等,然而其提升空间有限,且硬件性能的升级需要投入大量的资金成本。因而如何行之有效地解决大型数据库统计的速率问题,一直是一个需要解决的问题。
发明内容
本发明的目的是提供一种并行计算系统,以解决大型数据库的统计速度慢的问题。
本发明的另一目的是提供一种去重计数方法,以解决大型数据库的统计速度慢的问题。
本发明提出一种并行计算系统,用于对源数据库进行统计,包括数据分割服务器和多个节点服务器。数据分割服务器与源数据库相连,用于将源数据库中的海量数据按照关键字段进行分割。多个节点服务器均与数据分割服务器相连,且每个节点服务器又进一步包括节点数据库、解析单元、计数统计单元和分组统计单元。节点数据库与数据分割服务器相连,用于存放分割后的数据。解析单元用于判断统计内容是否是被分割的关键字段。计数统计单元分别与节点数据库及解析单元相连,用于对关键字段进行非重复的计数运算。分组统计单元分别与节点数据库及解析单元相连,用于对非关键字段进行分组统计运算。
依照本发明较佳实施例所述的并行计算系统,其还包括汇总服务器,且汇总服务器又进一步包括临时表存储单元和主处理器。临时表存储单元与各个节点服务器相连,用于存放各个节点服务器反馈的统计结果,并汇总形成临时表。主处理器与临时表存储单元相连,用于对临时表中的关键字段数据进行求和运算,以及对临时表中的非关键字段数据进行非重复的计数运算,并形成最终的结果集。
依照本发明较佳实施例所述的并行计算系统,其还包括前端展现模块,与汇总服务器相连,用于将统计结果形成图形数据或表格数据。
本发明另提出一种去重计数方法,用于对源数据库进行统计,包括以下步骤:(1)设置多个节点数据库。(2)将源数据库中的海量数据按照关键字段进行分割,并分配到各个节点数据库。(3)判断统计内容是否是被分割的关键字段。(4)若是,则对关键字段进行非重复的计数运算。(5)若不是,对非关键字段进行分组统计运算。
依照本发明较佳实施例所述的去重计数方法,对各个节点数据库进行并行统计之后还包括步骤:(1)将各个节点数据库的统计结果进行汇总,并形成临时表。(2)对临时表中的关键字段数据进行求和运算。(3)对临时表中的非关键字段数据进行非重复的计数运算,并形成最终的结果集。
依照本发明较佳实施例所述的去重计数方法,其还包括步骤:将统计结果形成图形数据或表格数据。
依照本发明较佳实施例所述的去重计数方法,对数据进行分割时,按照数据量最大的分类字段进行分割。
相对于现有技术,本发明具有以下优点:
1、本发明通过多节点并行运算的方式,将一个大型数据库的运算量分配给多个节点数据库,从而可以充分发挥多机、多核同时计算的能力,可以极大地提高大数据量数据库的统计速度,相对于优化硬件配置的方式,本发明不会受到提升空间的限制,统计速率可以提高10倍、100倍甚至1000倍。
2、本发明根据对统计内容是否为分割关键字段的判断来决定统计方式,有效避免了数据被多次统计而出现的错误。
3、本发明所采用的节点服务器可以是普通的PC机,相对于主服务器硬件配置的优化所需要的成本,在提升相同的统计速率的前提下,增加节点服务器势必需要更少的投入成本。
4、本发明不依赖于专门的硬件和网络,普通的PC机和千兆网络甚至百兆网络就可以实现。与其它需要昂贵服务器(小型机)、专用通讯通道的方案相比,本发明具有很高的性价比。
附图说明
图1为本发明并行计算系统的一种实施例架构图;
图2为本发明去重计数方法的一种实施例流程图。
具体实施方式
本发明的主要思想是将源数据库中的海量数据分割并分配到多个节点数据库,并以多个独立的节点服务器进行并行计算,从而可以充分发挥多机、多核同时计算的能力。另外,本发明根据对统计内容是否为分割关键字段的判断来决定统计方式,有效避免了数据被多次统计而出现的错误。
本发明的数据统计是建立在SQL指令下的,特别适用于BI(BusinessIntelligence,商务智能)系统。以下结合附图,具体说明本发明。
请参见图1,其为本发明并行计算系统的一种架构图。此系统包括数据分割服务器14、汇总服务器11、多个节点服务器12和前端展现模块19,数据分割服务器14与源数据库13相连(源数据库13中存放有大量数据),并与各个节点服务器12通过有线或无线的方式相连,数据分割服务器14与节点服务器12之间可进行数据传输,且每个节点服务器12均有独立的运算处理能力。汇总服务器11分别与各个节点服务器12相连。前端展现模块19与汇总服务器11相连,用来将统计结果形成图形数据或表格数据,以便于向技术员展现。
汇总服务器11又包括主处理器15和临时表存储单元16,临时表存储单元16与主处理器15相连,并连接到各个节点服务器12。每个节点服务器12又包括节点数据库17、计数统计单元21、分组统计单元22和解析单元23。节点数据库17与数据分割服务器14相连,用于存放分割后的数据。解析单元23用于判断统计内容是否是被分割的关键字段。计数统计单元21分别与节点数据库17及解析单元23相连,用于对关键字段进行非重复的计数运算。分组统计单元22分别与节点数据库17及解析单元23相连,用于对非关键字段进行分组统计运算。
工作时,数据分割服务器14会将源数据库13中的数据按照一定规则进行分割,然后将分割后的数据分配到各个节点服务器12的节点数据库17中(优选的方式是按照数据量最大的分类字段或分类表进行分割,数据量较小的分类字段或分类表不用分割,而直接复制到各个节点数据库17中)。
各个节点服务器12会根据技术员的设定对节点数据库17中的数据分别进行统计,并反馈给汇总服务器11。值得注意的是,对于某个字段的统计而言,某个值可能在一个节点服务器12上,也可能在多个节点服务器12上,而如果在每个节点服务器12上进行比较运算,最后在汇总服务器11上进行汇总统计,那么数据就可能被多次统计,造成错误。因而本发明会在每个节点服务器12进行统计开始时,先由解析单元23来判断统计内容中是否存在被分割的关键字段,如果统计内容中有关键字段,则通过计数统计单元21对关键字段进行非重复的计数运算(即同一个字段只累加一次),而同时通过分组统计单元22对其它的非关键字段进行分组统计运算(即对每一个非关键字段进行单独统计)。最后将统计结果发送给汇总服务器11进行汇总。
如果汇总服务器11接收到的结果集数据量不大,或者节点服务器12的数量不多(例如两个或三个节点服务器12),则汇总服务器11可以直接将节点服务器12的统计结果传输给前端展现模块19。而如果节点服务器12的数量较多,或者节点服务器12向汇总服务器11返回的数据量较大,则可以将统计结果复制到临时表存储单元16中,并由临时表存储单元16汇总生成一个临时表。然后由主处理器15再次对这个临时表进行统计,这里主处理器15会对临时表中的关键字段数据进行求和运算,同时对临时表中的非关键字段数据进行非重复的计数运算,并形成最终的结果集后传输给前端展现模块19。前端展现模块19将接收到的数据生成图形、表格等形式,并与技术员实现交互。
本发明的系统利用多个独立的节点服务器12实现并行计算,充分利用每一个节点服务器12的运算能力,大大提高统计效率。而节点服务器12的数量可以根据需要相应地增加或减少,且每增加一个节点服务器12也就意味着系统整体性能的成倍增加,数据分小之后,每个节点的运算量减小,总的运算量也会减小,使系统的统计速度可以提高10倍、100倍甚至1000倍。相对于传统的提高cpu,内存,硬盘频率(转速)等硬件配置,增加节点服务器12的难度低,且成本投入少。并且,根据对统计内容是否为分割关键字段的判断来决定统计方式,有效避免了数据被多次统计而出现的错误。
相应于上述负载均衡的并行计算系统,本发明还提出了一种去重计数方法,用于对源数据库进行统计,请参见图2,其包括以下步骤:
S201,设置多个节点数据库。
S202,将源数据库中的海量数据按照一定规则进行分割,并分配到各个节点数据库。
其中可以根据需要来设置分割方式,优选的是按照数据量最大的分类字段或分类表进行分割,比如客户表。
S203,判断统计内容是否是被分割的关键字段。
S204,若是,则对关键字段进行非重复的计数运算。
S205,若不是,对非关键字段进行分组统计运算。
其中,各个节点数据库均可以进行独立的运算,从而每一个节点数据库均可以分担一部份统计任务,并大大提高数据库的访问效率。
S206,将各个节点数据库的统计结果进行汇总,并形成一个临时表。
S207,对临时表的信息再次进行统计,并形成最终的结果集。统计时,对临时表中的关键字段数据进行求和运算,同时对临时表中的非关键字段数据进行非重复的计数运算。
当然,如果节点数据库的数量较少,或者统计的数据量不多,则可以将节点数据库的统计结果作为最终的结果集。而当节点数据库的数量较多,或者统计的数据量较大时,则可以将各个节点数据库的统计结果进行汇总,以便于分析。
S208,将统计结果形成图形数据或表格数据。
下面结合一个简单的统计过程来进一步理解本发明,假设表1为一个源数据库中的数据:
Region | Rep | Customer |
地区1 | Rep1 | 客户1 |
地区1 | Rep1 | 客户2 |
地区2 | Rep1 | 客户3 |
地区2 | Rep1 | 客户4 |
地区2 | Rep2 | 客户5 |
表1
假设现在要统计各地区的销售人数和客户数。首先要对源数据库的数据进行分割,并分配到各个节点数据库中。如果以Customer作为分割的关键字,并且将客户1、客户2、客户3的相关数据分配到节点数据库N1中,而客户4、客户5的相关数据分配到节点数据库N2中,则分割到N1和N2中的数据可以分别以表2和表3来表示:
Region | Rep | Customer |
地区1 | Rep1 | 客户1 |
地区1 | Rep1 | 客户2 |
地区2 | Rep1 | 客户3 |
表2
Region | Rep | Customer |
地区2 | Rep1 | 客户4 |
地区2 | Rep2 | 客户5 |
表3
而这里如果按照传统方式对N1和N2中的销售人数和客户数分别进行统计,则对N1和N2可以分别得到表4和表5的统计结果:
Rep | Customer | |
地区1 | 1 | 2 |
地区2 | 1 | 1 |
表4
Rep | Customer | |
地区2 | 2 | 2 |
表5
将两个节点数据库N1和N2的统计结果汇总后可以得到表6的结果:
Rep | Customer | |
地区1 | 1 | 2 |
地区2 | 3 | 3 |
表6
由表6可知,地区1有1名销售人员和2个客户,地区2有3名销售人员和3名客户。但是结合表1(即源数据库)可以清楚看到,地区2实际上只有2名销售人员,其统计过程出现了错误。而其错误原因就是因为Rep1同时出现在了N1和N2上。
为了解决这个问题,本发明采用对统计内容进行分类的方式,判断出哪些是关键字段,哪些是非关键字段,并在节点数据库中对关键字段采用非重复的计数运算,同时对非关键字段进行分组统计运算。在上述例子中,Customer为关键字段,Rep为非关键字段,因而对节点数据库N1和N2的数据(即表2和表3)并行统计后可以得到表7、表8的结果:
Rep | Customer | |
地区1 | Rep1 | 2 |
地区2 | Rep1 | 1 |
表7
Rep | Customer | |
地区2 | Rep1 | 1 |
地区2 | Rep2 | 1 |
表8
然后将各节点的统计结果集导入到临时表,进行汇总后再进行统计。对临时表中的汇总数据进行统计时,对临时表中的关键字段数据进行求和运算,同时对临时表中的非关键字段数据进行非重复的计数运算,从而可以得到最终的结果集表9:
Rep | Customer | |
地区1 | 1 | 2 |
地区2 | 2 | 3 |
表9
最后将结果利用各种展现控件(如表格,图形)展现出来。当然,上述仅为一个极为简单的例子,在实际运用中,源数据库的数据量是海量的,但只要在其统计过程中遵循本发明的统计方法,便可以有效避免错误的发送。
本发明通过多节点并行运算的方式,将一个大型数据库的运算量分配给多个节点数据库,从而可以充分发挥多机、多核同时计算的能力,并根据分割关键字来决定统计方式,不仅可以极大地提高大数据量数据库的统计速度,又可以有效防止统计错误的发送。
以上公开的仅为本发明的几个具体实施例,但本发明并非局限于此,任何本领域的技术人员能思之的变化,都应落在本发明的保护范围内。
Claims (5)
1.一种并行计算系统,用于对一源数据库进行统计,其特征在于,包括:
一数据分割服务器,与该源数据库相连,用于将该源数据库中的海量数据按照关键字段进行分割;
多个节点服务器,均与该数据分割服务器相连,且每个节点服务器又进一步包括:
一节点数据库,与该数据分割服务器相连,用于存放分割后的数据;
一解析单元,用于判断统计内容是否是被分割的关键字段;
一计数统计单元,分别与该节点数据库及该解析单元相连,用于对关键字段进行非重复的计数运算;
一分组统计单元,分别与该节点数据库及该解析单元相连,用于对非关键字段进行分组统计运算;
一汇总服务器,且该汇总服务器又进一步包括:
一临时表存储单元,与各个节点服务器相连,用于存放各个节点服务器反馈的统计结果,并汇总形成一临时表;
一主处理单元,与该临时表存储单元相连,用于对该临时表中的关键字段数据进行求和运算,以及对该临时表中的非关键字段数据进行非重复的计数运算,并形成最终的结果集。
2.如权利要求1所述的并行计算系统,其特征在于,其还包括一前端展现模块,与该汇总服务器相连,用于将统计结果形成图形数据或表格数据。
3.一种去重计数方法,用于对一源数据库进行统计,其特征在于,包括以下步骤:
设置多个节点数据库;
将该源数据库中的海量数据按照关键字段进行分割,并分配到各个节点数据库;
判断统计内容是否是被分割的关键字段;
若是,则对关键字段进行非重复的计数运算;
若不是,对非关键字段进行分组统计运算;
将各个节点数据库的统计结果进行汇总,并形成一临时表;
对该临时表中的关键字段数据进行求和运算;
对该临时表中的非关键字段数据进行非重复的计数运算,并形成最终的结果集。
4.如权利要求3所述的去重计数方法,其特征在于,其还包括步骤:将统计结果形成图形数据或表格数据。
5.如权利要求3所述的去重计数方法,其特征在于,对数据进行分割时,按照数据量最大的分类字段进行分割。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010255635 CN101916281B (zh) | 2010-08-17 | 2010-08-17 | 并行计算系统及去重计数方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010255635 CN101916281B (zh) | 2010-08-17 | 2010-08-17 | 并行计算系统及去重计数方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101916281A CN101916281A (zh) | 2010-12-15 |
CN101916281B true CN101916281B (zh) | 2012-12-19 |
Family
ID=43323793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010255635 Expired - Fee Related CN101916281B (zh) | 2010-08-17 | 2010-08-17 | 并行计算系统及去重计数方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101916281B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593224A (zh) * | 2012-08-13 | 2014-02-19 | 鸿富锦精密工业(深圳)有限公司 | 虚拟机资源配置系统及方法 |
CN105989022B (zh) * | 2015-01-30 | 2019-09-13 | 北京陌陌信息技术有限公司 | 数据排重方法及系统 |
CN106339432A (zh) * | 2016-08-19 | 2017-01-18 | 上海巨数信息科技有限公司 | 一种按查询内容进行负载均衡的系统及其方法 |
CN108021597B (zh) * | 2016-10-28 | 2022-02-08 | 阿里巴巴集团控股有限公司 | 一种并行计数器、服务器和一种计数方法 |
CN110019355A (zh) * | 2017-09-27 | 2019-07-16 | 北京国双科技有限公司 | 独立数据计算方法及装置 |
CN109828968B (zh) * | 2019-02-19 | 2021-12-21 | 广州虎牙信息科技有限公司 | 一种数据去重处理方法、装置、设备、集群及存储介质 |
CN110598056A (zh) * | 2019-08-27 | 2019-12-20 | 阿里巴巴集团控股有限公司 | 节点布局确定方法以及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5446881A (en) * | 1992-09-25 | 1995-08-29 | At&T Corp. | Database storage and retrieval method using a declining stage size and repetitive searches |
CN101276364A (zh) * | 2007-03-30 | 2008-10-01 | 阿里巴巴公司 | 一种分布式计算数据合并方法、系统及其装置 |
-
2010
- 2010-08-17 CN CN 201010255635 patent/CN101916281B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5446881A (en) * | 1992-09-25 | 1995-08-29 | At&T Corp. | Database storage and retrieval method using a declining stage size and repetitive searches |
CN101276364A (zh) * | 2007-03-30 | 2008-10-01 | 阿里巴巴公司 | 一种分布式计算数据合并方法、系统及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101916281A (zh) | 2010-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101916281B (zh) | 并行计算系统及去重计数方法 | |
CN101908075A (zh) | 基于sql的并行计算系统及方法 | |
US6801903B2 (en) | Collecting statistics in a database system | |
US10120902B2 (en) | Apparatus and method for processing distributed relational algebra operators in a distributed database | |
CN101916280A (zh) | 并行计算系统及按查询内容进行负载均衡的方法 | |
US8150836B2 (en) | System, method, and computer-readable medium for reducing row redistribution costs for parallel join operations | |
CN111512283B (zh) | 数据库中的基数估算 | |
US8688819B2 (en) | Query optimization in a parallel computer system with multiple networks | |
US9235621B2 (en) | Data-aware scalable parallel execution of rollup operations | |
CN113742343A (zh) | 基于大量业务数据场景的数据拆分方法、装置和存储介质 | |
CN112015741A (zh) | 一种海量数据的分库分表存储方法与装置 | |
CN112204543A (zh) | 用于分布式系统的频繁模式分析 | |
CN111625561A (zh) | 一种数据查询方法及装置 | |
US11221890B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
CN108536824B (zh) | 一种数据处理方法及装置 | |
CN114238360A (zh) | 一种用户行为分析系统 | |
US10162830B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
US11429606B2 (en) | Densification of expression value domain for efficient bitmap-based count(distinct) in SQL | |
CN105608077A (zh) | 一种大数据分布式存储方法和系统 | |
Hu et al. | Approximation with error bounds in spark | |
CN103345527A (zh) | 数据智能统计系统 | |
CN106339432A (zh) | 一种按查询内容进行负载均衡的系统及其方法 | |
US11442792B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
CN112527776A (zh) | 数据稽核方法、装置及存储介质 | |
CN105447137A (zh) | 一种基于关系数据库从大数据下检索相同主从关系数据的算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121219 Termination date: 20200817 |
|
CF01 | Termination of patent right due to non-payment of annual fee |