CN102521406B - 海量结构化数据复杂查询任务的分布式查询方法和*** - Google Patents
海量结构化数据复杂查询任务的分布式查询方法和*** Download PDFInfo
- Publication number
- CN102521406B CN102521406B CN201110442091.0A CN201110442091A CN102521406B CN 102521406 B CN102521406 B CN 102521406B CN 201110442091 A CN201110442091 A CN 201110442091A CN 102521406 B CN102521406 B CN 102521406B
- Authority
- CN
- China
- Prior art keywords
- data
- query
- distributed
- window
- inquiry
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种海量结构化数据复杂查询任务的分布式查询方法和***。其中海量结构化数据的分布式查询方法包括:接收用户发出的查询任务并将查询任务分解为多个查询子任务;以及根据该多个查询子任务中的每个查询子任务,对分布式存储的数据并发执行分批次查询,并分布式返回查询到的结果集。本发明采用的分批次查询并保持中间结果状态的查询方法,充分考虑了界面展示应用中小数据量快速查询的需求,同时也兼顾了统计、分析背景下的大结果集的统计需求。
Description
技术领域
本发明涉及一种信息安全领域中的海量数据管理***和方法,更具体地涉及面向复杂查询任务的查询以及分布式数据管理方法和***,主要用于信息安全领域网络报文的落地存储、分析和海量日志数据的统计、分析等应用。
背景技术
当代信息安全领域中数据管理不再局限于传统的数据采样、分析等简单的数据处理方式,而是借助高效的数据存储***,进行数据落地存储,并支持事后复杂的数据统计、分析等功能。
由于目前普遍使用的关系型数据库受到一致性约束,因此基于关系型数据库的查询方法和查询***在海量数据存储和查询的条件下加载效率低、检索速度慢,而且无法实现***的平滑扩容的目标。为了适应海量数据存储、查询等应用需求、提高数据的查询效率,提出了一种基于Hadoop开源分布式NO-SQL数据库(也称为KEY-VALUE型数据库),例如Hbase、Hypertable等,这些数据库通过降低一致性约束,提高了***的存储规模与数据处理效率。但是基于Hadoop的NO-SQL数据库仅能提供KEY-VALUE查询模式,即根据给定的KEY值,查找对应的VALUE值或值区间,因此,其无法满足海量结构化数据的复杂条件的统计、分析查询功能。
现有技术中针对海量结构化数据的查询,有一种基于Hadoop实现的分布式数据仓库HIVE以及基于HIVE的查询方法和查询***,其能够支持较完备的复杂SQL查询。虽然HIVE能够支持复杂的SQL查询,但是其存在以下不足:
(1)HIVE需要查询到满足条件的所有记录后才将查询结果返回给用户使用,如果结果集过大用户需要等待大量的时间才能获得结果。因此导致HIVE实时查询效率较低、延迟大,无法实现在线数据加载与快速查询的目的,无法满足界面展示这种不需要大量结果集的查询应用。
(2)HIVE中没有索引,其所有的查询操作都是通过读取原始数据文件执行的。因此,查询效率低。
(3)HIVE的查询过程是用户通过HQL语言(一种类似于SQL语言的查询表达方式)描述查询规则,虽然通过HQL语言可以描述更复杂的关联查询、等值连接JOIN,但是由于其主要是面向MapReduce的任务分解方法(即在执行查询任务时,需要多次磁盘写入、读取操作),因此其执行效率低,并且其无法直接用于流记录数据的查询。
(4)HIVE是从数据文件中读取数据的,因此不支持记录流式频繁加载方式,也不支持缓存加载数据或缓存查找数据。虽然现有技术中存储***具有开辟缓存结构、提高数据加载效率的功能,但是需要等到缓存数据写入到磁盘中后才能支持查询操作,流式记录数据应用场合是持续不断的加载到***中,而且近期数据相对具有更高的使用频率,因此传统方法无法满足查询的需求。
因此,在针对海量结构化数据的查询和管理领域,亟需一种能够支持复杂查询条件并且能够实现快速查询目的的方法和***。
发明内容
本发明要解决的技术问题是提供一种能够支持复杂的SQL查询并且能够实现快速查询的海量结构化数据分布式查询方法和***。
根据本发明的一个方面,提出一种海量结构化数据的分布式查询方法,包括:步骤1,接收用户发出的查询任务并将查询任务分解为多个查询子任务;以及步骤2,根据该多个查询子任务中的每个查询子任务,对分布式存储的数据并发执行分批次查询,并分布式返回查询到的结果集。
根据本发明的另一方面,提出一种海量结构化数据分布式查询***,包括:用于接收用户发出的查询任务并将查询任务分解为多个查询子任务的装置;以及用于根据该多个查询子任务中的每个查询子任务对分布式存储的各组数据并发执行分批次查询、并分布式返回查询到的结果集的装置。
本发明采用的分批次查询并保持中间结果状态的查询方法,充分考虑了界面展示应用中小数据量快速查询的需求,同时也兼顾了统计、分析背景下的大结果集的统计需求。
附图说明
图1为根据本发明第一实施例的海量结构化数据分布式查询方法的流程图。
图2为根据本发明一个实例的对存储在硬盘中的数据进行分批查询并分批返回结果集的流程图。
图3为根据本发明另一实例的执行分批查询并分批返回结果集的流程图。
图4为示出对查询结果集进行汇总的各步骤的流程图。
图5为双滑动窗口结构及其工作原理的示意图。
图6为根据本发明第二实施例的海量结构化数据分布式存储方法的流程图。
图7为根据本发明第二实施例的海量结构化数据分布式查询方法的流程图。
具体实施方式
在本发明的海量结构化数据的分布式存储方法和查询方法中,所采用的数据结构包括两个基本部分:全排序索引和记录数据。全排序索引是把记录所有的属性值根据字典序进行全排序。记录数据是把每条记录以行为单位按序存储。全排序索引支持过滤类查询条件,如WHERE中的查询条件。
在对本发明做详细说明之前,首先对本发明中所涉及的相关概念“分批次查询”进行定义。分批次查询指对具有大量查询结果集的查询任务,根据用户需求选择获得少量结果集的单次查询或获得所有结果集的多次查询。
下面结合附图和具体实施方式对本发明加以说明。
在针对海量结构化数据的查询方法中,通常采用分布式数据存储结构来实现海量数据的查询。
图1为根据本发明实施例的海量结构化数据分布式查询方法的流程图。如图1所示,本发明的海量结构化数据的分布式查询方法主要针对流记录数据,该方法包括以下步骤:
步骤1,接收用户发出的查询任务并将查询任务分解为多个查询子任务。
在海量数据查询过程中,针对具体的查询条件如果所有存储装置之间按照串行方式执行查询任务,则无法发挥出分布式***的整体计算能力。因此,为了提高分布式环境下海量数据的查询效率,本发明对具体的查询任务进行分解,并将分解后的子任务发送到各个存储装置上进行并发执行。
根据本发明的一个实施例,可以根据分区类查询条件、过滤类查询条件或全局统计分析类查询条件将查询任务分解为多个查询子任务。其中,分区类查询条件是进行数据文件级别的查询,可以根据所存储的数据的索引类型设置分区类查询条件。例如,在本发明中,以时间属性为例为存储数据建立集中索引(基本的数据组织规则是根据时间属性把数据进行分块存储,数据分块之间保证时间属性的有序性,并建B+Tree索引支持统一的数据文件的查询,从而实现基于时间属性的文件级分区快速查找),则可以选用时间属性作为分区查询条件,通过在基于时间属性建立的B+tree索引中执行操作,来执行分区查询条件;过滤类查询条件针对目标索引文件内的具体记录进行过滤或匹配,这类条件可以在多个存储装置中并发执行。数据统计分析类查询条件,需要针对最后的结果集进行统一处理,才能保证查询语义的正确性。
除上述查询任务的分解方法之外,本领域技术人员可以理解还可以根据其它类型的查询条件对查询任务进行分解,以提高分布式环境下海量数据的查询效率。
本发明通过在分布式建立面向复杂条件的查询任务分解机制和并发子查询任务调度机制,从而充分利用分布式环境下的计算资源,并发执行查询子任务,以提高海量结构化数据的查询效率。
步骤2,根据该多个查询子任务中的每个查询子任务,对分布式存储的数据并发执行分批次查询,并分布式返回查询到的结果集。
在海量数据查询过程中,根据用户的查询条件可能会产生大量的结果集,甚至多达上亿条记录。处理如此大规模的结果集会占用大量时间,对于例如以B/S为应用背景的仅需要返回例如几百条记录界面展示来说,将所有的结果集都返回用户是没有必要的并且浪费了宝贵的数据处理时间。为此,本发明提出了分批查询的方法,以适用于海量数据查询需要快速返回结果集的需要。
图2为根据本发明一个实例的对存储在数据存储装置中的数据进行分批查询并分批返回结果集的流程图。如图2所示,其包括以下步骤:
步骤211,为查询操作设置单次最大返回记录数目(也称为阈值),例如将该阈值设置为100万条。
步骤212,根据查询子任务,对存储在各存储装置中的数据进行查询,并基于该阈值获得查询结果集。其中包括:当查询到的符合查询条件的记录数目达到阈值时获得结果集,例如当查询到100万条符合查询条件的记录时,将该100万条记录返回,还包括虽然查询到的符合查询条件的记录未达到阈值(例如100万条)但当已经完成了对整个存储装置的查询时获得的结果集。
步骤213,判断该结果集中的记录数目是否达到单次最大返回记录数目,如果未达到单次最大返回记录数目,则说明已经对整个数据存储装置进行了全面查询并且已经获得了所有符合查询条件的结果集,从而执行步骤215,如果达到单次最大返回记录数目,则将“未全面查询”的标记返回给用户,由用户确定是否继续进行查询,如果需要继续查询,则执行步骤214,否则执行步骤215。
步骤214,保存当前的查询状态并基于该查询状态继续进行查询。在本发明中,通过为每个查询子任务提供一个与查询子任务相关的标识符Session ID并根据Session ID保存查询状态。具体而言,对于同一个查询任务的多个批次的查询,其Session ID是相同的,因此在接收到查询子任务时,将查询子任务中的Session ID与保存的查询状态信息进行匹配,如果Session ID相同,则利用已保存的包括Session ID的查询状态信息,对上次查询中未查询到的数据进行查询,直到用户获得了所需的全部结果集。
步骤215,将查询到的结果集返回给用户。
根据本发明的另一实施例,还可以通过如图3流程图所示的步骤执行分批查询并分批返回结果集,其包括:
步骤D2100,为查询操作设置单次最大返回记录数目(也称为阈值),例如将该阈值设置为100万条。
步骤D2200,接收多个查询子任务,通过分区查询条件,获得目标索引分片,在每个索引分片上并发执行过滤类查询条件;并获得满足条件的结果集。
步骤D2300,判断查询子任务中是否有分组命令GROUP BY,如果有分组命令则执行步骤D2400,否则执行步骤D2500。
步骤D2400,利用Hash算法快速判断结果集是否属于同一个分组。Hash分组的具体方法是:使用Hash对需要分组的属性进行Hash计算,把得到的Hash值作为一个桶号标示,在标示的桶内放置Hash值与桶号相同的纪录。由于每个桶内是Hash值相同的记录,因此能够实现在O(1)时间内对记录的快速分组操作。
步骤D2500,判断查询子任务中是否有去重命令,即关键字DISTINCT,如果有则执行步骤D2600的;否则执行步骤D2700。
步骤D2600,对记录进行去重,区分DISTINCT出现在整条记录的前面、型如“SELECT DISTINCT…”,还是针对统计字段去重、型如“SELECTSUM(DISTINCT name)…”;对于型如“SELECT DISTINCT…”命令,表示针对整条记录去重,型如“SELECT SUM(DISTINCT name)…”表示针对分组name后的字段去重做统计(通常SUM与GROUP BY字段同时出现)。为了提高计算效率,数据去重时利用bloom filter进行加速重复字段的判断。
步骤D2700,判断查询条件中是否有SELECT…LIMIT K,一般K很小(比如K=100),远远小于单次最大返回记录数目(100万),如果有则在并发查询时每个查询子任务查询到满足条件的K条记录后停止查询,执行步骤D2810;否则执行步骤D2800。该步骤是针对流记录应用场合中,仅查询符合条件的一小部分数据应用情况而设计,在查询中即使没有达到分批的阈值,数据存储装置对于此类查询也不再缓存查询状态。
步骤D2800,判断查询到的记录数目是否达到阈值(例如100万条),如果达到了阈值,则将“未全面查询”的标记返回给用户,由用户根据实际需要确定是否继续查询,如果确定继续查询,则执行步骤D2820;如果确定不继续查询或者查询到的记录数目未达到阈值,则为单批次返回的结果集,执行步骤D2810。
步骤D2810,对于单批次返回的结果集,判断是否有统计函数SUM、COUNT、AVG、MAX、MIN函数,如果有执行步骤D2811,否则执行步骤D2812。
步骤D2811,根据统计函数命令,计算具体的数值,SUM是对分组后的字段计算具体数值,COUNT是统计记录条数,AVG是计算平均值,MAX是记录最大值,MIN是记录最小值。
步骤D2812,如果有排序操作命令,则进行数据排序。排序的功能包括:针对某一个字段的排序;或经过SUM、COUNT、AVG等统计函数计算的结果数据进行排序,关键字ASC表示升序排序,DESC表示降序排序,默认为升序排序。
步骤D2813,将结果集返回。
步骤D2820,将本次查询的中间结果文件暂存于临时文件中,支持与下一个批次的查询结果进行合并后得到最后的查询结果文件。
步骤D3821,根据查询子任务中的SessionID判断是否是新发起的查询请求。每次发出查询子任务时,在查询子任务中包含SessionID,同一个查询子任务中的SessionID相同。
步骤D2822,判断是否有去重命令;如果有去重命令执行步骤D2823,否则执行步骤D2824。
步骤D2823,根据DISTINCT关键字的位置,通过bloom filter进行字段去重。
步骤D2824,判断是否有分组命令,如果有分组命令执行步骤D2825;否则执行步骤D2826。
步骤D2825,统计分组过程先从临时文件中读取结果集,由于临时文件中保存的结果集是已经经过上次分组运算后的数据,只需比较每个分组的第一条记录,判断本批次的数据是否与上批次统计后的结果集属于同一分组。
步骤D2826,是否有统计函数SUM、COUNT、AVG、MAX、MIN、如果有则执行步骤D2827;否则执行步骤D2828。
步骤D2827,根据统计函数命令,计算具体的数值,SUM对分组后的字段计算具体数值,COUNT统计记录条数,AVG计算平均值,MAX选择最大值,MIN选择最小值。在计算过程中涉及到两个批次之间的合并操作。例如,对于COUNT、SUM直接与上一批次计算的结果累加;对于MAX、MIN统计函数选取当前批次与上一个批次的最大或最小值。
步骤D2828,判断分批次查询是否结束,即判断是否已查询了所有的数据集,如果没有结束,执行步骤D2820;否则执行步骤D2829。
步骤D2829,对最后的结果集进行全局排序,排序内容可以针对某一个字段进行排序,可以针对聚合函数SUM、COUNT、AVG等计算结果进行排序,默认结果集采用升序排序规则。
步骤D2830,把统计的结果由临时文件转化为最终的结果文件,并按照指定的格式进行数据的导出,以返回结果集。
根据本发明的又一实施例,海量结构化数据的分布式查询方法还可以包括:步骤3,对分布式查询返回的结果集进行汇总,并将该结果集呈现给用户。
图4示出根据本发明的一个实施例的对查询结果集进行汇总的各步骤的流程图。如图4所示,包括:
步骤311,对分布式返回的结果集进行合并,之后,判断是否有全局统计、分析类查询条件,如Group By、Order By、SUM、COUNT、AVG、TOP、LIMIT、MAX、MIN等需要汇总后执行分析类的查询命令;如果有,执行步骤312,如果没有执行步骤313。
步骤312,根据统计分析查询命令,执行全局统计、分析类操作。
步骤313,对生成的结果集根据用户要求的格式、路径生成结果文件,并将该结果文件呈现给用户。为此,本发明提供分页查询机制,所谓分页查询机制是指用户可以***示数据集中的某一部分数据集进行界面展示,如经过步骤313后,生成的结果文件中一共有i条记录,界面上每页可以显示j条记录(i>j),则一共有页(取i/j的上整数),用户可以根据需要直接选择结果集中的任意一页进行展示。之后,退出查询操作。
本发明的海量结构化数据分布式查询方法,由于采用了分批查询并返回结果集,因此在不需要大量结果集的应用下,能够使查询结果集在达到一定阈值后,直接返回给用户端,也可以根据需要将查询结果进行暂存以支持分批查询操作。因此对于界面展示的查询应用,选择单批次返回结果集用于在界面上进行展示;而对于具有数据统计分析功能的查询应用,通过保存的查询状态,进行多批次查询,直到查询到满足条件的所有结果集为止。因此在海量数据管理***中,本发明既能满足对返回结果集的数据需求量小但是需要快速响应这一类型应用的需求(例如界面展示查询类型),也能满足对响应时间要求不高但需要返回大量结果集的数据统计分析查询这一类型应用的需求(例如以数据挖掘为应用背景的信息分析)。
由于在分布式海量结构化数据存储***中建立了索引以及建立了复杂查询条件分解和并发子查询任务调度机制,因此,本发明通过充分利用分布式环境下的计算资源,并发执行查询子任务,从而提高了海量结构化数据的查询效率。
在流数据等应用背景下,近期加载数据具有很高的使用频率。基于此,根据本发明的一个实施例,提出一种数据存储方法,利用双滑动窗口结构将近期加载的数据进行缓存,并且通过对所缓存的数据进行查询,以提高流数据应用下的查询效率。
图5为双滑动窗口结构及其工作原理的示意图。如图5所示,该双滑动窗口结构包括:数据写入窗口和数据查询窗口。其中,数据写入窗口接收实时加载的数据,为数据建立索引,并修改相关的***元数据信息;数据查询窗口接收查询子任务,并根据建立的元数据记录信息直接查询本窗口的数据。其中,数据查询窗口和数据写入窗口根据时间周期进行流式转变。
例如将时间窗口设置为5分钟。如图5所示,当时间达到5分钟时,数据写入窗口内保存的是完整的5分钟内的数据,此时数据写入窗口不再写入新数据,窗口角色转化为数据查询窗口。重新开辟新的缓存结构接收加载数据,生成新的数据写入窗口。数据查询窗口内保证完整的5分钟内记录数据,接收查询命令,根据元数据记录信息直接查询本窗口的数据,返回满足条件的结果集。当再经过一个写入周期时,会有新的数据查询窗口产生。此时旧的数据查询窗口不再提供数据查询服务,而是通过网络把该窗口内缓存的批量数据进行存储(例如存储到硬盘中)。待窗口内的数据全部写入被存储后回收该窗口使用的资源。从而实现多个窗口之间的角色根据时间周期的流式转变。
基于上述双滑动窗口结构,根据本发明的一个实施例,提出一种海量结构化数据分布式存储方法。如图6所示,根据本发明的海量结构化数据分布式存储方法包括:
步骤1,从用户端接收高速加载的数据。
步骤2,建立具有固定查询周期的双滑动窗口结构,以将加载的数据进行缓存,该双滑动窗口结构在后期的数据查询步骤中还使能对缓存数据的查询。
数据缓存装置利用高速缓存设备接收实时加载的数据并进行本地缓存。通常数据缓存装置通过开辟大存储空间内存或固态硬盘实现。经过固定的时间周期,数据缓存装置会把缓存的数据写入到数据存储管理装置中,实现数据持久存储。
通过本发明的海量结构化数据分布式存储方法,能够实现对新加载数据的缓存,从而在后期查询数据时能够提高流数据这种对近期加载数据使用频率高的应用下的查询效率。
根据本发明的一个实施例,可以基于上述将新加载的数据进行缓存的海量结构化数据的分布式存储方法,在对分布式存储的数据并发执行分批次查询的同时,对通过双滑动窗口结构实现分布式缓存的每组数据并发执行分批次查询,并分布式返回结果集。
基于上述分布式数据存储方法,根据本发明的一个实施例,提出另一种海量结构化数据的分布式查询方法。如图7所示,该查询方法包括:
步骤1,接收用户发出的查询任务并将查询任务分解为多个查询子任务。
步骤2,根据该多个查询子任务,对分布式缓存的每组数据并发执行分批次查询,并分布式返回查询到的结果集。
其中对在将查询任务分解为多个查询子任务的步骤中也可以根据分区类查询条件、过滤类查询条件或全局统计、分析类查询条件将查询任务分解为多个查询子任务的步骤,从而在进行查询时进一步提高查询效率。
根据本发明的另一实施例,该海量结构化数据的分布式查询方法还包括:步骤3,对分批返回的查询结果集进行汇总,并将该结果集呈现给用户。
根据本发明的又一实施例,该海量结构化数据的分布式查询方法还包括在对分布式缓存的每组数据并行执行分批次查询的同时还对分布式存储的每组数据并行执行分批次查询。
根据本发明的另一实施例,也可以采用如图2和图3所示的方式对分布式缓存的每组数据进行分批查询。
本发明通过直接对加载数据进行缓存,并对缓存的数据直接进行查询操作,因此无需等到所有数据统一存储之后再执行查询,从而尤其提高了近期存储的数据使用频率非常高(例如日志类流记录数据)这种应用下的查询效率。
当然,本领域技术人员也可以理解,在前面描述的针对分布式存储的每组数据执行分批次查询的同时
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (20)
1.一种海量结构化数据的分布式查询方法,包括:数据加载步骤和查询步骤,所述数据加载步骤包括:从用户端接收高速加载的数据,利用双滑动窗口结构,将加载的数据进行分布式缓存;其中该双滑动窗口结构包括数据写入窗口和数据查询窗口,该数据写入窗口用于接收实时加载的数据,并修改相关的***元数据信息;该数据查询窗口用于接收查询子任务,并根据建立的元数据记录信息直接查询本窗口的数据;所述数据查询窗口和数据写入窗口根据时间周期进行流式转变,进行流式转变的方式如下:一个写入周期完成时,当前的数据写入窗口的角色转化为数据查询窗口,重新开辟新的缓存结构接收加载数据,生成新的数据写入窗口;当再经过一个写入周期,新的数据查询窗口产生,此时旧的数据查询窗口不再提供数据查询服务,回收该旧的数据查询窗口使用的资源,从而实现多个窗口之间的角色根据时间周期的流式转变;
所述查询步骤包括:
步骤1,接收用户发出的查询任务并根据查询条件将查询任务分解为多个查询子任务;以及
步骤2,根据该多个查询子任务中的每个查询子任务,对分布式存储的各组数据并发执行分批次查询,并分布式返回查询到的结果集,其中,所述查询子任务被所述数据查询窗口接收,所述数据查询窗口根据建立的元数据记录信息对本窗口缓存的数据直接进行查询操作。
2.如权利要求1所述的分布式查询方法,还包括:步骤3,对分布式返回的结果集进行汇总,并将汇总后的结果集呈现给用户。
3.如权利要求1或2所述的分布式查询方法,其中步骤1包括根据分区类查询条件、过滤类查询条件或全局统计分析类查询条件将查询任务分解为多个查询子任务。
4.如权利要求3所述的分布式查询方法,其中根据分布式存储的数据的索引类型设置分区类查询条件。
5.如权利要求4所述的分布式查询方法,其中根据以时间属性建立的索引,以时间属性设置该分区类查询条件。
6.如权利要求3所述的分布式查询方法,其中对分布式存储的各组数据并发执行分批次查询的步骤包括针对分布式存储的每组数据执行以下步骤:
步骤211,为查询分布式存储数据的操作设置单次最大返回记录数目;
步骤212,根据查询子任务对存储的数据进行查询,并且基于该单次最大返回记录数目,获得结果集;
步骤213,判断该结果集中的记录数目是否达到单次最大返回记录数目,如果未达到单次最大返回记录数目,则执行步骤215,如果达到单次最大返回记录数目,则由用户确定是否继续进行查询,如果需要继续查询即为多次查询,则执行步骤214,否则为单次查询,执行步骤215;
步骤214,保存当前的查询状态并基于该查询状态继续进行查询,直到获得包括符合查询条件的所有记录的结果集;以及
步骤215,返回查询到的结果集。
7.如权利要求6所述的分布式查询方法,其中步骤212包括通过分区类查询条件获得目标索引分片,在每个索引分片上并发执行过滤类查询条件,以获得结果集。
8.如权利要求7所述的分布式查询方法,其中步骤212还包括:在获得结果集之后,执行全局统计、分析类查询条件。
9.如权利要求8所述的分布式查询方法,其中执行全局统计、分析类查询条件包括:根据查询子任务中的分组命令,利用hash算法进行数据集快速分组操作。
10.如权利要求8所述的分布式查询方法,其中执行全局统计、分析类查询条件还包括:根据查询子任务中的去重命令进行组内去重或全局去重。
11.如权利要求8所述的分布式查询方法,其中执行全局统计、分析类查询条件包括根据统计函数SUM、COUNT、AVG、MAX、MIN对查询结果计算统计结果,其中SUM是对分组后的字段计算具体数值,COUNT是统计记录条数,AVG是计算平均值,MAX是查询到的所有记录中的最大值,MIN是查询到的所有记录中的最小值。
12.如权利要求6所述的分布式查询方法,其中步骤212包括:当查询到的符合查询条件的记录数目达到该单次最大返回记录数目时获得结果集,或者虽然查询到的符合查询条件的记录未达到该单次最大返回记录数目但已经完成了对所有存储数据的查询时获得的结果集。
13.如权利要求6所述的分布式查询方法,其中步骤213包括:当该结果集中的记录数目等于单次最大返回记录数目时,将“未全面查询”的标记返回给用户,用户基于该标记根据实际需要确定是否继续查询。
14.如权利要求6所述的分布式查询方法,其中步骤214包括:为每个查询子任务提供一个与其相关的标识符,并且根据该标识符保存当前的查询状态。
15.如权利要求2所述的分布式查询方法,其中步骤3包括:
步骤311,将分布式返回的结果集进行合并;
步骤312,根据统计分析查询命令,对合并后的结果集执行全局统计、分析类操作;以及
步骤313,对生成的结果集根据用户要求的格式、路径生成结果文件,并将该结果文件呈现给用户。
16.如权利要求6所述的分布式查询方法,还包括在步骤214之后,对所有的结果集进行全局排序。
17.如权利要求2所述的分布式查询方法,其中步骤3包括通过分页查询机制,将汇总后的结果集分页呈现给用户。
18.如权利要求1或2所述的分布式查询方法,其中步骤2还包括:在对分布式存储的数据并发执行分批次查询的同时,对通过双滑动窗口结构实现分布式缓存的每组数据并发执行分批次查询,并分布式返回结果集。
19.如权利要求18所述的分布式查询方法,其中该双滑动窗口结构包括数据写入窗口和数据查询窗口,该数据写入窗口接收实时加载的数据,并修改相关的***元数据信息;该数据查询窗口接收查询子任务,并根据建立的元数据记录信息直接查询本窗口的数据。
20.一种海量结构化数据分布式查询***,包括:
数据加载装置,用于从用户端接收高速加载的数据,利用双滑动窗口结构,将加载的数据进行分布式缓存;其中该双滑动窗口结构包括数据写入窗口和数据查询窗口,该数据写入窗口用于接收实时加载的数据,并修改相关的***元数据信息;该数据查询窗口用于接收查询子任务,并根据建立的元数据记录信息直接查询本窗口的数据;所述数据查询窗口和数据写入窗口根据时间周期进行流式转变,进行流式转变的方式如下:一个写入周期完成时,当前的数据写入窗口的角色转化为数据查询窗口,重新开辟新的缓存结构接收加载数据,生成新的数据写入窗口;当再经过一个写入周期,新的数据查询窗口产生,此时旧的数据查询窗口不再提供数据查询服务,回收该旧的数据查询窗口使用的资源,从而实现多个窗口之间的角色根据时间周期的流式转变;
用于接收用户发出的查询任务并根据查询条件将查询任务分解为多个查询子任务的装置;以及
用于根据该多个查询子任务中的每个查询子任务对分布式存储的数据并发执行分批次查询、并分布式返回查询到的结果集的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110442091.0A CN102521406B (zh) | 2011-12-26 | 2011-12-26 | 海量结构化数据复杂查询任务的分布式查询方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110442091.0A CN102521406B (zh) | 2011-12-26 | 2011-12-26 | 海量结构化数据复杂查询任务的分布式查询方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521406A CN102521406A (zh) | 2012-06-27 |
CN102521406B true CN102521406B (zh) | 2014-06-25 |
Family
ID=46292319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110442091.0A Active CN102521406B (zh) | 2011-12-26 | 2011-12-26 | 海量结构化数据复杂查询任务的分布式查询方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521406B (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841944A (zh) * | 2012-08-27 | 2012-12-26 | 南京云创存储科技有限公司 | 一种实现大数据实时处理的方法 |
CN103034735B (zh) * | 2012-12-26 | 2017-02-08 | 北京讯鸟软件有限公司 | 一种大数据分布式文件导出方法 |
CN103106261B (zh) * | 2013-01-28 | 2016-02-10 | 中国电子科技集团公司第二十八研究所 | 基于窄带云数据服务的分布式查询方法 |
CN104252481B (zh) * | 2013-06-27 | 2018-10-19 | 阿里巴巴集团控股有限公司 | 主从数据库一致性的动态校验方法和装置 |
CN103399944A (zh) * | 2013-08-14 | 2013-11-20 | 曙光信息产业(北京)有限公司 | 数据去重查询的实现方法和实现装置 |
CN103544259B (zh) * | 2013-10-16 | 2017-01-18 | 国家计算机网络与信息安全管理中心 | 分组聚集排序TopK查询处理方法及*** |
CN104572676B (zh) * | 2013-10-16 | 2017-11-17 | ***股份有限公司 | 一种针对多数据库表的跨库分页查询方法 |
CN103631910A (zh) * | 2013-11-26 | 2014-03-12 | 烽火通信科技股份有限公司 | 一种分布式数据库多列复合查询的***及方法 |
CN104951462B (zh) | 2014-03-27 | 2018-08-03 | 国际商业机器公司 | 用于管理数据库的方法和*** |
CN104376029B (zh) * | 2014-04-10 | 2017-12-19 | 北京亚信时代融创咨询有限公司 | 一种数据的处理方法及*** |
CN103955486B (zh) * | 2014-04-14 | 2017-08-01 | 五八同城信息技术有限公司 | 分布式服务***及其数据更新、数据查询的方法 |
CN104008191B (zh) * | 2014-06-12 | 2018-09-28 | 北京京东尚科信息技术有限公司 | 一种数据查询方法 |
CN105468651B (zh) * | 2014-09-12 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 一种关系数据库数据查询方法及*** |
CN105574052A (zh) * | 2014-11-06 | 2016-05-11 | 中兴通讯股份有限公司 | 数据库查询方法及装置 |
CN104361090B (zh) * | 2014-11-17 | 2018-01-05 | 浙江宇视科技有限公司 | 数据查询方法及装置 |
CN104615726B (zh) * | 2015-02-06 | 2017-12-22 | 北京神舟航天软件技术有限公司 | 一种基于缓加载技术展示大量业务对象的方法 |
CN105183901A (zh) * | 2015-09-30 | 2015-12-23 | 北京京东尚科信息技术有限公司 | 一种数据查询引擎读取数据库表的方法及装置 |
CN105243169B (zh) * | 2015-11-12 | 2019-01-29 | 中国建设银行股份有限公司 | 一种数据查询方法及*** |
CN107479962B (zh) * | 2016-06-08 | 2021-05-07 | 阿里巴巴集团控股有限公司 | 一种用于任务下发的方法与设备 |
CN107784032B (zh) * | 2016-08-31 | 2020-06-16 | 华为技术有限公司 | 一种数据查询结果的渐进式输出方法、装置及*** |
CN109791543B (zh) | 2016-09-30 | 2021-02-12 | 华为技术有限公司 | 执行多表连接操作的控制方法及对应装置 |
CN106570145B (zh) * | 2016-10-28 | 2020-07-10 | 中国科学院软件研究所 | 一种基于分层映射的分布式数据库结果缓存方法 |
CN106776848B (zh) * | 2016-11-04 | 2020-04-17 | 广州市诚毅科技软件开发有限公司 | 一种数据库查询方法及装置 |
CN106874400A (zh) * | 2017-01-16 | 2017-06-20 | 努比亚技术有限公司 | 一种数据处理方法及服务器 |
CN107103032B (zh) * | 2017-03-21 | 2020-02-28 | 中国科学院计算机网络信息中心 | 一种分布式环境下避免全局排序的海量数据分页查询方法 |
CN110019355A (zh) * | 2017-09-27 | 2019-07-16 | 北京国双科技有限公司 | 独立数据计算方法及装置 |
CN107992516A (zh) * | 2017-10-27 | 2018-05-04 | 平安科技(深圳)有限公司 | 电子装置、数据查询的方法及存储介质 |
CN107832406B (zh) * | 2017-11-03 | 2020-09-11 | 北京锐安科技有限公司 | 海量日志数据的去重入库方法、装置、设备及存储介质 |
CN108345648B (zh) * | 2018-01-18 | 2021-01-26 | 奇安信科技集团股份有限公司 | 一种基于列式存储的获取日志信息的方法及装置 |
CN109657018B (zh) * | 2018-11-13 | 2024-05-07 | 平安科技(深圳)有限公司 | 一种分布式车辆行驶数据查询方法及终端设备 |
CN109766366A (zh) * | 2019-01-07 | 2019-05-17 | 深圳市活力天汇科技股份有限公司 | 一种国际机票异步查询方法 |
CN110321388B (zh) * | 2019-02-26 | 2021-07-02 | 南威软件股份有限公司 | 一种基于Greenplum的快速排序查询方法及*** |
CN109947796B (zh) * | 2019-04-12 | 2021-04-30 | 北京工业大学 | 一种分布式数据库***查询中间结果集的缓存方法 |
CN110187958B (zh) * | 2019-06-04 | 2020-05-05 | 上海燧原智能科技有限公司 | 一种任务处理方法、装置、***、设备及存储介质 |
CN110941619B (zh) * | 2019-12-02 | 2023-05-16 | 浪潮软件股份有限公司 | 针对多种使用场景的图数据存储模型和结构的定义方法 |
CN111767560A (zh) * | 2020-06-24 | 2020-10-13 | 中国工商银行股份有限公司 | 一种多数据源的聚合查询方法及装置 |
CN112637267B (zh) * | 2020-11-27 | 2023-06-02 | 成都质数斯达克科技有限公司 | 业务处理方法、装置、电子设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001076192A3 (en) * | 2000-03-30 | 2002-02-21 | Intel Corp | Method and device for distributed caching |
CN101251861A (zh) * | 2008-03-18 | 2008-08-27 | 北京锐安科技有限公司 | 一种海量数据加载和查询的方法 |
CN101908075A (zh) * | 2010-08-17 | 2010-12-08 | 上海云数信息科技有限公司 | 基于sql的并行计算***及方法 |
CN102006330A (zh) * | 2010-12-01 | 2011-04-06 | 北京瑞信在线***技术有限公司 | 分布式缓存***、数据的缓存方法及缓存数据的查询方法 |
CN102254024A (zh) * | 2011-07-27 | 2011-11-23 | 国网信息通信有限公司 | 海量数据处理***及方法 |
-
2011
- 2011-12-26 CN CN201110442091.0A patent/CN102521406B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001076192A3 (en) * | 2000-03-30 | 2002-02-21 | Intel Corp | Method and device for distributed caching |
CN101251861A (zh) * | 2008-03-18 | 2008-08-27 | 北京锐安科技有限公司 | 一种海量数据加载和查询的方法 |
CN101908075A (zh) * | 2010-08-17 | 2010-12-08 | 上海云数信息科技有限公司 | 基于sql的并行计算***及方法 |
CN102006330A (zh) * | 2010-12-01 | 2011-04-06 | 北京瑞信在线***技术有限公司 | 分布式缓存***、数据的缓存方法及缓存数据的查询方法 |
CN102254024A (zh) * | 2011-07-27 | 2011-11-23 | 国网信息通信有限公司 | 海量数据处理***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102521406A (zh) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521406B (zh) | 海量结构化数据复杂查询任务的分布式查询方法和*** | |
CN102521405B (zh) | 支持高速加载的海量结构化数据存储、查询方法和*** | |
CN103853727B (zh) | 提高大数据量查询性能的方法及*** | |
US10642831B2 (en) | Static data caching for queries with a clause that requires multiple iterations to execute | |
CN109241093B (zh) | 一种数据查询的方法、相关装置及数据库*** | |
Santos et al. | Real-time data warehouse loading methodology | |
CN106844703B (zh) | 一种面向数据库一体机的内存数据仓库查询处理实现方法 | |
CN103020204B (zh) | 一种对分布式顺序表进行多维区间查询的方法及其*** | |
CN104424258B (zh) | 多维数据查询的方法、查询服务器、列存储服务器及*** | |
CN103678665A (zh) | 一种基于数据仓库的异构大数据整合方法和*** | |
CN102629269B (zh) | 一种嵌入式数据库的检索及存储方法 | |
CN104850572A (zh) | HBase非主键索引构建与查询方法及其*** | |
US20170068675A1 (en) | Method and system for adapting a database kernel using machine learning | |
CN104933160B (zh) | 一种面向安全监测业务分析的etl框架设计方法 | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
CN102779138B (zh) | 实时数据的硬盘存取方法 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN103678491A (zh) | 一种基于Hadoop中小文件优化和倒排索引的方法 | |
CN102184222A (zh) | 一种在大数据量存储中快速检索的方法 | |
CN109783441A (zh) | 基于Bloom Filter的海量数据查询方法 | |
CN109213760B (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
Liu et al. | Using provenance to efficiently improve metadata searching performance in storage systems | |
CN106776810B (zh) | 一种大数据的数据处理***及方法 | |
KR101955376B1 (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
D’silva et al. | Secondary indexing techniques for key-value stores: Two rings to rule them all |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180824 Address after: 100044 B sixteen, No. 22 building, South Road, Haidian District, Beijing. Patentee after: Guoxin electronic bill Platform Information Service Co., Ltd. Address before: 100190 South Road, Zhongguancun Science Academy, Haidian District, Beijing 6 Patentee before: Institute of Computing Technology, Chinese Academy of Sciences |