CN103544259B - 分组聚集排序TopK查询处理方法及系统 - Google Patents
分组聚集排序TopK查询处理方法及系统 Download PDFInfo
- Publication number
- CN103544259B CN103544259B CN201310484629.3A CN201310484629A CN103544259B CN 103544259 B CN103544259 B CN 103544259B CN 201310484629 A CN201310484629 A CN 201310484629A CN 103544259 B CN103544259 B CN 103544259B
- Authority
- CN
- China
- Prior art keywords
- item
- queue
- data item
- data
- topk
- 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
- 101100481876 Danio rerio pbk gene Proteins 0.000 title claims abstract description 100
- 101100481878 Mus musculus Pbk gene Proteins 0.000 title claims abstract description 100
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 230000004931 aggregating effect Effects 0.000 title abstract 5
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000002776 aggregation Effects 0.000 claims description 66
- 238000004220 aggregation Methods 0.000 claims description 66
- 230000005540 biological transmission Effects 0.000 claims description 18
- 238000004422 calculation algorithm Methods 0.000 claims description 12
- 238000013500 data storage Methods 0.000 claims description 10
- 238000004321 preservation Methods 0.000 claims description 10
- 238000005267 amalgamation Methods 0.000 claims description 6
- 238000009825 accumulation Methods 0.000 claims description 4
- 239000004744 fabric Substances 0.000 claims description 2
- 238000003825 pressing Methods 0.000 claims 1
- 238000000034 method Methods 0.000 abstract description 27
- 238000012896 Statistical algorithm Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000004899 motility Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种分组聚集排序TopK查询处理方法及系统。分组聚集排序TopK查询处理方法包括:接收分组聚集排序TopK查询请求;各分布式数据节点根据所述查询请求,进行本地数据分组聚集,并将自身的分组聚集数据异步传输到集中处理节点;所述集中处理节点采用哈希表结合二叉平衡树的数据结构对各分布式数据节点的分组聚集数据进行数据合并,并采用近似高频项统计算法进行统计,得到聚集排序后的高频项列表;输出所述高频项列表。本发明的分组聚集排序TopK查询处理方法及系统灵活性好,查询效率高,分布式适应性好。
Description
技术领域
本发明涉及网络技术领域,尤其涉及一种分组聚集排序TopK查询处理方法及系统。
背景技术
根据IDC Internet Data Center,互联网数据中心),过去五年的研究发现,全球数据量大约每两年翻一番。2010年,全球数据量跨入ZB时代,预计到2020年全球数据量将达到令人恐怖的35ZB。随着网民参与互联网产品和应用的程度越来越深,互联网将更加智能,互联网的数据量呈爆炸式增长,大数据时代已经来临。如此庞大的数据量给数据存储系统带来了极大的挑战。传统的单机数据存储系统已经不可行,分布式存储系统成为未来数据存储发展的必然趋势。
复杂的海量数据中蕴含着各种有价值的信息,结构化查询语言(SQL)作为一种对数据库中的数据进行定义和操作的语法,经常用来表达用户对海量数据的查询需求。
在结构化查询语言中,分组聚集排序TopK查询是经常被用户使用的查询语法,其查询语句格式类似“select A,sum(B)from t group by A order by sum(B)top1000;”,其用来表达在数据表t中,先按照字段A的值进行分组,将相应分组内的B值求和,并按照加和后的B字段值升序排列,取先1000条。
目前,针对分组聚集排序TopK查询,传统的分布式数据存储系统的实现方式如下。
首先,在分布式数据节点内将数据按照字段A的值进行内存分组,如果内存占用较大,则利用外部文件系统保存分组信息;然后,将分组后的信息压缩传递到集中计算节点进行聚合函数(sum(B))合并计算,在数据合并过程中,如果内存不足以保存整个分组信息,则利用外部文件系统创建临时文件进行处理;最后,采用外部归并算法进行数据排序,并取排序结果的前1000条。以上实现方法可以保证数据处理的准确性,但是数据处理效率极低,很难满足目前用户对复杂查询近实时性的要求。
另外,针对分组聚集排序TopK查询问题,其它常用的实现方法如下。
(1)充分了解用户的查询需求,在数据加载时通过内存概要数据结构的维护,将指定字段的特定计算方式(如按字段A分组,组内字段B求和)提前计算好,保存到数据存储系统中,当用户查询请求到来时,根据概要值简单计算后及时给与查询响应。
(2)分布式节点将原始数据压缩后,传递到集中计算节点进行统一处理。结合Frequency等高频项处理算法,在常数空间复杂度和较低时间复杂度情况下完成数据计算,给与响应。
以上方法都存在一些缺点。如查询效率极低、不能解决任意逻辑的聚集排序查询、分布式环境下不适用等等。
发明内容
本发明所要解决的技术问题是提供一种分组聚集排序TopK查询处理方法及系统,提高查询效率。
为解决上述技术问题,本发明提出了一种分组聚集排序TopK查询处理方法,应用于分布式数据存储系统,包括:
步骤一,接收分组聚集排序TopK查询请求;
步骤二,各分布式数据节点根据所述查询请求,进行本地数据分组聚集,并将自身的分组聚集数据异步传输到集中处理节点;
步骤三,所述集中处理节点采用哈希表结合二叉平衡树的数据结构对各分布式数据节点的分组聚集数据进行数据合并,并采用近似高频项统计算法进行统计,得到聚集排序后的高频项列表;
步骤四,输出所述高频项列表。
进一步地,上述分组聚集排序TopK查询处理方法还可具有以下特点,所述步骤二包括:
初始化第一数据项队列,第一数据项队列为分布式数据节点的数据项队列,所述第一数据项队列包括第一哈希表和第一双向链表,第一哈希表用于保存分组内容,第一双向链表用于保存第一哈希表中分组内容对应的保存地址,并设置第一计数值,所述第一计数值为所述第一哈希表表项个数;
将存在对应分组内容的新数据项item进行组内合并,合并结果保存在所述第一哈希表中,将不存在对应分组内容的新数据项item直接保存在所述第一哈希表中;
在所述第一哈希表的表项个数达到第一计数值时以及在全部新数据项处理完毕后,将第一哈希表的数据传输给集中处理节点。
进一步地,上述分组聚集排序TopK查询处理方法还可具有以下特点,所述步骤三包括:
初始化第二数据项队列和TopK队列,第二数据项队列为集中处理节点的数据项队列,所述第二数据项队列包括第二哈希表和第二双向链表,第二哈希表用于保存分组内容,第二双向链表用于保存第二哈希表中分组内容对应的保存地址,TopK队列包括第三哈希表、二叉平衡树和树内链表,并设置第二计数值,所述第二计数值为所述第二哈希表表项个数;
对于每一个新数据项item,依次判断第二数据项队列和TopK队列中是否存在对应的分组内容;
根据判断结果进行数据合并;
将二叉平衡树调整至平衡;
待所有新数据项都处理完毕后,后根遍历TopK队列,得到聚集排序后的高频项列表。
进一步地,上述分组聚集排序TopK查询处理方法还可具有以下特点,所述根据判断结果进行数据合并包括:
若第二数据项队列和TopK队列中都存在新数据项item对应的分组内容,则分别更新第二数据项队列和TopK队列中数据项的计数;
若第二数据项队列中不存在新数据项item对应的分组内容,则进一步判断第二数据项队列中数据项的计数是否超过第二计数值,若没超过则直接将新数据项item加入到第二数据项队列中,若超过则先删除第二数据项队列中的规则最小元素再将新数据项item加入到第二数据项队列中;
若第二数据项队列中存在新数据项item对应的分组内容,而TopK队列中不存在新数据项item对应的分组内容,则将新数据项item与TopK队列中的规则最小元素进行比较,若按照比较规则新数据项item大于TopK队列中的规则最小元素,则用新数据项item替换TopK队列中的规则最小元素。
为解决上述技术问题,本发明提出了一种分组聚集排序TopK查询处理系统,应用于分布式数据存储系统,包括:
接收模块,用于接收分组聚集排序TopK查询请求;
分组聚集模块,用于各分布式数据节点根据所述查询请求进行本地数据分组聚集,并将自身的分组聚集数据异步传输到集中处理节点;
数据合并模块,用于所述集中处理节点采用哈希表结合二叉平衡树的数据结构对各分布式数据节点的分组聚集数据进行数据合并,并采用近似高频项统计算法进行统计,得到聚集排序后的高频项列表;
输出模块,用于输出所述高频项列表。
进一步地,上述分组聚集排序TopK查询处理系统还可具有以下特点,所述分组聚集模块包括:
第一初始化单元,用于初始化第一数据项队列,第一数据项队列为分布式数据节点的数据项队列,所述第一数据项队列包括第一哈希表和第一双向链表,第一哈希表用于保存分组内容,第一双向链表用于保存第一哈希表中分组内容对应的保存地址,并设置第一计数值,所述第一计数值为所述第一哈希表表项个数;
聚集单元,用于将存在对应分组内容的新数据项item进行组内合并,合并结果保存在所述第一哈希表中,将不存在对应分组内容的新数据项item直接保存在所述第一哈希表中;
传输单元,用于在所述第一哈希表的表项个数达到第一计数值时以及在全部新数据项处理完毕后,将第一哈希表的数据传输给集中处理节点。
进一步地,上述分组聚集排序TopK查询处理系统还可具有以下特点,所述数据合并模块包括:
第二初始化单元,用于初始化第二数据项队列和TopK队列,第二数据项队列为集中处理节点的数据项队列,所述第二数据项队列包括第二哈希表和第二双向链表,第二哈希表用于保存分组内容,第二双向链表用于保存第二哈希表中分组内容对应的保存地址,TopK队列包括第三哈希表、二叉平衡树和树内链表,并设置第二计数值,所述第二计数值为所述第二哈希表表项个数;
判断单元,用于对于每一个新数据项item,依次判断第二数据项队列和TopK队列中是否存在对应的分组内容;
合并单元,用于根据判断结果进行数据合并;
调整单元,用于将二叉平衡树调整至平衡;
遍历单元,用于待所有新数据项都处理完毕后,后根遍历TopK队列,得到聚集排序后的高频项列表。
进一步地,上述分组聚集排序TopK查询处理系统还可具有以下特点,所述合并单元包括:
第一合并子单元,用于在第二数据项队列和TopK队列中都存在新数据项item对应的分组内容时,分别更新第二数据项队列和TopK队列中数据项的计数;
第二合并子单元,用于在第二数据项队列中不存在新数据项item对应的分组内容时,进一步判断第二数据项队列中数据项的计数是否超过第二计数值,若没超过则直接将新数据项item加入到第二数据项队列中,若超过则先删除第二数据项队列中的规则最小元素再将新数据项item加入到第二数据项队列中;
第三合并子单元,用于在第二数据项队列中存在新数据项item对应的分组内容,而TopK队列中不存在新数据项item对应的分组内容时,将新数据项item与TopK队列中的规则最小元素进行比较,若按照比较规则新数据项item大于TopK队列中的规则最小元素,则用新数据项item替换TopK队列中的规则最小元素。
本发明的分组聚集排序TopK查询处理方法及系统,在各分布式节点内部实现本地数据分组聚集,并将分组聚集结果异步传输到处理节点,集中处理节点采用哈希表结合二叉平衡树的数据结构对各个点的聚集数据进行数据合并,并实现常数时间复杂度、较低时间复杂度的近似高频项统计算法,实现分布式环境下分组聚集排序TopK查询的高效处理逻辑,灵活性好,查询效率高,分布式适应性好。
附图说明
图1为本发明实施例中分组聚集排序TopK查询处理方法的流程图;
图2为本发明实施例中分布式节点的本地数据分组聚集流程图;
图3为本发明实施例中集中处理节点的数据合并流程图;
图4为本发明高频项队列TopkQ的核心数据结构示意图;
图5为本发明实施例中分组聚集排序TopK查询处理系统的结构框图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为本发明实施例中分组聚集排序TopK查询处理方法的流程图,该流程应用于分布式数据存储系统。如图1所示,本实施例中,分组聚集排序TopK查询处理方法的流程可以包括如下步骤:
步骤S101,接收分组聚集排序TopK查询请求;
步骤S102,各分布式数据节点根据所述查询请求,进行本地数据分组聚集,并将自身的分组聚集数据异步传输到集中处理节点;
这里,“本地数据分组聚集”指的是基于固定内存大小完成数据内存分组,不处理由于数据量较大导致的外部数据分组流程。而现有技术中的“内存分组”是一个完整的分组流程,该分组流程考虑利用外部文件系统处理等,会涉及较多的磁盘IO过程。因此,“本地数据分组聚集”相对于现有技术的“内存分组”来说效率更高。
本地数据分组聚集的目的是将待处理的数据项进行预处理,即聚合。举例来说,假如有如下四个数据项:A-2,B-3,A-1,A-4,则分组SUM聚集后的结果为A-7,B-3。本地数据分组聚集可以减少网络传输的数据量,减少内存占用。
同步传输是指在数据项内存分组完成后进行传输,这样处理是阻塞的,即必须等待内存分组完成后才能开始传输,就导致了集中处理节点在最开始阶段一直处于空闲。而异步传输是指一边进行内存分组,当分组数据达到一定量时,就开始传输,传输和处理可以并行,集中处理节点也可以从最开始即开始工作,减少了同步阻塞等待的时间。
步骤S103,集中处理节点采用哈希表结合二叉平衡树的数据结构对各分布式数据节点的分组聚集数据进行数据合并,并采用近似高频项统计算法进行统计,得到聚集排序后的高频项列表;
步骤S104,输出高频项列表。
下面先对本发明中所使用的数据结构进行说明。本发明中的核心数据结构包括原始数据输入队列、数据项队列ItemQ以及高频项队列TopkQ。其中原始数据输入队列用来保存各个分布式节点异步传递过来的数据项;数据项队列ItemQ用来在常数计数器空间内保存缓存的数据项;高频项队列TopkQ用来保存最终的计算目标,即聚集排序后的高频项列表。
在数据合并过程中,数据项队列ItemQ用来保存缓存的数据项,其缓存替换策略兼容基于数据项计算因子的LRU、FIFO算法等;高频项队列TopkQ用来保存聚集排序后的高频项列表,在数据项持续合并的过程中,其某些计算因子较低的元素可能会被其他后继高频项替换;高频项队列TopkQ中的元素一定会在数据项队列ItemQ中维护;数据项队列ItemQ的核心数据结构包括哈希表、数据项双向链表,用来支持缓存数据项的快速查找、最小元素定位等操作。如图4所示,高频项队列TopkQ的核心数据结构包括哈希表、二叉平衡树、树内链表等。其中,哈希表用来进行常数空间复杂度的高频项定位处理;二叉平衡树用来保存聚集计数器节点,其一直是平衡的,不会出现偏斜的情况,导致元素查询效率不稳定;树内链表用来保存具体的原始数据项信息,相同计数的数据项使用计数器节点的同一个链表进行链接。高频项队列TopkQ的哈希表中的每一个哈希节点都跟二叉平衡树中的每个节点存在指针关联。即如果TopkQ中维护了对应的数据项item,则数据项item的计数器则维护在二叉平衡树中。
下面分别对步骤S102和步骤S103进行详细说明。
步骤S102的分组聚集可以采用图2所示的流程。
图2为本发明实施例中分布式节点的本地数据分组聚集流程图。如图2所示,本实施例中,分布式节点的本地数据分组聚集流程可以包括如下步骤:
步骤S201,初始化数据结构及计数器M;
这里,初始化的数据结构是指分布式数据节点的数据项队列ItemQ,数据项队列ItemQ包括哈希表结合双向链表。为与集中处理节点的数据项队列ItemQ相区别,本文中将分布式数据节点的数据项队列ItemQ称为第一数据项队列,将集中处理节点的数据项队列称为第二数据项队列。相应地,第一数据项队列中的哈希表称为第一哈希表,第一数据项队列中的双向链表称为第一双向链表;第二数据项队列中的哈希表称为第二哈希表,第二数据项队列中的双向链表称为第二双向链表。
其中,M是预定义的哈希表表项的个数,此处指第一哈希表表项个数。
步骤S202,新数据项item;
新数据项item来自存储系统已经保存的数据内容,即记录值。具体记录值中获取哪个字段根据用户的查询请求而定。
步骤S203,寻找分组内容gitem;
该分组内容gitem是指与新数据项item对应的分组内容。
举例说明,数据项都是字段的组合,假设数据项item包括三个字段{a,b,c}={1,2,3},如果查询调试是按照b进行分组,则gitem={2};因此gitem是按照查询条件在item获取分组内容的结果,即gitem是item的子集。
步骤S204,判断是否存在gitem项,若存在执行步骤S205,否则执行步骤S206;
具体地,判断第一数据项队列中是否存在gitem项。
步骤S205,进行组内合并,执行步骤S210;
这里的“组内合并”是指按照聚合函数的规则进行组内合并。举例来说,如果是SUM聚集,则将分组字段相同的数值内容求和,假定原有内容为A-20,新来数据项为A-2,则组内合并结果为A-22;如果是COUNT聚集,假定原有内容为A-20,新来数据项为A-2,则组内合并结果为A-21。
步骤S206,保存gitem数据项;
步骤S207,判断计数个数是否超过M,若超过执行步骤S208,否则执行步骤S210;
这里的计数个数是指第一哈希表中已有数据项的个数。
步骤S208,异步传输聚集结果;
这里的聚集结果是指第一数据项队列中第一哈希表的数据内容。
步骤S209,清空计数器;
步骤S210,判断数据项item是否是最后一个数据项,若否则执行步骤S202,若是则执行步骤S211;
步骤S211,传输非空聚集结果,结束。
步骤S103的数据合并可以采用图3所示的流程。
图3为本发明实施例中集中处理节点的数据合并流程图。如图3所示,本实施例中,集中处理节点的数据合并流程可以包括如下步骤:
步骤S301,初始化数据项队列ItemQ、TopK队列TopkQ;
这里初始化的数据项队列ItemQ是指第二数据项队列,即集中处理节点的数据项队列。TopK队列包括第三哈希表、二叉平衡树和树内链表。为与数据项队列中的哈希表相区分,这里将TopK队列中的哈希表称为第三哈希表。
步骤S302,初始化计数器M;
这里,M也是预定义的哈希表表项的个数,此处指第二哈希表表项个数。M的预定义数值可以参考用户提交查询请求的topk,即根据不同数据类型的查询,取topk值的3至5倍即可。
步骤S303,新数据项item;
这里的新数据项item来自于各分布式节点传输来的分组聚集数据。
步骤S304,寻找分组内容gitem;
分组内容gitem是指新数据项item对应的分组内容。
步骤S305,判断数据项队列ItemQ中是否存在gitem项,若存在则执行步骤S309,否则执行步骤S306;
步骤S306,判断计数个数是否超过M,若超过执行步骤S307,否则执行步骤S308;
这里,计数个数是指第二数据项队列中的第二哈希表表项的个数。
步骤S307,删除数据项队列ItemQ中的规则最小元素;
此处,规则最小元素指按照查询规则排在排序结果末位的元素。例如,如果查询规则是升序,则规则最小元素为排序结果中的最大元素;如果查询时降序,则则规则最小元素为排序结果中的最小元素。
步骤S308,将当前元素加入数据项队列ItemQ中,执行步骤S316;
当前元素指的是分组数据内容及其计数器值。用ItemQ中的哈希表维护起来。
步骤S309,更新数据项队列ItemQ的数据项计数;
步骤S310,判断TopK队列TopkQ中是否存在gitem项,若存在则执行步骤S311,否则执行步骤S312;
步骤S311,修改TopkQ中数据项计数;
步骤S312,判断TopK队列TopkQ中此数据项是否应加入TopkQ,若是则执行步骤S313,否则执行步骤S316;
步骤S313,替换数据项;
步骤S314,调整数据项队列AVL树(即二叉平衡树)至平衡;
步骤S315,判断是否是最后一个数据项,若是则执行步骤S316,否则执行步骤S303;
步骤S316,后根遍历TopkQ,得到排序后的最终结果,结束。
由图3的流程可见,当每一个分布式节点的分组聚集结果的数据项到来时,先进行ItemQ的匹配处理,再进行TopkQ的匹配处理,如果匹配到了,则修改二叉平衡树中的计数器值,调整平衡树;如果没有匹配到,则将其值与TopkQ中的规则最小值比较,如果大于规则最小值,则说明这个数据项是高频项,需要在二叉平衡树中维护,则进行替换操作;如果小于规则最小值,则说明这个数据项是低频项,不需要在二叉平衡树中维护。可见,二叉平衡树中维护的数据是查询的最终对应结果,如果数据项处理完毕,则最终输出二叉平衡树中的数据即可。当数据项计算完成后,只需要执行高频项队列TopkQ中二叉平衡树的后根遍历法,就可以直接导出排序后的列表,无需后续其它计算。
本发明的分组聚集排序TopK查询处理方法是一种分布式环境下的高效近似高频项统计方法,本发明在各分布式节点内部实现本地数据分组聚集,并将分组聚集结果异步传输到处理节点,集中处理节点采用哈希表结合二叉平衡树的数据结构对各个点的聚集数据进行数据合并,并实现常数时间复杂度、较低时间复杂度的近似高频项统计算法,实现分布式环境下分组聚集排序TopK查询的高效处理逻辑,灵活性好,查询效率高,分布式适应性好。
本发明还提出了一种分组聚集排序TopK查询处理系统,用以执行上述的分组聚集排序TopK查询处理方法。该系统应用于分布式数据存储系统。
图5为本发明实施例中分组聚集排序TopK查询处理系统的结构框图。如图5所示,本实施例中,分组聚集排序TopK查询处理系统包括接收模块510、分组聚集模块520、数据合并模块530和输出模块540。接收模块510、分组聚集模块520、数据合并模块530和输出模块540顺次相连。其中,接收模块510用于接收分组聚集排序TopK查询请求。分组聚集模块520用于各分布式数据节点根据接收模块510接收的查询请求进行本地数据分组聚集,并将自身的分组聚集数据异步传输到集中处理节点。数据合并模块530用于集中处理节点采用哈希表结合二叉平衡树的数据结构对各分布式数据节点的分组聚集数据进行数据合并,并采用近似高频项统计算法进行统计,得到聚集排序后的高频项列表。输出模块540用于输出高频项列表。
在本发明实施例中,分组聚集模块520可以进一步包括第一初始化单元、聚集单元和传输单元。其中,第一初始化单元用于初始化第一数据项队列,第一数据项队列为分布式数据节点的数据项队列,第一数据项队列包括第一哈希表和第一双向链表,第一哈希表用于保存分组内容,第一双向链表用于保存第一哈希表中分组内容对应的保存地址,并设置第一计数值,所述第一计数值为所述第一哈希表表项个数。聚集单元用于将存在对应分组内容的新数据项item进行组内合并,合并结果保存在所述第一哈希表中,将不存在对应分组内容的新数据项item直接保存在所述第一哈希表中。传输单元用于在第一哈希表的表项个数达到第一计数值时以及在全部新数据项处理完毕后,将第一哈希表的数据传输给集中处理节点。
在本发明实施例中,数据合并模块530可以进一步包括第二初始化单元、判断单元、合并单元、调整单元和遍历单元。其中,第二初始化单元用于初始化第二数据项队列和TopK队列,第二数据项队列为集中处理节点的数据项队列,所述第二数据项队列包括第二哈希表和第二双向链表,第二哈希表用于保存分组内容,第二双向链表用于保存第二哈希表中分组内容对应的保存地址,TopK队列包括第三哈希表、二叉平衡树和树内链表,并设置第二计数值,所述第二计数值为所述第二哈希表表项个数。判断单元用于对于每一个新数据项item,依次判断第二数据项队列和TopK队列中是否存在对应的分组内容。合并单元用于根据判断结果进行数据合并。调整单元用于将二叉平衡树调整至平衡。遍历单元用于待所有新数据项都处理完毕后,后根遍历TopK队列,得到聚集排序后的高频项列表。
其中,合并单元还可以进一步包括第一合并子单元、第二合并子单元和第三合并子单元。第一合并子单元用于在第二数据项队列和TopK队列中都存在新数据项item对应的分组内容时,分别更新第二数据项队列和TopK队列中数据项的计数。第二合并子单元用于在第二数据项队列中不存在新数据项item对应的分组内容时,进一步判断第二数据项队列中数据项的计数是否超过第二计数值,若没超过则直接将新数据项item加入到第二数据项队列中,若超过则先删除第二数据项队列中的规则最小元素再将新数据项item加入到第二数据项队列中。第三合并子单元用于在第二数据项队列中存在新数据项item对应的分组内容,而TopK队列中不存在新数据项item对应的分组内容时,将新数据项item与TopK队列中的规则最小元素进行比较,若按照比较规则新数据项item大于TopK队列中的规则最小元素,则用新数据项item替换TopK队列中的规则最小元素。
本发明的分组聚集排序TopK查询处理系统,在各分布式节点内部实现本地数据分组聚集,并将分组聚集结果异步传输到处理节点,集中处理节点采用哈希表结合二叉平衡树的数据结构对各个点的聚集数据进行数据合并,并实现常数时间复杂度、较低时间复杂度的近似高频项统计算法,实现分布式环境下分组聚集排序TopK查询的高效处理逻辑,灵活性好,查询效率高,分布式适应性好。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种分组聚集排序TopK查询处理方法,应用于分布式数据存储系统,其特征在于,包括:
步骤一,接收分组聚集排序TopK查询请求;
步骤二,各分布式数据节点根据所述查询请求,进行本地数据分组聚集,并将自身的分组聚集数据异步传输到集中处理节点;
步骤三,所述集中处理节点采用哈希表结合二叉平衡树的数据结构对各分布式数据节点的分组聚集数据进行数据合并,并采用近似高频项统计算法进行统计,得到聚集排序后的高频项列表;
所述步骤三包括:
初始化第二数据项队列和TopK队列,第二数据项队列为集中处理节点的数据项队列,所述第二数据项队列包括第二哈希表和第二双向链表,第二哈希表用于保存分组内容,第二双向链表用于保存第二哈希表中分组内容对应的保存地址,TopK队列包括第三哈希表、二叉平衡树和树内链表,并设置第二计数值,所述第二计数值为所述第二哈希表表项个数;
对于每一个新数据项item,依次判断第二数据项队列和TopK队列中是否存在对应的分组内容;
根据判断结果进行数据合并;
将二叉平衡树调整至平衡;
待所有新数据项都处理完毕后,后根遍历TopK队列,得到聚集排序后的高频项列表;
步骤四,输出所述高频项列表。
2.根据权利要求1所述的分组聚集排序TopK查询处理方法,其特征在于,所述步骤二包括:
初始化第一数据项队列,第一数据项队列为分布式数据节点的数据项队列,所述第一数据项队列包括第一哈希表和第一双向链表,第一哈希表用于保存分组内容,第一双向链表用于保存第一哈希表中分组内容对应的保存地址,并设置第一计数值,所述第一计数值为所述第一哈希表表项个数;
将存在对应分组内容的新数据项item进行组内合并,合并结果保存在所述第一哈希表中,将不存在对应分组内容的新数据项item直接保存在所述第一哈希表中;
在所述第一哈希表的表项个数达到第一计数值时以及在全部新数据项处理完毕后,将第一哈希表的数据传输给集中处理节点。
3.根据权利要求1所述的分组聚集排序TopK查询处理方法,其特征在于,所述根据判断结果进行数据合并包括:
若第二数据项队列和TopK队列中都存在新数据项item对应的分组内容,则分别更新第二数据项队列和TopK队列中数据项的计数;
若第二数据项队列中不存在新数据项item对应的分组内容,则进一步判断第二数据项队列中数据项的计数是否超过第二计数值,若没超过则直接将新数据项item加入到第二数据项队列中,若超过则先删除第二数据项队列中的规则最小元素再将新数据项item加入到第二数据项队列中;
若第二数据项队列中存在新数据项item对应的分组内容,而TopK队列中不存在新数据项item对应的分组内容,则将新数据项item与TopK队列中的规则最小元素进行比较,若按照比较规则新数据项item大于TopK队列中的规则最小元素,则用新数据项item替换TopK队列中的规则最小元素。
4.一种分组聚集排序TopK查询处理系统,应用于分布式数据存储系统,其特征在于,包括:
接收模块,用于接收分组聚集排序TopK查询请求;
分组聚集模块,用于各分布式数据节点根据所述查询请求进行本地数据分组聚集,并将自身的分组聚集数据异步传输到集中处理节点;
数据合并模块,用于所述集中处理节点采用哈希表结合二叉平衡树的数据结构对各分布式数据节点的分组聚集数据进行数据合并,并采用近似高频项统计算法进行统计,得到聚集排序后的高频项列表;
所述数据合并模块包括:
第二初始化单元,用于初始化第二数据项队列和TopK队列,第二数据项队列为集中处理节点的数据项队列,所述第二数据项队列包括第二哈希表和第二双向链表,第二哈希表用于保存分组内容,第二双向链表用于保存第二哈希表中分组内容对应的保存地址,TopK队列包括第三哈希表、二叉平衡树和树内链表,并设置第二计数值,所述第二计数值为所述第二哈希表表项个数;
判断单元,用于对于每一个新数据项item,依次判断第二数据项队列和TopK队列中是否存在对应的分组内容;
合并单元,用于根据判断结果进行数据合并;
调整单元,用于将二叉平衡树调整至平衡;
遍历单元,用于待所有新数据项都处理完毕后,后根遍历TopK队列,得到聚集排序后的高频项列表;
输出模块,用于输出所述高频项列表。
5.根据权利要求4所述的分组聚集排序TopK查询处理系统,其特征在于,所述分组聚集模块包括:
第一初始化单元,用于初始化第一数据项队列,第一数据项队列为分布式数据节点的数据项队列,所述第一数据项队列包括第一哈希表和第一双向链表,第一哈希表用于保存分组内容,第一双向链表用于保存第一哈希表中分组内容对应的保存地址,并设置第一计数值,所述第一计数值为所述第一哈希表表项个数;
聚集单元,用于将存在对应分组内容的新数据项item进行组内合并,合并结果保存在所述第一哈希表中,将不存在对应分组内容的新数据项item直接保存在所述第一哈希表中;
传输单元,用于在所述第一哈希表的表项个数达到第一计数值时以及在全部新数据项处理完毕后,将第一哈希表的数据传输给集中处理节点。
6.根据权利要求4所述的分组聚集排序TopK查询处理系统,其特征在于,所述合并单元包括:
第一合并子单元,用于在第二数据项队列和TopK队列中都存在新数据项item对应的分组内容时,分别更新第二数据项队列和TopK队列中数据项的计数;
第二合并子单元,用于在第二数据项队列中不存在新数据项item对应的分组内容时,进一步判断第二数据项队列中数据项的计数是否超过第二计数值,若没超过则直接将新数据项item加入到第二数据项队列中,若超过则先删除第二数据项队列中的规则最小元素再将新数据项item加入到第二数据项队列中;
第三合并子单元,用于在第二数据项队列中存在新数据项item对应的分组内容,而TopK队列中不存在新数据项item对应的分组内容时,将新数据项item与TopK队列中的规则最小元素进行比较,若按照比较规则新数据项item大于TopK队列中的规则最小元素,则用新数据项item替换TopK队列中的规则最小元素。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310484629.3A CN103544259B (zh) | 2013-10-16 | 2013-10-16 | 分组聚集排序TopK查询处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310484629.3A CN103544259B (zh) | 2013-10-16 | 2013-10-16 | 分组聚集排序TopK查询处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103544259A CN103544259A (zh) | 2014-01-29 |
CN103544259B true CN103544259B (zh) | 2017-01-18 |
Family
ID=49967711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310484629.3A Expired - Fee Related CN103544259B (zh) | 2013-10-16 | 2013-10-16 | 分组聚集排序TopK查询处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544259B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462328B (zh) * | 2014-12-02 | 2018-07-31 | 深圳中科讯联科技有限公司 | 一种基于哈希表与双循环链表的混合数据管理方法及装置 |
CN106095850A (zh) * | 2016-06-02 | 2016-11-09 | 中国联合网络通信集团有限公司 | 一种数据处理方法及设备 |
CN106339480A (zh) * | 2016-08-31 | 2017-01-18 | 天津南大通用数据技术股份有限公司 | 数据分组聚合数据分布的选择方法及装置 |
CN108093273B (zh) * | 2016-11-22 | 2020-10-02 | 北京国双科技有限公司 | 数据的排序方法、装置及系统 |
CN106598494B (zh) * | 2016-12-05 | 2022-07-29 | 东软集团股份有限公司 | 数据统计方法和装置 |
CN110019360A (zh) * | 2017-10-27 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN110366203A (zh) * | 2018-04-09 | 2019-10-22 | 启碁科技股份有限公司 | 提升智能电表至服务器间效能的方法及装置 |
CN111241146B (zh) * | 2018-11-29 | 2023-09-19 | 北京数安鑫云信息技术有限公司 | 一种统计TopK-Frequency信息的方法和系统 |
CN111694839B (zh) * | 2020-04-28 | 2023-07-14 | 平安科技(深圳)有限公司 | 基于大数据的时间序列指数构建方法、装置及计算机设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7035843B1 (en) * | 2002-02-15 | 2006-04-25 | Oracle International Corporation | Evaluation of database hierarchical cubes by nesting rollup operators associated with multiple groupings |
CN101902505A (zh) * | 2009-05-31 | 2010-12-01 | 中国科学院计算机网络信息中心 | 一种分布式dns查询日志的实时统计装置及方法 |
CN102024062A (zh) * | 2011-01-06 | 2011-04-20 | 中国工商银行股份有限公司 | 一种实现数据动态缓存处理的装置及方法 |
CN102394784A (zh) * | 2011-11-21 | 2012-03-28 | 北京邮电大学 | 基于隐私保持的分布式Top-k查询方法 |
CN102521406A (zh) * | 2011-12-26 | 2012-06-27 | 中国科学院计算技术研究所 | 海量结构化数据复杂查询任务的分布式查询方法和系统 |
CN102521405A (zh) * | 2011-12-26 | 2012-06-27 | 中国科学院计算技术研究所 | 支持高速加载的海量结构化数据存储、查询方法和系统 |
CN102779180A (zh) * | 2012-06-29 | 2012-11-14 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
CN104509059A (zh) * | 2012-09-10 | 2015-04-08 | 惠普发展公司,有限责任合伙企业 | 主连接表和辅连接表的使用 |
-
2013
- 2013-10-16 CN CN201310484629.3A patent/CN103544259B/zh not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7035843B1 (en) * | 2002-02-15 | 2006-04-25 | Oracle International Corporation | Evaluation of database hierarchical cubes by nesting rollup operators associated with multiple groupings |
CN101902505A (zh) * | 2009-05-31 | 2010-12-01 | 中国科学院计算机网络信息中心 | 一种分布式dns查询日志的实时统计装置及方法 |
CN102024062A (zh) * | 2011-01-06 | 2011-04-20 | 中国工商银行股份有限公司 | 一种实现数据动态缓存处理的装置及方法 |
CN102394784A (zh) * | 2011-11-21 | 2012-03-28 | 北京邮电大学 | 基于隐私保持的分布式Top-k查询方法 |
CN102521406A (zh) * | 2011-12-26 | 2012-06-27 | 中国科学院计算技术研究所 | 海量结构化数据复杂查询任务的分布式查询方法和系统 |
CN102521405A (zh) * | 2011-12-26 | 2012-06-27 | 中国科学院计算技术研究所 | 支持高速加载的海量结构化数据存储、查询方法和系统 |
CN102779180A (zh) * | 2012-06-29 | 2012-11-14 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
CN104509059A (zh) * | 2012-09-10 | 2015-04-08 | 惠普发展公司,有限责任合伙企业 | 主连接表和辅连接表的使用 |
Non-Patent Citations (1)
Title |
---|
海量结构化数据存储检索系统;吴广君等;《计算机研究与发展》;20120215;第49卷(第S1期);1-5(期刊第2页第2栏第3,4段,第3页第1栏第1-6段,第4页第3.1,3.2节) * |
Also Published As
Publication number | Publication date |
---|---|
CN103544259A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544259B (zh) | 分组聚集排序TopK查询处理方法及系统 | |
CN106452868B (zh) | 一种支持多维度聚合分类的网络流量统计实现方法 | |
CN102915373A (zh) | 一种数据存储方法和装置 | |
WO2016101628A1 (zh) | 一种数据建模中的数据处理方法及装置 | |
CN107229730A (zh) | 数据查询方法及装置 | |
CN105956015A (zh) | 一种基于大数据的服务平台整合方法 | |
CN106462578A (zh) | 数据库条目查询和更新的方法 | |
CN103345514A (zh) | 大数据环境下的流式数据处理方法 | |
CN106250519A (zh) | 用于并行数据库的数据查询方法和装置 | |
CN107958080A (zh) | 一种基于ElasticSearch的大数据报表处理方法 | |
CN107766529A (zh) | 一种用于污水处理行业的海量数据存储方法 | |
CN105760468A (zh) | 移动环境下基于倒排位置敏感哈希索引的大规模图象查询系统 | |
CN103177035A (zh) | 一种在数据库中查询数据的装置及方法 | |
CN103886508A (zh) | 海量农田数据的监控方法和系统 | |
CN102479217A (zh) | 一种分布式数据仓库中实现计算均衡的方法及装置 | |
CN108268529A (zh) | 一种基于业务抽象和多引擎调度的数据汇总方法和系统 | |
CN103699534B (zh) | 系统目录中数据对象的显示方法及装置 | |
CN107193898A (zh) | 基于分级复用的日志数据流的查询共享方法和系统 | |
CN108537291A (zh) | 一种样本分类方法和装置 | |
CN109063752A (zh) | 基于神经网络的多源高维多尺度实时数据流的分拣方法 | |
CN104657383B (zh) | 一种基于关联特性的重复视频检测方法与系统 | |
CN108228787A (zh) | 按照多级类目处理信息的方法和装置 | |
CN108052535A (zh) | 基于多处理器平台的视觉特征并行快速匹配方法和系统 | |
CN104123329B (zh) | 搜索方法和装置 | |
CN106649385B (zh) | 基于HBase数据库的数据排序方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for 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: 20170118 |
|
CF01 | Termination of patent right due to non-payment of annual fee |