CN106599052B - 一种基于Apache Kylin的数据查询系统及其方法 - Google Patents
一种基于Apache Kylin的数据查询系统及其方法 Download PDFInfo
- Publication number
- CN106599052B CN106599052B CN201611005883.0A CN201611005883A CN106599052B CN 106599052 B CN106599052 B CN 106599052B CN 201611005883 A CN201611005883 A CN 201611005883A CN 106599052 B CN106599052 B CN 106599052B
- Authority
- CN
- China
- Prior art keywords
- query
- data
- index
- module
- metadata
- 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
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/2453—Query optimisation
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于Apache Kylin的数据查询系统及其方法,该系统包括:数据源模块、复合离线引擎模块、在线查询模块依次连接;在线查询模块包括:SQL解析引擎模块、元数据模块、存储索引模块;还包括一种方法:S1,先从数据源中读取多张关系表,构成一个数据模型;S2,多张关系表经过连接,为一张数据表,再排序;S3,排序后的数据表保存为分片存储结构数据,以及为排序后的数据表计算多路复合索引;S4,SQL查询解析,判断该查询属于明细查询,获得结果。通过本发明构建的索引能够被用于表格拼接查询,包含多张数据表格时,索引起作用,加速查询对任意复杂的查询条件都可以做索引,精确定位索引,查询时间大大减少。
Description
技术领域
本发明涉及大规模数据查询的技术领域,尤其涉及了一种基于Apache Kylin的数据查询系统及其方法。
背景技术
随着信息化技术的飞速发展,全球每时每刻都在产生海量的数据,如何利用如此大规模的数据获取有用信息成为了至关重要的问题。该问题涉及大规模数据的存储、处理和应用等等,针对大规模数据的高效查询就是其中关键的一环。由于单台计算机的存储容量和计算资源的限制,其无法解决上述大规模数据处理的问题。与之相比,分布式计算在解决大规模数据方面具有显著优势,其利用多台计算机的计算能力,同时并行地处理数据,以达到快速处理数据的目的。
传统的大数据处理技术主要依靠三个关键技术:大规模并行处理,列式存储,和倒排索引,主流的大数据查询系统如Hive,SparkSQL,Impala,Presto等等都是采用这些技术,其主导思想都是通过计算机集群并行扫描和处理数据,同时针对存储慢的特点使用索引、压缩、列式存储等技巧提升I/O吞吐率,Apache Hive的最大局限是O(N)的查询时间复杂度,即查询时间与被查询数据总量呈至少线性的增长关系。原因在于查询是在线计算的,如果数据量增长10倍,无论是并行计算、或是列式存储、或是索引,都不可避免要处理至少10倍的计算量,如果考虑表的连接,计算量增长可能远不止10倍,可能达到100倍以上,于是查询时间也不可避免的增长至少10倍。这在数据量持续膨胀的今天和可预见的将来是无法接受的。
除了查询时间复杂度以外,Apache Hive的索引也存在一些缺陷,列举如下:Apache Hive构建的索引不能够被用于表格拼接查询,即当用户的数据查询范围包含多张数据表格时,Apache Hive的索引不起作用,无法起到加速查询的功能;Apache Hive的索引局限在单一的列上,无法对任意复杂的查询条件做索引;Apache Hive缺乏对于特高基数据集的精确定位索引,查询时需要扫描大部分原数据,查询耗时随数据量的增加而变长。
发明内容
本发明所要解决的技术问题是:由于目前的Apache Hive构建的索引不能够被用于表格拼接查询,即当用户的数据查询范围包含多张数据表格时,Apache Hive的索引不起作用,无法起到加速查询的功能;Apache Hive的索引局限在单一的列上,无法对任意复杂的查询条件做索引;Apache Hive缺乏对于大量的数据的精确定位索引,查询时需要扫描大部分原数据,查询耗时随数据量的增加而变长。
为解决上述技术问题,本发明公开了一种基于Apache Kylin的数据查询系统,该系统包括:数据源模块、复合离线引擎模块、在线查询模块;
数据源模块、复合离线引擎模块、在线查询模块依次连接;数据源模块的数据导入复合离线引擎模块,经过复合离线引擎模块处理后进入在线查询模块进行查询;
在线查询模块包括:SQL解析引擎模块、元数据模块、存储索引模块;SQL解析引擎模块与元数据模块连接;SQL解析引擎模块与存储索引模块连接,读取存储索引模块中的数据;
元数据模块分别与数据源模块、SQL解析引擎模块、存储索引模块连接;
复合离线引擎模块与存储索引模块连接,将在复合离线引擎模块先后计算或并行计算的数据输入到存储索引模块。
本发明的有益效果:通过扩展Apache Kylin以及预处理,大幅加速明细数据的查询速度,通过实验验证,每扫描一亿条数据的时间只有数百毫秒,再利用分布式计算的并行处理能力,本发明能够在数秒内为用户返回针对万亿条数据的查询结果,而现有的解决方案的查询时间为数分钟到数小时不等,相比之下,本发明显著提升大规模数据的查询速度。
进一步,所述的SQL解析引擎模块包括:Kylin Query Engine模块、Kylin Routing模块,所述的Kylin Query Engine模块与Kylin Routing模块连接。
进一步,所述的复合离线引擎模块包括:Kylin Cube引擎模块和明细预计算引擎模块。
进一步,所述的存储索引模块包括:Kylin Cube存储索引模块、分片数据和多路复合索引模块,所述的SQL解析引擎模块分别读取Kylin Cube存储索引模块和分片数据和多路复合索引模块的数据。
上述进一步的有益效果:在线查询部分,由于离线计算完成了主要计算工作,在线查询只需经过SQL解析,剥离过滤条件并转换为对索引的检索,定位相关数据分页,读取并返回结果即可,整个过程的处理主要是索引检索和数据读取,完全无需复杂的关系表连接、排序、聚合等运算,因此可以达到常量级的查询速度。
进一步,所述的元数据模块连接数据源模块,元数据模块控制数据源模块中数据导入的定时或者按系统要求触发数据开始,抽出数据源记录,以及元数据模块定义数据源模块中的参数。
进一步,所述的元数据模块连接存储索引模块,用于定义分片数据和多路复合索引模块的参数。
一种基于Apache Kylin的数据查询方法,该方法包括如下步骤:
S1,先从数据源模块中读取多张关系表,元数据模块根据定义将从数据源模块中读取的多张关系表构成一个数据模型;
S2,根据S1中构成的数据模型中多张关系表经过复合离线引擎模块连接,将连接的结果保存为一张数据表,再将得到的数据表依据元数据模块中定义的排序列编号进行排序;
S3,将S2中排序后的数据表保存为分片存储结构数据,以及为排序后的数据表计算多路复合索引;
S4,解析SQL查询,然后判断所述SQL查询属于明细查询或聚合查询,若是明细查询,则读取S3中的分片存储结构数据及多路复合索引数据,获得结果;若是聚合查询,则读取Kylin Cube存储索引模块的数据,获得结果。
上述发明的有益效果:本发明构建的索引能够被用于表格拼接查询,即当用户的数据查询范围包含多张数据表格时,索引起作用,加速查询的功能;索引不局限在单一的列上,对任意复杂的查询条件都可以做索引;对于特高基数据集的精确定位索引,查询时需要扫描大部分原数据,查询消耗的时间大大减少。
进一步:所述的S3中分片存储的方式为:将S2中数据表中所有记录被均匀的分配到多个分片中,分片的数目由元数据模块控制,每个分片独立存储为一个文件,其中的所有记录先按行分组,组内的记录按列存储,每一列上再分页,每页的记录数由元数据模块控制。
进一步:所述的S3中为排序后的数据表计算多路复合索引步骤为:
S31,在元数据中,将每个需要计算的索引定义为一个函数F(C1,C2,..,Cm),其中C1,C2,…Cm是关系表上的列,函数至少1个,记为F集合;
S32,对S31中的F集合中的每一个函数Fi,计算函数Fi每一行为Fi(C1,C2,..,Cm),将计算Fi(C1,C2,..,Cm)的结果与该行所在的页号建立倒排索引,得到页码编号。
进一步,所述的S4步骤包括:
S41,解析SQL查询,然后判断所述SQL查询属于明细查询或聚合查询,若判断该查询属于明细查询,则读取S3中的分片存储结构数据及多路复合索引数据;
S42,变换S41中的SQL查询中查询条件统一为函数比常数形态;
S43,根据元数据,判定变换后查询条件是否为预计算索引,即查询条件转化的函数是否属于F集合,若查询条件转化的函数不属于F集合,则需要进行在线计算,无法再利用预计算的索引;
S44,对S3中的每一个分片查询索引得到符合条件的页编号集合;
S45,根据S44得到的页编号集合,并行扫描每一列存储中的指定页,依据页编号倒排索引到页地址,直接寻址读取记录;
S46,过滤S45中页内每一行数据,得到查询结果;
S47,汇总每一分片的查询结果,得到SQL最终的查询结果。
有益效果:在线查询部分,由于离线计算完成了主要计算工作,在线查询只需经过SQL解析,剥离过滤条件并转换为对索引的检索,定位相关数据分页,读取并返回结果即可,整个过程的处理主要是索引检索和数据读取,完全无需复杂的关系表连接、排序、聚合等运算,因此可以达到常量级的查询速度。
附图说明
图1为本发明的一种基于Apache Kylin的数据查询系统的示意图;
图2为本发明的一种基于Apache Kylin的数据查询方法的流程图;
图3为本发明的Apache Kylin的整个构架示意图;
图4为本发明的深度扩展后的示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如附图1所示的,一种基于Apache Kylin的数据查询系统,该系统包括:数据源模块、复合离线引擎模块、在线查询模块;
数据源模块、复合离线引擎模块、在线查询模块依次连接;数据源模块的数据导入复合离线引擎模块,经过复合离线引擎模块处理后进入在线查询模块进行查询;
在线查询模块包括:SQL解析引擎模块、元数据模块、存储索引模块;SQL解析引擎模块与元数据模块连接;SQL解析引擎模块与存储索引模块连接,读取存储索引模块中的数据;
元数据模块分别与数据源模块、SQL解析引擎模块、存储索引模块连接;
复合离线引擎模块与存储索引模块连接,将在复合离线引擎模块先后计算或并行计算的数据输入到存储索引模块。
如图2所示的一种基于Apache Kylin的数据查询方法,该方法包括如下步骤:S1,先从数据源模块中读取多张关系表,元数据模块根据定义将从数据源模块中读取的多张关系表构成一个数据模型;
S2,根据S1中构成的数据模型中多张关系表经过复合离线引擎模块连接,将连接的结果保存为一张数据表,再将得到的数据表依据元数据模块中定义的排序列编号进行排序;
S3,将S2中排序后的数据表保存为分片存储结构数据,以及为排序后的数据表计算多路复合索引;
所述的S3中分片存储的方式为:将S2中数据表中所有记录被均匀的分配到多个分片中,分片的数目由元数据模块控制,每个分片独立存储为一个文件,其中的所有记录先按行分组,组内的记录按列存储,每一列上再分页,每页的记录数由元数据模块控制。
S31,在元数据中,将每个需要计算的索引定义为一个函数F(C1,C2,..,Cm),其中C1,C2,…Cm是关系表上的列,函数至少1个,记为F集合;
S32,对S32中的F集合中的每一个函数Fi,为每一行计算Fi(C1,C2,..,Cm),将计算Fi(C1,C2,..,Cm)倒排索引,得到页编号。
S4,解析SQL查询,然后判断所述SQL查询属于明细查询或聚合查询,若是明细查询,则读取S3中的分片存储结构数据及多路复合索引数据,获得结果;若是聚合查询,则读取Kylin Cube存储索引模块的数据,获得结果。
S3中分片存储结构具体为:将S2中数据表中的所有记录可以被均匀的分配到多个分片中,分片的数目由元数据控制,每个分片独立存储为一个文件,其中的所有记录先按行分组,组内的记录按列存储,每一列上再分页,每页的记录数由元数据控制。
S3中为排序后的数据表计算多路复合索引步骤为:
S31,元数据中,将每个需要计算的索引定义为一个函数F(C1,C2,..,Cm),其中C1,C2,…Cm是关系表上的列,函数至少1个,记为F集合;
S32,对S31中的F集合中的每一个函数Fi,为每一行记录计算Fi(C1,C2,..,Cm),将计算Fi(C1,C2,..,Cm)倒排索引,得到页编号。
S4,SQL查询经过Kylin的查询引擎解析,到达Kylin Routing,Kylin Routing判断该查询属于明细查询还是聚合查询,若是明细查询,则读取S3中的分片存储结构数据及多路复合索引数据,获得结果;若是聚合查询,则读取Kylin Cube数据,获得结果。
S41,解析SQL查询,然后判断所述SQL查询属于明细查询或聚合查询,若判断该查询属于明细查询,则读取S3中的分片存储结构数据及多路复合索引数据;
S42,变换S41中的SQL查询中查询条件统一为函数比常数形态;
S43,根据元数据,判定变换后查询条件是否为预计算索引,即查询条件转化的函数是否属于F集合,若查询条件转化的函数不属于F集合,则需要进行在线计算,无法再利用预计算的索引;
S44,对S3中的每一个分片查询索引得到符合条件的页编号集合;
S45,根据S44得到的页编号集合,并行扫描每一列存储中的指定页,依据页编号倒排索引到页地址,直接寻址读取记录;
S46,过滤S45中页内每一行数据,得到查询结果;
S47,汇总每一分片的查询结果,得到SQL最终的查询结果。
Apache Hive是一个基于Hadoop的开源数据仓库工具,用于存储和处理海量结构化数据,它是Facebook2008年8月开源的一个数据仓库框架,提供了类似于SQL语法的HQL语句作为数据访问接口。
Apache Hive使用类SQL查询语法,最大限度的实现了和SQL标准的兼容,大大降低了传统数据分析人员学习的曲线;提供JDBC接口/ODBC接口,开发人员更易开发应用;以MR作为计算引擎、HDFS作为存储系统,为超大数据集设计的计算/扩展能力;统一的元数据管理(Derby、MySql等),并可与Pig、Presto等共享。
对于大规模数据查询,Hive采用Hadoop集群分布式并行计算Apache Hive驱动端编译SQL,并优化生成执行计划,执行引擎将执行计划进一步转译成MapReduce任务(也可以选用Tez或者Spark为执行引擎),交给Hadoop集群执行,这是典型的大规模并行处理,将数据处理任务分散到多个节点上并行计算,达到节省查询时间的效果,Apache Hive还能够针对数据表格中特定的数据列构建索引,该索引在数据查询时能够起提高数据查询效率的作用,达到加速数据查询的目的,Hive能适配多种文件存储格式,包括列式存储,也能应用多种压缩算法,达到提升数据读取速度的目的。
如图3所示,为本发明的技术上的整个构架:
整个架构以元数据为中心。元数据定义关系表结构,数据源连接信息,数据导入周期等。系统的所有功能都由元数据驱动。元数据的内容列表如下:
关系表结构,定义那些表需要从数据源导入,它们间连接的关系,也即数据模型,决定在线查询可以查询到的范围;数据源的连接参数;分片数据存储参数。排序字段,分片字段,并行系数,文件页内大小等;多路复合索引参数。所有索引的函数定义,索引类型等;已构建完毕的数据区间和存储地址。用于查询时检索。
根据元数据的定义,数据导入定时或者按需触发。数据导入抽取数据源记录,经过明细预计算,关系表连接、排序、编码,生成分片存储的压缩数据,并在其上建立多路复合索引。其中数据的处理和计算一般依托大规模并行计算框架实现,比如MapReduce和Spark等。下文将详细介绍计算过程和数据及索引的存储格式;在线查询部分,由于离线计算完成了主要计算工作,在线查询只需经过SQL解析,剥离过滤条件并转换为对索引的检索,定位相关数据分页,读取并返回结果即可。整个过程的处理主要是索引检索和数据读取,完全无需复杂的关系表连接、排序、聚合等运算,因此可以达到常量级的查询速度。
深度扩展Apache Kylin
如图4所示为本发明的Apache Kylin的系统架构;
本发明的总体架构与Apache Kylin的顶级架构有着不少相似之处,主要的构成模块都由元数据、数据源、明细预计算、存储和SQL引擎组成。两者的差别也很大,主要体现在第二层模块的内部设计上(比如离线计算和索引存储),在上图中并不明显。Apache Kylin以OLAP聚合查询为主,不支持原始记录的明细查询,预计算以Cube为主;本发明以明细查询为主,不支持聚合查询,预计算侧重原始记录的分片存储和多路复合索引,两者在功能上互补,离线计算的内容和计算后的数据结构都完全不同。
图4中的各部分,深度集成后,数据源记录导入由“复合离线引擎”完成,该引擎其实是一个复合体,其中包含Kylin的Cube构建引擎和本发明的明细预计算过程。数据由两个子引擎先后或并行计算,计算结果也由两部分组成,是Kylin的Cube和本发明的分片数据及多路复合索引。它们被分开独立存储,等待在线查询使用。
在线查询的部分由红色虚线框画出。SQL查询经过Kylin的查询引擎解析,到达Kylin Routing。Kylin Routing判断该查询属于明细查询还是聚合查询,明细查询读取本发明的分片数据及多路索引获得结果,聚合查询则读取Kylin Cube获得结果。
整合后的新系统弥补了Apache Kylin不支持明细查询的缺点,是一个完整的大数据高速查询引擎。
离线计算过程
离线计算是导入数据源记录,连接、排序,并创建多路复合索引的过程,该步骤如下:
S1,过程的输入是数据源中的多张关系表。这些表构成一个数据模型,可以是星型模型或者雪花模型,在元数据中定义;
S2,根据数据模型,计算这些表的连接,结果保存为一张数据表,关系数据库中产生多张表是根据数据库范式进行normalize的结果,把多张相互连接的关系表de-normalize,重新变成一张大表,这张表就叫做数据表;
S3,将数据表排序,排序依据元数据中定义的排序列;
S4,将排序后的数据表保存为分片存储结构;
S5,为排序数据表计算多路复合索引。
分片存储与多路复合索引原始记录的分片存储和其上的多路复合索引是本发明的关键,是能达到常量级明细查询速度的核心数据结构。
给定一张关系表,其中的所有记录可以被均匀的分配到多个分片中,分片的数目由元数据控制,分配方法可以随机、轮盘、哈希或者其他的方法,每个分片独立存储为一个文件,其中的所有记录按行分组,组内的记录按列存储,每一列上再分页,每页的记录数由元数据控制,单个分片文件的格式与Parquet文件格式类似。
以上述分片存储为基础,为这张关系表数据建立多重索引,叙述如下:
1):为每个列存储)内的页建编号索引,得到索引:页编号→页地址,方便之后的按页扫描;
2):根据元数据定义,为定义的列和衍生列建倒排索引;
B1,元数据中,将每个需要计算的索引定义为一个函数F(C1,C2,..,Cm),其中C1,C2,..,Cm是关系表上的列,函数可以任意复杂。这样的函数可以有多个,记为F集合;
B2,对F集合中的每一个函数Fi,为每一行计算Fi(c1,c2,..,cm)→v,倒排得到v→行号→页编号,其中c1,c2,..,cm对应该行数据上C1,C2,…,Cm列的值。函数Fi的值域记为Vi。对于每个Fi,值域的每个值可能有多行能计算得到,因此汇总所有行上的结果得到索引:Vi→页编号集合,记为Index_i。例如,当查询条件为Fi(c1,c2,...,cm)=5时,就能直接查索引找到满足条件记录所在的页编号集合;
B3,对Fi,进一步计算Vi-→页编号集合和Vi+→页编号集合,汇总当Fi小于或者大于某个值时,所有符合条件记录所在的页编号集合,分别记为Index_i-和Index_i+。
B4,最后,如果Index_i、Index_i-、Index_i+三个索引过于庞大,可以使用适当的索引压缩技术,或者合并稀疏的索引项,来压缩索引的整体大小。
3):索引技术包括但不限于B+树索引、倒排索引、哈希索引。
在线查询过程
典型的明细查询比如select*from USERS where MONTH='2016-05'and EXPENSE>INCOME,查找2016年5月份支出大于收入的用户。注意明细查询的where条件可以任意复杂,但为简单期间,仅以此例说明在线查询的流程。
步骤A1,SQL经过解析,判定为明细查询,并Routing到本发明的存储模块;
步骤A2,变换过滤条件,统一为函数比常数形态,得到两个条件MONTH='2016-05'和EXPENSE-INCOME>0;
步骤A3,由条件提取函数,得到G1(MONTH)=MONTH和G2(EXPENSE,INCOME)=EXPENSE-INCOME>0;
步骤A4,根据元数据,判定G1和G2为预计算索引(即属于F集合),若过滤条件转化的函数不属于F集合,则需要进行在线计算,无法再利用预计算的索引。
步骤A5,对USERS表的每一个分片(Shard)执行下述操作;
步骤A51,查索引得到符合条件的页编号集合,查G1对应的索引Index_g1,通过键'2016-05'得到页编号集合A,查G2对应的索引Index_g2+,通过键0得到页编号集合B,由于是AND关系,求两集合的交集得到最终符合过滤条件的页编号集合;
步骤A52,扫描数据页。根据上一步得到的页编号集合,并行扫描每一列存储(Columnar Store)中的指定页,依据“页编号→页地址”直接寻址读取记录;
步骤A53,滤过页内每一行数据,得到查询结果,因为每一页包含多条记录,其中有符合条件的,也有不符合条件的,页内记录是结果集的一个超集。因此对读取的每一行,还要再进行逐一过滤;
步骤6,汇总每一分片(Shard)的查询结果,得到SQL最终的查询结果。时间复杂度分析,对于最后返回R条记录的查询,最坏情况是扫描并过滤了M*R个数据页(每个页只包含一条符合条件的记录),M是USERS表中列的数目。由于M不可能太大,可以假设为常数,故总体查询时间复杂度为O(R)。
在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于Apache Kylin的数据查询方法,其特征在于,该方法包括如下步骤:
S1,从数据源模块中读取多张关系表,元数据模块根据定义将数据源模块中读取的多张关系表构成一个数据模型;
S2,根据S1中构成的数据模型中多张关系表经过复合离线引擎模块连接,将连接的结果保存为一张数据表,将该数据表依据元数据模块中定义的排序列编号进行排序;
S3,将S2中排序后的数据表保存为分片存储结构数据,以及为排序后的数据表计算多路复合索引;
S4,解析SQL查询,然后判断所述SQL查询属于明细查询或聚合查询,若是明细查询,则读取S3中的分片存储结构数据及多路复合索引数据,获得结果;若是聚合查询,则读取Kylin Cube存储索引模块的数据,获得结果。
2.根据权利要求1所述的一种基于Apache Kylin的数据查询方法,其特征在于,所述的S3中分片存储的方式为:将S2中数据表中所有记录被均匀的分配到多个分片中,分片的数目由元数据模块控制,每个分片独立存储为一个文件,其中的所有记录先按行分组,组内的记录按列存储,每一列上再分页,每页的记录数由元数据模块控制。
3.根据权利要求2所述的一种基于Apache Kylin的数据查询方法,其特征在于,将所述的S3中为排序后的数据表,计算多路复合索引的步骤为:
S31,在元数据中,将每个需要计算的索引定义为一个函数F(C1,C2,..,Cm),其中C1,C2,…Cm是关系表上的列,函数至少1个,记为F集合;
S32,对S31中的F集合中的每一个函数Fi,计算函数Fi每一行为Fi(C1,C2,..,Cm),将计算Fi(C1,C2,..,Cm)的结果与该行所在的页号建立倒排索引,得到页编码。
4.根据权利要求3所述的一种基于Apache Kylin的数据查询方法,其特征在于,所述的S4步骤包括:
S41,解析SQL查询,然后判断所述SQL查询属于明细查询或聚合查询,若判断该查询属于明细查询,则读取S3中的分片存储结构数据及多路复合索引数据;
S42,变换S41中的SQL查询中查询条件统一为函数比常数形态;
S43,根据元数据,判定变换后查询条件是否为预计算索引,即查询条件转化的函数是否属于F集合,若查询条件转化的函数不属于F集合,则需要进行在线计算,无法再利用预计算的索引;
S44,对S3中的每一个分片查询索引得到符合条件的页编号集合;
S45,根据S44得到的页编号集合,并行扫描每一列存储中的指定页,依据页编号倒排索引到页地址,直接寻址读取记录;
S46,过滤S45中页内每一行数据,得到查询结果;
S47,汇总每一分片的查询结果,得到SQL最终的查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611005883.0A CN106599052B (zh) | 2016-11-15 | 2016-11-15 | 一种基于Apache Kylin的数据查询系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611005883.0A CN106599052B (zh) | 2016-11-15 | 2016-11-15 | 一种基于Apache Kylin的数据查询系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106599052A CN106599052A (zh) | 2017-04-26 |
CN106599052B true CN106599052B (zh) | 2020-07-17 |
Family
ID=58591163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611005883.0A Active CN106599052B (zh) | 2016-11-15 | 2016-11-15 | 一种基于Apache Kylin的数据查询系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106599052B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108875042B (zh) * | 2018-06-27 | 2021-06-08 | 中国农业银行股份有限公司 | 一种混合联机分析处理系统及数据查询方法 |
CN109299114A (zh) * | 2018-11-21 | 2019-02-01 | 安徽云融信息技术有限公司 | 一种混合型数据库及其高效查询方法 |
CN111143397B (zh) * | 2019-12-10 | 2021-04-13 | 跬云(上海)信息科技有限公司 | 混合数据查询方法及装置、存储介质 |
US11238035B2 (en) * | 2020-03-10 | 2022-02-01 | Oracle International Corporation | Personal information indexing for columnar data storage format |
CN111427931A (zh) * | 2020-03-30 | 2020-07-17 | 深圳市康拓普信息技术有限公司 | 分布式查询引擎及其查询关系型数据库的方法 |
CN112286954B (zh) * | 2020-09-25 | 2022-08-16 | 北京邮电大学 | 基于混合引擎的多维数据分析方法和系统 |
CN112199390B (zh) * | 2020-09-30 | 2023-05-30 | 上海达梦数据库有限公司 | 一种数据库中数据查询方法、装置、设备及存储介质 |
CN114138812A (zh) * | 2021-11-29 | 2022-03-04 | 深信服科技股份有限公司 | 一种查询方法、装置、电子设备及存储介质 |
CN114220054B (zh) * | 2021-12-15 | 2023-04-18 | 北京中科智易科技股份有限公司 | 基于装备总线数据分析装备战术动作并同步展示的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN103366015A (zh) * | 2013-07-31 | 2013-10-23 | 东南大学 | 一种基于Hadoop的OLAP数据存储与查询方法 |
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8935297B2 (en) * | 2001-12-10 | 2015-01-13 | Patrick J. Coyne | Method and system for the management of professional services project information |
US7716240B2 (en) * | 2005-12-29 | 2010-05-11 | Nextlabs, Inc. | Techniques and system to deploy policies intelligently |
-
2016
- 2016-11-15 CN CN201611005883.0A patent/CN106599052B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN103366015A (zh) * | 2013-07-31 | 2013-10-23 | 东南大学 | 一种基于Hadoop的OLAP数据存储与查询方法 |
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
Non-Patent Citations (1)
Title |
---|
Apache Kylin大数据分析平台的演进;田晓旭;《http://bigdata.it168.com/a2016/0628/2747/000002747856.shtml》;20160628;1-14页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106599052A (zh) | 2017-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106599052B (zh) | 一种基于Apache Kylin的数据查询系统及其方法 | |
US9195701B2 (en) | System and method for flexible distributed massively parallel processing (MPP) database | |
CN107103032B (zh) | 一种分布式环境下避免全局排序的海量数据分页查询方法 | |
CN103559300B (zh) | 数据的查询方法和查询装置 | |
US20180276264A1 (en) | Index establishment method and device | |
CN103440288A (zh) | 一种大数据存储方法及装置 | |
CN103646073A (zh) | 一种基于HBase表的条件查询优化方法 | |
CN103646079A (zh) | 一种用于图数据库搜索的分布式索引及其并行生成方法 | |
CN103473260A (zh) | 一种面向并发olap的测试数据分层聚簇查询处理系统及方法 | |
CN109783441A (zh) | 基于Bloom Filter的海量数据查询方法 | |
CN107291770B (zh) | 一种分布式系统中海量数据的查询方法及装置 | |
CN104636349A (zh) | 一种索引数据压缩以及索引数据搜索的方法和设备 | |
CN113064866A (zh) | 一种电力业务数据整合系统 | |
CN105069117A (zh) | 一种基于存储过程的数据流效率提升方法 | |
CN104933143A (zh) | 获取推荐对象的方法及装置 | |
Kalavri et al. | Block sampling: Efficient accurate online aggregation in mapreduce | |
CN102207935A (zh) | 用于创建索引的方法和系统 | |
CN112835920B (zh) | 基于混合存储模式的分布式sparql查询优化方法 | |
CN108319604B (zh) | 一种hive中大小表关联的优化方法 | |
CA3130648A1 (en) | Data processing query method and device based on olap pre-calculation model | |
Ding et al. | Commapreduce: An improvement of mapreduce with lightweight communication mechanisms | |
CN112182031A (zh) | 数据查询方法及装置、存储介质、电子装置 | |
CN108334532A (zh) | 一种基于Spark的Eclat并行化方法、系统及装置 | |
Lou et al. | Research on data query optimization based on SparkSQL and MongoDB | |
CN109992630B (zh) | 数据模型匹配方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Han Qing Inventor after: Li Yang Inventor before: Li Yang |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |