CN113342843A - 大数据在线分析方法和系统 - Google Patents
大数据在线分析方法和系统 Download PDFInfo
- Publication number
- CN113342843A CN113342843A CN202110763018.7A CN202110763018A CN113342843A CN 113342843 A CN113342843 A CN 113342843A CN 202110763018 A CN202110763018 A CN 202110763018A CN 113342843 A CN113342843 A CN 113342843A
- Authority
- CN
- China
- Prior art keywords
- query
- statement
- storage engine
- data
- sql
- 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.)
- Pending
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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/2246—Trees, e.g. B+trees
-
- 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
-
- 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/23—Updating
-
- 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
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Abstract
本申请提供一种大数据在线分析方法和系统,在系统中设置了多种不同类型的存储引擎,在接入查询SQL语句的接入层中,针对标准SQL语句进行处理,且将标准SQL语句转换为适应于各个存储引擎的查询语句,最后基于查询语句确定目标存储引擎,在目标存储引擎中进行查询得到查询语句对应的结果数据。本方案,可支持上层统一协议接入,结合转换处理可适用于不同的存储引擎,减少了接入成本。且结合多种类型的存储引擎,可适应性地基于查询需求进行查询,满足不同查询需求的应用场景。
Description
技术领域
本申请涉及数据分析处理技术领域,具体而言,涉及一种大数据在线分析方法和系统。
背景技术
在信息化和科技革命的大背景下,企业网络化、数字化进程显著加快,使用在线分析处理(On-Line Analysis Processing,OLAP)技术的业务场景也越来越多。OLAP是一种共享多维信息的快速分析技术,其利用多维数据库技术使用户可从不同角度观察数据,支持复杂的分析操作。且侧重于对管理人员的决策支持,可以满足分析人员快速、灵活地进行大数据复量的复杂查询的要求,并且以一种直观、易懂的形式呈现查询结果,辅助决策。
但是由于实际企业的业务场景的纷繁复杂,技术人员常常需要根据不同业务的不同特点,选用不同的OLAP引擎实现,例如在Dashboard、各类报表、大屏展示、流量统计、用户行为分析等固定模式、高并发的聚合查询场景下,选用MOLAP引擎;在请求比较灵活,且并发量不大的即席查询场景下,选用ROLAP引擎实现;或者根据企业内部的业务需求,采用MOLAP+ROLAP混用的HOLAP引擎。不同引擎的实现不同,上层接入的协议也不一致,例如MOLAP常用MDX语言,ROLAP常用SQL,HOLAP常用Restful协议接入。按照业务场景选取不同的存储引擎以及实现方案,这种研发模式会导致工作量倍增,效率低下。
发明内容
本申请的目的包括,例如,提供了一种大数据在线分析方法和系统,其能够降低接入成本、满足不同查询需求的应用场景。
本申请的实施例可以这样实现:
第一方面,本申请提供一种大数据在线分析方法,应用于大数据在线分析系统,所述系统包括多个不同类型的存储引擎,所述方法包括:
在获得查询SQL语句时,对所述查询SQL语句进行认证、鉴权和流控操作,其中,所述查询SQL语句为标准SQL语句;
将所述查询SQL语句转换为适应于各所述存储引擎的查询语句,并对所述查询语句进行分析处理以确定所述查询语句对应的目标存储引擎;
根据所述查询语句对所述目标存储引擎中的业务数据进行查询处理,获得所述查询语句对应的结果数据。
在可选的实施方式中,所述对所述查询语句进行分析处理以确定所述查询语句对应的目标存储引擎的步骤,包括:
查询预先生成的路由映射表中是否存在所述查询语句对应的路由信息,若存在,则根据所述路由映射表中的路由信息确定所述查询语句对应的目标存储引擎;
若不存在,则根据所述查询语句生成执行计划信息,基于所述执行计划信息确定所述查询语句对应的目标存储引擎。
在可选的实施方式中,所述基于所述执行计划信息确定所述查询语句对应的目标存储引擎的步骤,包括:
判断所述查询语句的类型是否属于聚合分析类型,若属于聚合分析类型,则根据所述查询语句拆分出多个算子信息,并检测预先计算得到的数据模型中是否存在所述多个算子信息,若存在所述多个算子信息,则确定所述数据模型所在的第一存储引擎为目标存储引擎,若不存在所述多个算子信息,则确定具备实时计算功能的第二存储引擎为目标存储引擎;
若所述查询语句不属于聚合分析类型,则判断所述查询语句是否属于明细查询类型,若属于明细查询类型,则确定包含明细数据的第三存储引擎为目标存储引擎。
在可选的实施方式中,所述查询预先生成的路由映射表中是否存在所述查询语句对应的路由信息的步骤之前,所述对所述查询语句进行分析处理以确定所述查询语句对应的目标存储引擎的步骤,还包括:
对所述查询语句进行解析,得到抽象语法树格式的查询语句;
计算得到所述抽象语法树格式的查询语句的摘要信息。
在可选的实施方式中,所述方法还包括预先构建缓存表和路由映射表的步骤,该步骤包括:
采集历史业务数据,对所述历史业务数据进行处理后同步存储至各所述存储引擎的数据表中,并根据各所述存储引擎的数据表的信息更新元数据配置;
根据所述元数据配置以及主键和数据值的配置信息,构建包含SQL语句和历史业务数据之间映射关系的缓存表;
根据所述元数据配置以及SQL语句和存储引擎的配置信息,构建包含SQL语句和存储引擎之间映射关系的路由映射表。
在可选的实施方式中,所述方法还包括:
获得用户自定义的路由信息,根据用户自定义的路由信息对所述路由映射表中的路由信息进行调整。
在可选的实施方式中,所述方法还包括:
获得多个测试SQL语句;
针对各所述测试SQL语句,将所述测试SQL语句于各所述存储引擎中进行查询处理,统计获得结果数据所需的耗时;
比对各所述存储引擎所需的耗时,根据比对结果将所述测试SQL语句与耗时最短的存储引擎进行关联,并根据所述关联信息更新所述路由映射表中所述测试SQL语句的路由信息。
在可选的实施方式中,所述方法还包括:
针对各个历史SQL语句,若所述第一存储引擎中不存在与所述历史SQL语句对应的预先计算好的数据模型,则基于所述历史SQL语句计算得到对应的数据模型后存储在所述第一存储引擎,并更新所述历史SQL语句的路由信息。
在可选的实施方式中,所述方法还包括:
对历史SQL语句进行统计,获取查询频率高于设定频率的目标历史SQL语句;
定时触发对所述目标历史SQL语句的查询操作,并将得到的结果数据进行缓存。
第二方面,本申请提供一种大数据在线分析系统,所述系统包括接入层、核心层和存储层,所述存储层包括多个不同类型的存储引擎;
所述接入层用于在获得查询SQL语句时,对所述查询SQL语句进行认证、鉴权和流控操作,其中,所述查询SQL语句为标准SQL语句;
所述核心层用于将所述查询SQL语句转换为适应于各所述存储引擎的查询语句,并对所述查询语句进行分析处理以确定所述查询语句对应的目标存储引擎;
所述存储层用于利用各所述存储引擎存储业务数据,并根据所述查询语句对所述目标存储引擎中的业务数据进行查询处理,获得所述查询语句对应的结果数据。
本申请实施例的有益效果包括,例如:
本申请提供一种大数据在线分析方法和系统,在系统中设置了多种不同类型的存储引擎,在接入查询SQL语句的接入层中,针对标准SQL语句进行处理,且将标准SQL语句转换为适应于各个存储引擎的查询语句,最后基于查询语句确定目标存储引擎,在目标存储引擎中进行查询得到查询语句对应的结果数据。本方案,可支持上层统一协议接入,结合转换处理可适用于不同的存储引擎,减少了接入成本。且结合多种类型的存储引擎,可适应性地基于查询需求进行查询,满足不同查询需求的应用场景。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的大数据在线分析系统的结构示意图;
图2为本申请实施例提供的大数据在线分析方法的流程图;
图3为本申请实施例提供的大数据在线分析方法中,预先配置表的方法的流程图;
图4为图2中步骤S220包含的子步骤的流程图;
图5为本申请实施例提供的抽象语法树的示意图;
图6为图2中步骤S220包含的子步骤的另一流程图;
图7为图6中步骤S225包含的子步骤的流程图;
图8为本申请实施例提供的大数据在线分析方法中,优化方法的流程图;
图9为本申请实施例提供的大数据在线分析方法中,优化方法的另一流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本申请的描述中,需要说明的是,在不冲突的情况下,本申请的实施例中的特征可以相互结合。
以下首先对本申请实施例后续将使用到的名词进行简要说明:
OLAP:联机分析处理OLAP是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(Fast Analysis ofShared Multidimensional Information),即共享多维信息的快速分析的特征。
MOLAP:Multidimension OLAP,简称MOLAP,是Arbor Software严格遵照Codd的定义,自行建立了多维数据库,来存放联机分析系统数据,开创了多维数据存储的先河,后来的很多家公司纷纷采用多维数据存储。
ROLAP:ROLAP是联机分析处理(OLAP)的一种,它对存储在关系数据库(而非多维数据库)中的数据作动态多维分析。
Kylin:Apache KylinTM是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc.开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
Druid:Druid是一个高性能实时分析数据库。它是为大型数据集上实时探索查询的引擎,提供专为OLAP设计的开源分析数据存储系统,它的设计意图是在面对代码部署、机器故障以及其他产品系统遇到不测时能保持100%正常运行。它也可以用于后台用例,但设计决策明确定位线上服务。
Clickhouse:ClickHouse是一种列式储存数据库。
Impala:Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。
Hbase:HBase是一个分布式的、面向列的开源数据库。
Redis:Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
ElasticSearch:Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
Solr:Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引,也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
现有技术中用于实现大数据分析的系统往往常用单一存储模式,例如,有的采用大数据领域中以Apache Kylin、Druid为代表的MOLAP(Multi-dimensional OLAP)技术,核心技术是OLAP Cube,其核心思想是用空间换时间。但是MOLAP仅适合有固定模式的聚合查询,其采用的是预计算的模式。即技术人员预先约定好分析路线,MOLAP引擎形成“数据立方体”的结构。在查询时直接查询已经计算好的结果。这种方式的缺点是存储占用量比较大,分析路径固定化,分析维度的增加需要重新设计模型。
此外,还有一种方式是采用大数据领域中以Clickhouse、Impala为代表的MPP架构的分布式ROLAP(Relational OLAP)分析引擎,其核心思想是充分利用所有资源快速计算。ROLAP一般通过列式存储、并行查询、并行数据管理和极致使用CPU资源以达到高性能。但其分析仅适用于查询请求比较灵活的即席查询,或者明细查询的场景。这种方式的缺点是对机器的硬件资源要求比较高且并发量有限。
基于上述研究发现,本申请提供一种大数据在线分析方法和系统,通过接入层统一接入标准SQL语句,通过核心层进行标准SQL语句的转化并从多个不同类型的存储引擎中确定出目标存储引擎。基于存储层中目标存储引擎实现查询SQL语句的查询,得到查询结果。如此,可支持上层统一协议接入,结合转换处理可适用于不同的存储引擎,减少了接入成本。且结合多种类型的存储引擎,可适应性地基于查询需求进行查询,满足不同查询需求的应用场景。
请参阅图1,为本申请实施例提供的一种大数据在线分析系统,该大数据在线分析系统包括接入层、核心层和存储层。其中,存储层中包含多个不同类型的存储引擎。
接入层用于在获得查询SQL语句时,对查询SQL语句进行认证、鉴权和流控操作。查询SQL语句可为标准SQL语句。接入层可以支持JDBC、ODBC、HTTP协议。而核心层可用于将查询SQL语句转换为适应于各个存储引擎的查询语句,并对查询语句进行分析处理以确定查询语句对应的目标存储引擎。存储层可用于利用各个存储引擎存储业务数据,并根据查询语句对目标存储引擎中的业务数据进行查询处理,获得查询语句对应的结果数据。
结合参阅图2,本申请实施例还提供一种可应用于上述大数据在线分析系统的大数据在线分析方法。该大数据在线分析方法有关的流程所定义的方法步骤可以由上述大数据在线分析系统实现。下面对图2所示的具体流程进行详细阐述。
步骤S210,在获得查询SQL语句时,对所述查询SQL语句进行认证、鉴权和流控操作,其中,所述查询SQL语句为标准SQL语句。
步骤S220,将所述查询SQL语句转换为适应于各所述存储引擎的查询语句,并对所述查询语句进行分析处理以确定所述查询语句对应的目标存储引擎。
步骤S230,根据所述查询语句对所述目标存储引擎中的业务数据进行查询处理,获得所述查询语句对应的结果数据。
考虑到不同的存储引擎实现不同,上层接入的协议也不一致。因此,本实施例中,通过接入层统一接入标准SQL语句,而为了能够适应于各个存储引擎,因此,通过核心层将标准SQL语句转换为能够适用于各个存储引擎的查询语句。其中,对标准SQL语句的转换可由核心层中的查询插件实现。如此,可以减少接入层的接入成本,且基于SQL可以做更多的接入扩展。
由于不同类型的查询语句、不同应用场景所需的存储引擎并不相同,因此,可以对查询语句进行分析处理确定对应的目标存储引擎。本实施例中,存储层中包含的多个存储引擎可以包括,但不限于MOLAP、ROLAP、Detail、KV(Key-value)数据库。
其中,MOLAP存储引擎采用预计算的模式,针对固定模式的聚合查询。可预先形成“数据立方体”结构,查询的时候直接查询已经计算好的结果。可以由Apache Kylin、ApacheDruid等开源框架实现。ROLAP存储引擎通过列式存储、并行查询、并行数据管理和极致使用CPU以达到高性能,针对查询请求比较灵活的即席查询或者明细查询的场景。可以由Clickhouse、Impala等开源框架实现。KV数据库是一种以键值对存储数据的数据库,类似java中的map,可以由redis、memcahce等中间件实现。Detail是一种明细查询分布式数据库,可以由elasticsearch、solr等中间件实现。
在确定与查询语句对应的目标存储引擎后,则可以从目标存储引擎中进行相应查询,进而得到查询结果。
本实施例提供的大数据在线分析方法,可支持上层统一协议接入,结合转换处理可适用于不同的存储引擎,减少了接入成本。且结合多种类型的存储引擎,可适应性地基于查询需求进行查询,满足不同查询需求的应用场景。
本实施例中,在实际执行查询流程的步骤之前,还需要预先进行一定配置,利用构建表、预计算配置等工作。可选地,在预先的配置工作中包含预先构建缓存表和路由映射表的工作,详细地,请参阅图3,本实施例可通过以下方式予以实现:
步骤S110,采集历史业务数据,对所述历史业务数据进行处理后同步存储至各所述存储引擎的数据表中,并根据各所述存储引擎的数据表的信息更新元数据配置。
步骤S120,根据所述元数据配置以及主键和数据值的配置信息,构建包含SQL语句和历史业务数据之间映射关系的缓存表。
步骤S130,根据所述元数据配置以及SQL语句和存储引擎的配置信息,构建包含SQL语句和存储引擎之间映射关系的路由映射表。
本实施例中,所述的历史业务数据为基于实际应用场景所确定,例如应用于金融分析处理场景下,历史业务数据为历史时段内采集的金融相关数据,若应用于网购交易场景,则历史业务数据为历史时段内采集的网络交易数据。
可预先在各个存储引擎中构建空白表,包括如数据表、缓存表和路由映射表等。对采集的历史业务数据进行例如分类、聚合、统计等处理后,同步存储至各个存储引擎的数据表中。在此基础上,更新元数据配置,其中,元数据包括各个表的表信息,如字段、维度等信息。
此外,针对存储引擎中的历史业务数据,还可进行预计算。本实施例中,主要是针对MOLAP存储引擎中的数据进行预计算。预计算的方式可以是,按照数仓建模理论中的星型模型,选取数据表的维度、度量值等,进行数据模型,例如“数据立方体”的预计算。其中,关于“数据立方体”的计算方式可以参见现有技术中的常用方式,在此不作赘述。通过预先计算得到数据模型的方式,后续则可以直接基于数据模型进行查询,从而提高查询效率。
本实施例中,还可预先构建缓存表,基于缓存(如KV数据库)中的历史业务数据,并根据元数据配置以及主键和数据值的配置信息,构建SQL语句和缓存中历史业务数据之间映射关系的缓存表。其中,构建的缓存表可以如以下表1中所示。
表1缓存表
KEY | VALUE |
查询语句1 | 结果数据1 |
查询语句2 | 结果数据1 |
查询语句3 | 结果数据1 |
此外,还可预先构建SQL语句和各个存储引擎的对应关系。可以基于元数据配置以及SQL语句和存储引擎的配置信息构建路由映射表。其中,SQL语句和存储引擎的配置信息可以是基于目前常用的查询规则所设置的。
此外,用户也可以对路由信息进行人工干预,可选地,可获得用户自动自定义的路由信息,根据用户自定义的路由信息对路由映射表中的路由信息进行调整。本实施例中,得到的路由映射表可如以下表2中所示。
表2路由映射表
KEY | VALUE |
查询语句1 | 存储引擎1 |
查询语句2 | 存储引擎2 |
查询语句3 | 存储引擎3 |
本实施例中,上述进行空白表的构建、数据同步、数据模型的预计算等工作可由核心层中的meta组件予以实现,而缓存表的生成可由核心层的cache组件予以实现,此外,路由映射表的生成可由路由组件予以实现。
在预先进行各类表的构建以及缓存信息、路由信息的配置之后,在实际执行查询流程时,获得查询语句后,首先可以对查询语句进行处理以降低查询复杂度。可选地,请参阅图4,对于查询语句的处理可通过以下方式实现:
步骤S221,对所述查询语句进行解析,得到抽象语法树格式的查询语句。
步骤S222,计算得到所述抽象语法树格式的查询语句的摘要信息。
本实施例中,核心层中SQL parser解析器可以对查询语句进行语法检查、语义分析和逻辑计划优化等处理。其中,SQL parser解析器是一个抽象组件,具体可以由ApacheCalcite、Antlr4等开源框架实现。在此基础上,可将查询语句转换为抽象语法树AST格式。抽象语法树不依赖于具体文法,不依赖于语言的细节。将查询语句转换为AST格式,可以对AST做更多的操作,实现多种多样的功能。
例如,在将查询语句“select k1,sum(v1)from A,B GROUP BY k1 ORDER BY k1”进行转化后,得到的抽象语法树具体可如图5中所示。此外,为了简化查询信息,可计算得到查询语句的摘要信息。
请参阅图6,本实施例中,在执行SQL查询时,详细地,可通过以下方式实现:
步骤S223,查询预先生成的路由映射表中是否存在所述查询语句对应的路由信息,若存在,则执行以下步骤S224,若不存在,则执行以下步骤S225。
步骤S224,根据所述路由映射表中的路由信息确定所述查询语句对应的目标存储引擎。
步骤S225,根据所述查询语句生成执行计划信息,基于所述执行计划信息确定所述查询语句对应的目标存储引擎。
本实施例中,首先可以查询缓存中是否存在查询语句对应的KEY值,可通过查询预先生成的缓存表的方式实现,若缓存表中具有对应的KEY值,则可以直接查询缓存得到对应的查询结果。
但是,若缓存中不存在查询语句对应的KEY值,则查询预先生成的路由映射表。路由映射表中包含存储引擎和查询语句之间的映射关系,若路由映射标准中存在与当前获得的查询语句对应的存储引擎,则该存储引擎为目标存储引擎,可以直接基于该查询语句去对应的目标存储引擎进行查询。
但是,若路由映射表中没有当前的查询语句的路由信息,系统可以基于查询语句生成执行计划信息,从而确定目标存储引擎。本实施例中,生成执行计划信息以及后续基于执行计划信息确定目标存储引擎实现查询的过程可以由核心层中执行计划生成器予以实现。
请参阅图7,本实施例中,基于执行计算信息确定查询语句对应的目标存储引擎时,可以通过以下方式实现:
步骤S2251,判断所述查询语句的类型是否属于聚合分析类型,若属于聚合分析类型,则执行以下步骤S2252-步骤S2254,若所述查询语句不属于聚合分析类型,则执行以下步骤S2255-步骤S2256。
步骤S2252,根据所述查询语句拆分出多个算子信息,并检测预先计算得到的数据模型中是否存在所述多个算子信息,若存在所述多个算子信息,则执行以下步骤S2253,若不存在所述多个算子信息,则执行以下步骤S2254。
步骤S2253,确定所述数据模型所在的第一存储引擎为目标存储引擎。
步骤S2254,确定具备实时计算功能的第二存储引擎为目标存储引擎。
步骤S2255,判断所述查询语句是否属于明细查询类型,若属于明细查询类型,则执行以下步骤S2256。
步骤S2256,确定包含明细数据的第三存储引擎为目标存储引擎。
本实施例中,所述的多个算子信息包括指标、聚合维度等,所述数据模型即可预先计算得到的“数据立方体”模型。因此,所述的第一存储引擎可为MOLAP存储引擎,而第二存储引擎可为ROLAP引擎,第三存储引擎为Detail引擎。
基于执行计划信息按照上述方式进行查询,可以基于不同的查询请求类型以及实际存储情况,确定适宜的查询流程,对于常用、常规模型可采用MOLAP存储引擎实现,而对于非常用或需要灵活定义的分析使用ROLAP引擎实现。
后续在查询MOLAP存储引擎时,具体可由Kylin、Druid等引擎实现,在查询ROLAP引擎时具体可由Clickhouse、Impala等引擎实现。在查询Detail引擎时,具体可由elasticsearch、solr等存储中间件实现。
本实施例中,一次查询可以包含多个查询语句,在得到各查询语句对应的结果数据后,各个存储引擎将结果数据进行返回。在内存中可以进行结果数据的结合处理计算,可由核心层中结果merge组件予以实现。例如,SQL语句中的UNION、SORT等操作,此外,还可包括如明细查询结果中select后面的元素扩充操作等。
本实施例中,通过系统核心层包含的多个组件的协同工作,并通过上述查询流程设计,可以同时适应于高并发查询应用场景、查询请求比较灵活的即席查询,以及固定模式的聚合查询需求等。
本实施例中,由于预先设置的路由信息是根据常规、已有的配置规则进行设置,但是由于实际应用场景的变化、网络环境的变化等,所设置的路由信息可能并非最优路由。基于此考虑,在本实施例中,还可对路由信息进行优化,请结合参阅图8,本实施例所提供的大数据在线分析方法还可包括以下步骤:
步骤S310,获得多个测试SQL语句。
步骤S320,针对各所述测试SQL语句,将所述测试SQL语句于各所述存储引擎中进行查询处理,统计获得结果数据所需的耗时。
步骤S330,比对各所述存储引擎所需的耗时,根据比对结果将所述测试SQL语句与耗时最短的存储引擎进行关联,并根据所述关联信息更新所述路由映射表中所述测试SQL语句的路由信息。
本实施例中,所获得的多个测试SQL语句可以是根据元数据配置信息所穷举的多个SQL语句,用于进行测试所用。将每个测试SQL语句于各个存储引擎中进行查询处理。若能够查询得到结果数据,则统计从开始查询到得到结果数据的总的耗时。而若在某个存储引擎不能成功查询得到结果数据,可直接确定该存储引擎的查询路径并非最优的查询路径。
通过比对各个存储引擎查询得到结果数据所需的耗时,可以得到所需耗时最短的存储引擎,则该存储引擎对应的查询路径为最优查询路径。基于确定出的各个测试SQL语句的最优查询路径可对路由映射表中的路由信息进行更新。
此外,由于预先计算得到的数据模型后,后续可以直接查询数据模型得到结果数据,大大提高查询的效率。因此,为了进一步优化查询流程,本实施例所提供的大数据在线分析方法还可包括以下步骤:
针对各个历史SQL语句,若第一存储引擎中不存在与该历史SQL语句对应的预先计算好的数据模型,则基于该历史SQL语句计算得到对应的数据模型后存储在第一存储引擎,并更新该条历史SQL语句的路由信息。
本实施例中,第一存储引擎,也即MOLAP存储引擎具有预计算机制,因此,该查询流程优化主要是针对MOLAP存储引擎进行的。历史查询信息,包括历史查询SQL语句、路由信息、查询结果数据等,此外整个系统的资源情况等均存储于系统监控可视化列表Dashboard中。因此,核心层中优化器可以在Dashboard获得各个历史SQL语句的查询情况,并检测各个历史SQL语句在历史查询时,是否在MOLAP存储引擎中具有对应的数据模型。如果没有,可以在MOLAP存储引擎中进行维度、指标等升级,进而执行预计算的操作,将预计算得到的数据模型存储在MOLAP存储引擎中。后续再接入相同的SQL查询语句时,则可以直接查找数据模型,得到查询结果。
例如,优化器在检测到某条历史SQL语句的执行频率较高,但是响应却较慢。可以通过查询路由映射表,若发现该条历史SQL语句并未在MOLAP存储引擎中构建数据模型,而是直接查询ROLAP引擎。优化器则可以基于该历史SQL语句涉及到的指标、维度等在MOLAP存储引擎中建立数据模型,并存储在MOLAP存储引擎中,并更新该条历史SQL语句的路由信息,将该条历史SQL语句的查询路径更新为对应MOLAP存储引擎。
请参阅图9,在本实施例中,对于查询流程的优化,还可以通过以下方式执行:
步骤S410,对历史SQL语句进行统计,获取查询频率高于设定频率的目标历史SQL语句。
步骤S420,定时触发对所述目标历史SQL语句的查询操作,并将得到的结果数据进行缓存。
本实施例中,优化器可以通过查询Dashboard列表,获得历史时段内各个历史SQL语句的信息,统计历史时段内各个历史SQL语句的查询频率,并获得其中查询频率高于设定频率的历史SQL语句。从而定时对这类查询频率较高的历史SQL语句进行查询操作并将结果数据保存,后续在接入相同的SQL查询语句时,则可以快速反馈查询结果。
本实施例中,可基于核心层中的调度器,根据用户自定义的调度频率配置自动触发优化器执行查询流程的优化。例如,可以在调度器中进行配置,在每天凌晨触发执行优化。实施时,可以采用上述任意一种或多种优化方式,实现查询优化。
本实施例所提供的大数据在线分析方法和系统,在接入层采用标准SQL语句进行数据分析,统一接入协议,减少了接入层的接入成本,且基于SQL语句可以做更多的接入扩展。结合核心层对标准SQL语句的转换,可以适用于存储层中各种不同类型的存储引擎。
进一步地,通过存储层的多种不同类型的存储引擎,通过系统中各个组件的协同工作,使得系统既支持查询请求灵活的即席查询,也可以满足业务上低频、临时分析的场景。
此外,本实施例中,还可基于历史查询情况,自动进行预计算数据模型,从而优化查询路由。并且,可以针对实际业务中高频的查询语句,进行结果计算并缓存,从而在后续的查询中提高并发量及查询性能。
请再次参阅图1,本申请实施例所提供的大数据在线分析系统可通过核心层实现目标存储引擎的确定,在一种可能的实现方式中,核心层用于查询预先生成的路由映射表中是否存在所述查询语句对应的路由信息,若存在,则根据所述路由映射表中的路由信息确定所述查询语句对应的目标存储引擎;若不存在,则根据所述查询语句生成执行计划信息,基于所述执行计划信息确定所述查询语句对应的目标存储引擎。
在一种可能的实现方式中,在基于执行计划信息确定目标存储引擎时,核心层用于判断所述查询语句的类型是否属于聚合分析类型,若属于聚合分析类型,则根据所述查询语句拆分出多个算子信息,并检测预先计算得到的数据模型中是否存在所述多个算子信息,若存在所述多个算子信息,则确定所述数据模型所在的第一存储引擎为目标存储引擎,若不存在所述多个算子信息,则确定具备实时计算功能的第二存储引擎为目标存储引擎;若所述查询语句不属于聚合分析类型,则判断所述查询语句是否属于明细查询类型,若属于明细查询类型,则确定包含明细数据的第三存储引擎为目标存储引擎。
在一种可能的实现方式中,核心层还用于在查询路由映射表之前,对所述查询语句进行解析,得到抽象语法树格式的查询语句;计算得到所述抽象语法树格式的查询语句的摘要信息。
在一种可能的实现方式中,核心层还用于预先构建缓存表和路由映射表,具体可以用于采集历史业务数据,对所述历史业务数据进行处理后同步存储至各所述存储引擎的数据表中,并根据各所述存储引擎的数据表的信息更新元数据配置;根据所述元数据配置以及主键和数据值的配置信息,构建包含SQL语句和历史业务数据之间映射关系的缓存表;根据所述元数据配置以及SQL语句和存储引擎的配置信息,构建包含SQL语句和存储引擎之间映射关系的路由映射表。
在一种可能的实现方式中,核心层还用于基于自定义进行路由优化,具体地,可以用于获得用户自定义的路由信息,根据用户自定义的路由信息对所述路由映射表中的路由信息进行调整。
在一种可能的实现方式中,核心层还可以用于通过穷举SQL实现路由优化,具体地可以用于获得多个测试SQL语句;针对各所述测试SQL语句,将所述测试SQL语句于各所述存储引擎中进行查询处理,统计获得结果数据所需的耗时;比对各所述存储引擎所需的耗时,根据比对结果将所述测试SQL语句与耗时最短的存储引擎进行关联,并根据所述关联信息更新所述路由映射表中所述测试SQL语句的路由信息。
在一种可能的实现方式中,核心层还可以用于针对各个历史SQL语句,若所述第一存储引擎中不存在与所述历史SQL语句对应的预先计算好的数据模型,则基于所述历史SQL语句计算得到对应的数据模型后存储在所述第一存储引擎,并更新所述历史SQL语句的路由信息。
在一种可能的实现方式中,核心层还可以用于对历史SQL语句进行统计,获取查询频率高于设定频率的目标历史SQL语句;定时触发对所述目标历史SQL语句的查询操作,并将得到的结果数据进行缓存。
关于大数据在线分析系统的处理流程、以及系统中各个组件之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
综上所述,本申请提供一种大数据在线分析方法和系统,在系统中设置了多种不同类型的存储引擎,在接入查询SQL语句的上层中,针对标准SQL语句进行处理,且将标准SQL语句转换为适应于各个存储引擎的查询语句,最后基于查询语句确定目标存储引擎,在目标存储引擎中进行查询得到查询语句对应的结果数据。本方案,可支持上层统一协议接入,结合转换处理可适用于不同的存储引擎,减少了接入成本。且结合多种类型的存储引擎,可适应性地基于查询需求进行查询,满足不同查询需求的应用场景。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种大数据在线分析方法,其特征在于,应用于大数据在线分析系统,所述系统包括多个不同类型的存储引擎,所述方法包括:
在获得查询SQL语句时,对所述查询SQL语句进行认证、鉴权和流控操作,其中,所述查询SQL语句为标准SQL语句;
将所述查询SQL语句转换为适应于各所述存储引擎的查询语句,并对所述查询语句进行分析处理以确定所述查询语句对应的目标存储引擎;
根据所述查询语句对所述目标存储引擎中的业务数据进行查询处理,获得所述查询语句对应的结果数据。
2.根据权利要求1所述的大数据在线分析方法,其特征在于,所述对所述查询语句进行分析处理以确定所述查询语句对应的目标存储引擎的步骤,包括:
查询预先生成的路由映射表中是否存在所述查询语句对应的路由信息,若存在,则根据所述路由映射表中的路由信息确定所述查询语句对应的目标存储引擎;
若不存在,则根据所述查询语句生成执行计划信息,基于所述执行计划信息确定所述查询语句对应的目标存储引擎。
3.根据权利要求2所述的大数据在线分析方法,其特征在于,所述基于所述执行计划信息确定所述查询语句对应的目标存储引擎的步骤,包括:
判断所述查询语句的类型是否属于聚合分析类型,若属于聚合分析类型,则根据所述查询语句拆分出多个算子信息,并检测预先计算得到的数据模型中是否存在所述多个算子信息,若存在所述多个算子信息,则确定所述数据模型所在的第一存储引擎为目标存储引擎,若不存在所述多个算子信息,则确定具备实时计算功能的第二存储引擎为目标存储引擎;
若所述查询语句不属于聚合分析类型,则判断所述查询语句是否属于明细查询类型,若属于明细查询类型,则确定包含明细数据的第三存储引擎为目标存储引擎。
4.根据权利要求2所述的大数据在线分析方法,其特征在于,所述查询预先生成的路由映射表中是否存在所述查询语句对应的路由信息的步骤之前,所述对所述查询语句进行分析处理以确定所述查询语句对应的目标存储引擎的步骤,还包括:
对所述查询语句进行解析,得到抽象语法树格式的查询语句;
计算得到所述抽象语法树格式的查询语句的摘要信息。
5.根据权利要求2所述的大数据在线分析方法,其特征在于,所述方法还包括预先构建缓存表和路由映射表的步骤,该步骤包括:
采集历史业务数据,对所述历史业务数据进行处理后同步存储至各所述存储引擎的数据表中,并根据各所述存储引擎的数据表的信息更新元数据配置;
根据所述元数据配置以及主键和数据值的配置信息,构建包含SQL语句和历史业务数据之间映射关系的缓存表;
根据所述元数据配置以及SQL语句和存储引擎的配置信息,构建包含SQL语句和存储引擎之间映射关系的路由映射表。
6.根据权利要求5所述的大数据在线分析方法,其特征在于,所述方法还包括:
获得用户自定义的路由信息,根据用户自定义的路由信息对所述路由映射表中的路由信息进行调整。
7.根据权利要求2所述的大数据在线分析方法,其特征在于,所述方法还包括:
获得多个测试SQL语句;
针对各所述测试SQL语句,将所述测试SQL语句于各所述存储引擎中进行查询处理,统计获得结果数据所需的耗时;
比对各所述存储引擎所需的耗时,根据比对结果将所述测试SQL语句与耗时最短的存储引擎进行关联,并根据所述关联信息更新所述路由映射表中所述测试SQL语句的路由信息。
8.根据权利要求3所述的大数据在线分析方法,其特征在于,所述方法还包括:
针对各个历史SQL语句,若所述第一存储引擎中不存在与所述历史SQL语句对应的预先计算好的数据模型,则基于所述历史SQL语句计算得到对应的数据模型后存储在所述第一存储引擎,并更新所述历史SQL语句的路由信息。
9.根据权利要求1所述的大数据在线分析方法,其特征在于,所述方法还包括:
对历史SQL语句进行统计,获取查询频率高于设定频率的目标历史SQL语句;
定时触发对所述目标历史SQL语句的查询操作,并将得到的结果数据进行缓存。
10.一种大数据在线分析系统,其特征在于,所述系统包括接入层、核心层和存储层,所述存储层包括多个不同类型的存储引擎;
所述接入层用于在获得查询SQL语句时,对所述查询SQL语句进行认证、鉴权和流控操作,其中,所述查询SQL语句为标准SQL语句;
所述核心层用于将所述查询SQL语句转换为适应于各所述存储引擎的查询语句,并对所述查询语句进行分析处理以确定所述查询语句对应的目标存储引擎;
所述存储层用于利用各所述存储引擎存储业务数据,并根据所述查询语句对所述目标存储引擎中的业务数据进行查询处理,获得所述查询语句对应的结果数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110763018.7A CN113342843A (zh) | 2021-07-06 | 2021-07-06 | 大数据在线分析方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110763018.7A CN113342843A (zh) | 2021-07-06 | 2021-07-06 | 大数据在线分析方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113342843A true CN113342843A (zh) | 2021-09-03 |
Family
ID=77482693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110763018.7A Pending CN113342843A (zh) | 2021-07-06 | 2021-07-06 | 大数据在线分析方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342843A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114549042A (zh) * | 2022-01-10 | 2022-05-27 | 北京元年科技股份有限公司 | 成本分摊方法及系统 |
CN117807108A (zh) * | 2024-02-28 | 2024-04-02 | 广州思迈特软件有限公司 | 基于双查询引擎的数据查询方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918232A (en) * | 1997-11-26 | 1999-06-29 | Whitelight Systems, Inc. | Multidimensional domain modeling method and system |
US20040181518A1 (en) * | 2003-03-14 | 2004-09-16 | Mayo Bryan Edward | System and method for an OLAP engine having dynamic disaggregation |
CN104317936A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种基于星型模型的rolap解析引擎设计方法及装置 |
CN108376139A (zh) * | 2017-01-31 | 2018-08-07 | 湖南聚宝盆网络技术有限公司 | 一种基于大数据分析的分布式molap技术系统 |
CN108763573A (zh) * | 2018-06-06 | 2018-11-06 | 众安信息技术服务有限公司 | 一种基于机器学习的olap引擎路由方法及系统 |
CN108875042A (zh) * | 2018-06-27 | 2018-11-23 | 中国农业银行股份有限公司 | 一种混合联机分析处理系统及数据查询方法 |
CN111221842A (zh) * | 2018-11-27 | 2020-06-02 | 北京奇虎科技有限公司 | 大数据处理系统及方法 |
CN111221860A (zh) * | 2018-11-27 | 2020-06-02 | 北京奇虎科技有限公司 | 基于大数据的混合查询优化方法及装置 |
CN112286954A (zh) * | 2020-09-25 | 2021-01-29 | 北京邮电大学 | 基于混合引擎的多维数据分析方法和系统 |
CN112765282A (zh) * | 2021-01-18 | 2021-05-07 | 恒安嘉新(北京)科技股份公司 | 一种数据联机分析处理方法、装置、设备及存储介质 |
-
2021
- 2021-07-06 CN CN202110763018.7A patent/CN113342843A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918232A (en) * | 1997-11-26 | 1999-06-29 | Whitelight Systems, Inc. | Multidimensional domain modeling method and system |
US20040181518A1 (en) * | 2003-03-14 | 2004-09-16 | Mayo Bryan Edward | System and method for an OLAP engine having dynamic disaggregation |
CN104317936A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种基于星型模型的rolap解析引擎设计方法及装置 |
CN108376139A (zh) * | 2017-01-31 | 2018-08-07 | 湖南聚宝盆网络技术有限公司 | 一种基于大数据分析的分布式molap技术系统 |
CN108763573A (zh) * | 2018-06-06 | 2018-11-06 | 众安信息技术服务有限公司 | 一种基于机器学习的olap引擎路由方法及系统 |
CN108875042A (zh) * | 2018-06-27 | 2018-11-23 | 中国农业银行股份有限公司 | 一种混合联机分析处理系统及数据查询方法 |
CN111221842A (zh) * | 2018-11-27 | 2020-06-02 | 北京奇虎科技有限公司 | 大数据处理系统及方法 |
CN111221860A (zh) * | 2018-11-27 | 2020-06-02 | 北京奇虎科技有限公司 | 基于大数据的混合查询优化方法及装置 |
CN112286954A (zh) * | 2020-09-25 | 2021-01-29 | 北京邮电大学 | 基于混合引擎的多维数据分析方法和系统 |
CN112765282A (zh) * | 2021-01-18 | 2021-05-07 | 恒安嘉新(北京)科技股份公司 | 一种数据联机分析处理方法、装置、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114549042A (zh) * | 2022-01-10 | 2022-05-27 | 北京元年科技股份有限公司 | 成本分摊方法及系统 |
CN117807108A (zh) * | 2024-02-28 | 2024-04-02 | 广州思迈特软件有限公司 | 基于双查询引擎的数据查询方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036735B2 (en) | Dimension context propagation techniques for optimizing SQL query plans | |
US20220035815A1 (en) | Processing database queries using format conversion | |
US8204914B2 (en) | Method and system to process multi-dimensional data | |
US6801903B2 (en) | Collecting statistics in a database system | |
US20230073666A1 (en) | Data query method and apparatus, device, and computer-readable storage medium | |
US10216782B2 (en) | Processing of updates in a database system using different scenarios | |
US20150066987A1 (en) | Method and system for accessing a set of data tables in a source database | |
WO2021068549A1 (zh) | 一种数据处理方法、平台及系统 | |
US20080104089A1 (en) | System and method for distributing queries to a group of databases and expediting data access | |
CN103262076A (zh) | 分析数据处理 | |
CN112765282B (zh) | 一种数据联机分析处理方法、装置、设备及存储介质 | |
CN113342843A (zh) | 大数据在线分析方法和系统 | |
US20170083566A1 (en) | Partitioning advisor for online transaction processing workloads | |
CN111382182A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US10776368B1 (en) | Deriving cardinality values from approximate quantile summaries | |
CN114297173A (zh) | 一种面向大规模海量数据的知识图谱构建方法和系统 | |
KR101331350B1 (ko) | 데이터 큐브를 이용한 대용량 시계열 데이터 관리 방법 | |
US20230153286A1 (en) | Method and system for hybrid query based on cloud analysis scene, and storage medium | |
CN115292313A (zh) | 一种伪列实现方法、装置、电子设备及存储介质 | |
Chereja et al. | Operationalizing analytics with NewSQL | |
CA2701173A1 (en) | System and method for distributing queries to a group of databases and expediting data access | |
CN113051441A (zh) | 实体对象的存储设计及管理方法 | |
CN114331654A (zh) | 一种基于hive的页面配置对账系统和方法 | |
CN115221157A (zh) | 数据处理方法及装置、计算机可读存储介质和电子设备 | |
CN118035270A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210903 |
|
RJ01 | Rejection of invention patent application after publication |