CN109753507A - 基于NoSQL类数据库的OLAP实现系统构建方法、实现系统及实现方法 - Google Patents
基于NoSQL类数据库的OLAP实现系统构建方法、实现系统及实现方法 Download PDFInfo
- Publication number
- CN109753507A CN109753507A CN201811640903.0A CN201811640903A CN109753507A CN 109753507 A CN109753507 A CN 109753507A CN 201811640903 A CN201811640903 A CN 201811640903A CN 109753507 A CN109753507 A CN 109753507A
- Authority
- CN
- China
- Prior art keywords
- nosql
- data
- cube
- olap
- cube module
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于NoSQL类数据库的OLAP实现系统构建方法、实现系统及实现方法,实现方法包括应Cube模块数据分析需求,按照设置要求将NoSQL数据源按照关系型数据库的方式呈现出来以供Cube模块提取;基于定义的Cube模块实现基于NoSQL类数据库的OLAP。与现有技术相比,本发明方案进行数据分析时,分析的数据一致性更高,架构更合理,系统更稳定。
Description
技术领域
本发明涉及大数据分析领域,特别涉及一种基于NoSQL类数据库的OLAP实现系统构建方法、实现系统及实现方法。
背景技术
随着互联网和移动技术的发展,NoSQL技术的应用愈加广泛。很多超大规模和高并发的社交网站、智能终端App无时无刻不在产生大量数据,而这些数据就保存在后台的NoSQL类数据库当中,如MongoDB、HBase等。
OLAP(联机分析处理)作为一种软件技术,它能使分析人员迅速、一致、交互式地从数据中获取信息。当NoSQL中的数据规模和数据复杂度增长到很高的规模(例如上百TB或PB规模),如何对NoSQL中的海量数据进行高效OLAP分析便成为一个问题。
针对NoSQL中的大数据进行OLAP分析有几大难点:首先,NoSQL类数据库库一般不支持SQL接口,尤其是复杂的分析型SQL,而数据分析师最习惯使用的BI工具一般都是通过SQL接口与数据源交互,这会导致数据分析师无法简单、高效地使用BI工具分析NoSQL中的大数据;其次,NoSQL一般会用作于数据收集或OLTP系统,这会给NoSQL带来大量写操作,而OLAP分析一般是读操作居多,这会导致NoSQL中存在大量的读写资源竞争,而且运维人员无法针对特定的读或写任务进行有效的系统优化。
一些现有技术希望解决这些问题。例如,通过ETL定时把NoSQL中的数据抽取到分析型数据仓库中,然后基于分析型数据仓库进行OLAP分析。这一方案的好处是实现了读、写操作的分离,避免资源竞争,也易于运维人员进行系统优化,同时分析型数据仓库往往支持SQL,和BI工具也有很好的对接体验。但这样的方案也存在诸多弊端:首先,数据需要通过拷贝的方式从NoSQL导入到分析型数据仓库中,这一方面带来较大的开发、维护代价,以及数据不一致的风险,另一方面需要占用额外一倍的数据存储空间,造成不必要的资源浪费。其次,分析型数据仓库在数据量达到更大规模(如上百TB或PB规模)时可能会有性能瓶颈,这时还需要进一步通过其他技术(如索引、预计算等)进行查询加速,造成整体解决方案的高度复杂。因此,这样的方案在超大规模数据上无法很好的满足实际需求。
发明内容
本发明提供了一种基于NoSQL类数据库的OLAP实现系统构建方法、实现系统及实现方法,具有进行数据分析时,分析的数据一致性更高的特点。
根据本发明提供的一种基于NoSQL类数据库的OLAP实现系统构建方法,定义Cube模块,定义Cube模块分析所用到数据的提取方式;所述提取方式为,将NoSQL数据源按照关系型数据库的方式呈现出来以供Cube模块提取;
基于定义的Cube模块实现基于NoSQL类数据库的OLAP;
所述NoSQL类数据库包括但不限于NoSQL、Mongo DB、HBase、Azure Cosmos DB、Couchbase和LevelDB。
将NoSQL数据源按照关系型数据库的方式呈现出来的具体方法包括,
创建外表,以访问NoSQL数据源中的数据;在需要呈现时,同步外表呈现出来的表结构。
基于定义的Cube模块实现基于NoSQL类数据库的OLAP的具体方法包括,
根据Cube定义进行数据提取,包括,将呈现为关系型数据库的NoSQL中多张表进行连接,并根据设置选择需要的维度和指标列,把数据从NoSQL中提取出来,保存为数据文件;
以所述数据文件为基础,逐层进行指标聚合,以生成不同维度组合的聚合结果;
将所述聚合结果转换为列式存储格式,便于查询时快速读取相关结果。
所述方法还包括,以所述数据文件为基础,获取每一个维度列的不重复值的集合,基于每个维度列的不重复值的集合,为每个列构建编码器,用于存储时的压缩。
根据本发明提供的一种基于NoSQL类数据库的OLAP实现系统,基于上述构建方法实现,包括,
Cube模块,基于定义的Cube模块实现基于NoSQL类数据库的OLAP;
关系型数据库呈现模块,应Cube模块数据分析需求,按照设置要求将NoSQL数据源按照关系型数据库的方式呈现出来以供Cube模块提取。
所述Cube模块包括,
数据提取引擎,应Cube模块数据分析需求,连接呈现的关系型数据库,并根据设置选择需要的维度和指标列,把数据从NoSQL中提取出来,保存为数据文件;
聚合结果生成单元,以所述数据文件为基础,逐层进行指标聚合,以生成不同维度组合的聚合结果;
列式存储格式转换单元,将所述聚合结果转换为列式存储格式,便于查询时快速读取相关结果。
所述Cube模块还包括编码器构建单元,以所述数据文件为基础,获取每一个维度列的不重复值的集合,基于每个维度列的不重复值的集合,为每个列构建编码器,用于存储时的压缩。
根据本发明提供的一种基于NoSQL类数据库的OLAP实现方法,基于上述实现系统实现,具体方法包括,
应Cube模块数据分析需求,按照设置要求将NoSQL数据源按照关系型数据库的方式呈现出来以供Cube模块提取;
Cube模块连接呈现的关系型数据库,实现基于NoSQL类数据库的OLAP。
根据本发明提供的一种基于Hadoop平台的OLAP实现方法,包括,
在Hive中创建外表,以访问NoSQL中的数据;
在Apache Kylin中同步表结构,把通过Hive外表暴露出的表结构同步到ApacheKylin中;
在Apache Kylin中创建数据模型和Cube模型,定义需要进行预计算的范围在Apache Kylin中创建数据模型和Cube模型,定义需要进行预计算的范围;
触发Cube的构建,利用Hadoop平台的分布式计算资源产生Cube与计算结果,并保存在HDFS上;
利用Apache Kylin的SQL查询接口,暴露SQL查询能力,帮助分析师用户直接进行数据分析。
根据本发明提供的一种计算机可读存储介质,存储有能够被处理器加载并执行上述任一种方法的计算机程序。
与现有技术相比,本发明方案进行数据分析时,分析的数据一致性更高,架构更合理,系统更稳定。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本说明书(包括摘要)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
根据本发明提供的一种基于NoSQL类数据库的OLAP实现系统构建方法,定义Cube模块,定义Cube模块分析所用到数据的提取方式;所述提取方式为,将NoSQL数据源按照关系型数据库(RDBMS)的方式呈现出来以供Cube模块提取;
基于定义的Cube模块实现基于NoSQL类数据库的OLAP;
所述NoSQL类数据库包括但不限于NoSQL、Mongo DB、HBase、Azure Cosmos DB、Couchbase和LevelDB。
Cube是OLAP中的经典概念。Cube定义分析用到的所有维度、指标,其中指标包含聚合运算的聚合算子。在本发明方案中,基于按照关系型数据库呈现出来的表定义和表结构,完成Cube模型的定义。
考虑到表结构易变性较强,因此要使用特别灵活的暴露方式,不可拷贝原始数据。由于Cube模式分析所用到的NoSQL类数据库是从NoSQL数据源中按照关系型数据的方式呈现出来以供Cube模块提取,而非存储成其他数据以供Cube模块提取,因此,克服了现有技术中复制提出存储所带来的数据的不一致性的缺陷,并且不需要占用额外存储空间。
由于Cube模块本身支持SQL查询接口,因此,与BI工具也有很好的对接体验。数据分析师最熟悉的查询方式是SQL,因此暴露SQL查询接口,即可满足常见的数据分析需求。把SQL语句解析成对Cube预计算结果的访问。即当查询SQL到达时,Cube预计算结果可以直接响应查询,从而避免逐行扫描NoSQL中的原始数据,从而快速返回查询结果,实现亚秒级的查询性能
作为本发明的一种实施方式,将NoSQL数据源按照关系型数据库的方式呈现出来的具体方法包括,
创建外表,以访问NoSQL数据源中的数据;在需要呈现时,同步外表呈现出来的表结构。
作为本发明中的一种实施方式,本发明基于开源的Apache Kylin技术,在Hadoop大数据平台上实现了一套NoSQL大数据分析架构,实现了对HBase、MongoDB、AzureCosmosDB等NoSQL类数据库的OLAP分析。在Hive中创建外表,以访问NoSQL中的数据(如HBase、MongoDB、Azure CosmosDB等)。在Apache Kylin中同步表结构,把通过Hive外表暴露出的表结构同步到Apache Kylin中。
作为本发明的一种实施方式,基于定义的Cube模块实现基于NoSQL类数据库的OLAP的具体方法包括,
根据Cube定义进行数据提取,包括,将呈现为关系型数据库的NoSQL中多张表进行连接,并根据设置选择需要的维度和指标列,把数据从NoSQL中提取出来,保存为数据文件;
以所述数据文件为基础,逐层进行指标聚合,以生成不同维度组合的聚合结果;
将所述聚合结果转换为列式存储格式,便于查询时快速读取相关结果。
作为一种实施方案,在Apache Kylin中创建数据模型和Cube模型,定义需要进行预计算的范围。触发Cube的构建,利用Hadoop平台的分布式计算资源产生Cube与计算结果,并保存在HDFS上。利用Apache Kylin的SQL查询接口,暴露SQL查询能力,帮助分析师用户直接进行数据分析。
作为本发明的一种实施方式,所述方法还包括,以所述数据文件为基础,获取每一个维度列的不重复值的集合,基于每个维度列的不重复值的集合,为每个列构建编码器,用于存储时的压缩。
根据本发明提供的一种基于NoSQL类数据库的OLAP实现系统,基于上述构建方法实现,包括,
Cube模块,基于定义的Cube模块实现基于NoSQL类数据库的OLAP;
关系型数据库呈现模块,应Cube模块数据分析需求,按照设置要求将NoSQL数据源按照关系型数据库的方式呈现出来以供Cube模块提取。
Cube模块基于关系型数据库呈现模块暴露出来的表定义和表结构,人为或通过计算机程序定义数据模型(如星形模型、雪花模型等),并在该模型基础上选择需要的列作为维度,基于另一些需要的列的聚合运算定义为指标,以及和运维、优化相关的配置,这样就完成了Cube模型的定义。本方案能够在较低IT成本投入情况下,实现OLTP(写)和OLAP(读)任务分离,提高架构合理性,保证系统稳定性。
作为本发明的一种实施方式,所述Cube模块包括,
数据提取引擎,应Cube模块数据分析需求,连接呈现的关系型数据库,并根据设置选择需要的维度和指标列,把数据从NoSQL中提取出来,保存为数据文件;
聚合结果生成单元,以所述数据文件为基础,逐层进行指标聚合,以生成不同维度组合的聚合结果;
列式存储格式转换单元,将所述聚合结果转换为列式存储格式,便于查询时快速读取相关结果。
所述Cube模块还包括编码器构建单元,以所述数据文件为基础,获取每一个维度列的不重复值的集合,基于每个维度列的不重复值的集合,为每个列构建编码器,用于存储时的压缩。
根据本发明提供的一种基于NoSQL类数据库的OLAP实现方法,基于上述实现系统实现,具体方法包括,
应Cube模块数据分析需求,按照设置要求将NoSQL数据源按照关系型数据库的方式呈现出来以供Cube模块提取;
Cube模块连接呈现的关系型数据库,实现基于NoSQL类数据库的OLAP。
作为一种实施例,假设某NoSQL类数据库以JSON格式保存数据及其结构,在该数据库中存在两张表:Order表和Buyer表。
其中Order表有如下两条记录:
第一条记录:
{"ID":1,"Buyer_ID":1,"Price":1.0,"Discount":0.98}
第二条记录:
{"ID":2,"Buyer_ID":2,"Price":0.5,"Cancelled":"True"}
其中,第一条的Discount字段在第二条记录不存在,第二条的Cancelled字段在第一条记录不存在,但这两个字段都是分析常用的字段。
根据数据分析师的分析需求,需要在系统中对Order表定义出固定的数据结构,如:
Order表:ID,Buyer_ID,Price,Discount,Cancelled
类似的,假设Buyer表定义如下结构:
Buyer表:ID,Name,Country
以上定义就是通过技术手段将NoSQL表按照RDBMS方式暴露表结构和表定义的过程。
数据分析师在进行分析工作时,往往需要对多张表进行关联,并基于这些表中的列定义出维度和度量,举例如下:
定义“销售订单”模型,包含Order表和Buyer表,通过Order表的Buyer_ID和Buyer表的ID列进行关联。
然后定义以下列为维度:Order.ID,Buyer.Name,Buyer.Country,Order.Cancelled
然后基于某些列及其聚合运算为度量:例如销售额=SUM(Order.Price),折扣总额=SUM(Order.Discount)
以上的定义就完成了Cube的定义。
本方案实现了亚秒级高性能的查询响应,以及互联网级高并发,以实现NoSQL大数据的查询加速。能够支持SQL查询接口,实现BI工具的高效对接,大大提高数据分析效率,帮助分析师实现自助式分析。
根据本发明提供的一种计算机可读存储介质,存储有能够被处理器加载并执行上述任一种方法的计算机程序。
Claims (10)
1.一种基于NoSQL类数据库的OLAP实现系统构建方法,包括,
定义Cube模块,定义Cube模块分析所用到数据的提取方式;所述提取方式为,将NoSQL数据源按照关系型数据库的方式呈现出来以供Cube模块提取;
基于定义的Cube模块实现基于NoSQL类数据库的OLAP;
所述NoSQL类数据库包括但不限于NoSQL、Mongo DB、HBase、Azure Cosmos DB、Couchbase和LevelDB。
2.根据权利要求1所述的实现系统构建方法,将NoSQL数据源按照关系型数据库的方式呈现出来的具体方法包括,
创建外表,以访问NoSQL数据源中的数据;在需要呈现时,同步外表呈现出来的表结构。
3.根据权利要求1或2所述的实现系统构建方法,基于定义的Cube模块实现基于NoSQL类数据库的OLAP的具体方法包括,
根据Cube定义进行数据提取,包括,将呈现为关系型数据库的NoSQL中多张表进行连接,并根据设置选择需要的维度和指标列,把数据从NoSQL中提取出来,保存为数据文件;
以所述数据文件为基础,逐层进行指标聚合,以生成不同维度组合的聚合结果;
将所述聚合结果转换为列式存储格式,便于查询时快速读取相关结果。
4.根据权利要求3所述的实现系统构建方法,所述方法还包括,以所述数据文件为基础,获取每一个维度列的不重复值的集合,基于每个维度列的不重复值的集合,为每个列构建编码器,用于存储时的压缩。
5.一种基于NoSQL类数据库的OLAP实现系统,基于上述构建方法实现,其特征在于,包括,
Cube模块,基于定义的Cube模块实现基于NoSQL类数据库的OLAP;
关系型数据库呈现模块,应Cube模块数据分析需求,按照设置要求将NoSQL数据源按照关系型数据库的方式呈现出来以供Cube模块提取。
6.根据权利要求5所述的实现系统,其特征在于,所述Cube模块包括,数据提取引擎,应Cube模块数据分析需求,连接呈现的关系型数据库,并根据设置选择需要的维度和指标列,把数据从NoSQL中提取出来,保存为数据文件;
聚合结果生成单元,以所述数据文件为基础,逐层进行指标聚合,以生成不同维度组合的聚合结果;
列式存储格式转换单元,将所述聚合结果转换为列式存储格式,便于查询时快速读取相关结果。
7.根据权利要求6所述的实现系统,其特征在于,所述Cube模块还包括编码器构建单元,以所述数据文件为基础,获取每一个维度列的不重复值的集合,基于每个维度列的不重复值的集合,为每个列构建编码器,用于存储时的压缩。
8.一种基于NoSQL类数据库的OLAP实现方法,基于权利要求5到7之一所述的实现系统实现,具体方法包括,
应Cube模块数据分析需求,按照设置要求将NoSQL数据源按照关系型数据库的方式呈现出来以供Cube模块提取;
Cube模块连接呈现的关系型数据库,实现基于NoSQL类数据库的OLAP。
9.一种基于Hadoop平台的OLAP实现方法,包括,
在Hive中创建外表,以访问NoSQL中的数据;
在Apache Kylin中同步表结构,把通过Hive外表暴露出的表结构同步到Apache Kylin中;
在Apache Kylin中创建数据模型和Cube模型,定义需要进行预计算的范围在ApacheKylin中创建数据模型和Cube模型,定义需要进行预计算的范围;
触发Cube的构建,利用Hadoop平台的分布式计算资源产生Cube与计算结果,并保存在HDFS上;
利用Apache Kylin的SQL查询接口,暴露SQL查询能力,帮助分析师用户直接进行数据分析。
10.一种计算机可读存储介质,其特征在于,存储有能够被处理器加载并执行权利要求1到4和7到8中任一种方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811640903.0A CN109753507A (zh) | 2018-12-29 | 2018-12-29 | 基于NoSQL类数据库的OLAP实现系统构建方法、实现系统及实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811640903.0A CN109753507A (zh) | 2018-12-29 | 2018-12-29 | 基于NoSQL类数据库的OLAP实现系统构建方法、实现系统及实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109753507A true CN109753507A (zh) | 2019-05-14 |
Family
ID=66404443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811640903.0A Pending CN109753507A (zh) | 2018-12-29 | 2018-12-29 | 基于NoSQL类数据库的OLAP实现系统构建方法、实现系统及实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109753507A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107169070A (zh) * | 2017-05-08 | 2017-09-15 | 山大地纬软件股份有限公司 | 一种基于大数据的社保指标仓库的构建系统及其方法 |
CN107301206A (zh) * | 2017-06-01 | 2017-10-27 | 华南理工大学 | 一种基于预运算的分布式olap分析方法及系统 |
US20180150531A1 (en) * | 2015-06-29 | 2018-05-31 | Planisware SAS | Enhanced mechanisms for managing multidimensional data |
CN108334554A (zh) * | 2017-12-29 | 2018-07-27 | 上海跬智信息技术有限公司 | 一种新型的olap预计算模型及构建方法 |
-
2018
- 2018-12-29 CN CN201811640903.0A patent/CN109753507A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180150531A1 (en) * | 2015-06-29 | 2018-05-31 | Planisware SAS | Enhanced mechanisms for managing multidimensional data |
CN107169070A (zh) * | 2017-05-08 | 2017-09-15 | 山大地纬软件股份有限公司 | 一种基于大数据的社保指标仓库的构建系统及其方法 |
CN107301206A (zh) * | 2017-06-01 | 2017-10-27 | 华南理工大学 | 一种基于预运算的分布式olap分析方法及系统 |
CN108334554A (zh) * | 2017-12-29 | 2018-07-27 | 上海跬智信息技术有限公司 | 一种新型的olap预计算模型及构建方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9672272B2 (en) | Method, apparatus, and computer-readable medium for efficiently performing operations on distinct data values | |
Dourish | No SQL: The shifting materialities of database technology | |
CN105808437B (zh) | 基于测试用例数据表的自动化测试方法及系统 | |
CN110096434A (zh) | 一种接口测试方法及装置 | |
US9886477B2 (en) | Generating imperative-language query code from declarative-language query code | |
US10162860B2 (en) | Selectivity estimation for query execution planning in a database | |
US11321356B2 (en) | Linking discrete dimensions to enhance dimensional analysis | |
CN102822819A (zh) | 管理数据查询 | |
US20140122455A1 (en) | Systems and Methods for Intelligent Parallel Searching | |
US20180081921A1 (en) | In-memory multi-dimensional dataset with interrogation mechanism for salesforce platform | |
CN111126019B (zh) | 基于模式定制的报表生成方法、装置和电子设备 | |
JP6964706B2 (ja) | ユーザ画像の処理方法、ユーザ画像の処理装置、サーバ及び記憶媒体 | |
CN107273519A (zh) | 数据分析方法、装置、终端及存储介质 | |
Silva et al. | Integrating big data into the computing curricula | |
US20180357278A1 (en) | Processing aggregate queries in a graph database | |
Gyorödi et al. | A comparative study between the capabilities of mysql vs. mongodb as a back-end for an online platform | |
CN108241620B (zh) | 查询脚本的生成方法及装置 | |
US20070282804A1 (en) | Apparatus and method for extracting database information from a report | |
CN108334521B (zh) | 一种数据库容量预测方法及装置 | |
WO2023197865A1 (zh) | 一种信息存储方法及装置 | |
CN111898351A (zh) | 基于Aviator的Excel数据自动导入方法、装置、终端设备及存储介质 | |
WO2023219734A1 (en) | Evaluating row-store expressions on a column-store database | |
CN109753507A (zh) | 基于NoSQL类数据库的OLAP实现系统构建方法、实现系统及实现方法 | |
CN116737753A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
Zhou | A review of Javascript object notation in data analysis |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190514 |