前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OLAP数据库初探

OLAP数据库初探

作者头像
木东居士
发布2020-07-27 17:48:12
3K0
发布2020-07-27 17:48:12
举报

OLAP数据库初探

|0x00 OLAP简介

OLAP的标准概念叫作“联机分析处理系统”,与之对应的是OLTP“联机事务处理系统”。OLTP对于事务性的要求非常高,常用于银行、证券等系统,但运行速度相对有限。有感于此,关系数据库之父Codd便在1993年提出了OLAP的概念,认为用户的很多决策需要依赖大量的计算与多维的分析才能解决,并作为一类单独的产品,与OLTP区分开来。

OLAP委员会对联机分析处理的定义为:从原始数据中转化出来的、能够真正为用户所理解的、并真实反映企业多维特性的数据称为信息数据,使分析人员、管理人员或执行人员能够从多种角度对信息数据进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。

可以说,OLAP的核心特点是“多维”,OLAP技术也可以称之为“多维度数据分析工具”。

|0x01 OLAP的特点

Codd提出了关于OLAP的12条准则:

  • 1:Multidimensional conceptual view OLAP 模型必须提供多维概念视图;
  • 2:Transparency 透明性;
  • 3:Accessibility 存取能力准则;
  • 4:Consistent reporting performance 稳定的报表能力;
  • 5:Client/server architecture 客户/服务器体系结构;
  • 6:Generic dimensionality 维的等同性准则;
  • 7:Dynamic sparse matrix handling 动态的稀疏矩阵处理;
  • 8:Multi-user support 多用户支持能力;
  • 9:Unrestricted cross-dimensional operations 非受限的跨维操作;
  • 10:Intuitive data manipulation 直观的数据操纵;
  • 11:Flexible reporting 灵活的报表生成;
  • 12:Unlimited dimensions and aggregation levels. 不受限的维与聚集层次。

综上所述,OLAP系统强调了数据分析在系统中的重要性,对于速度等要求有着极高的要求。

目前我们能接触到的开源OLAP包括但不限定于:Hive、Hawq、Spark SQL、Presto、Kylin、Impala、Druid、Greeplum等。有点类似于“蒙代尔不可能三角”,目前没有一个引擎能够在数据量、灵活性和速度上做到完美统一,针对不同的场景,每种数据库的使用范围不同。

|0x02 Hive

Hive是基于HDFS的OLAP应用,一般只用于分析计算,不用于CRUD操作。作为MapReduce的SQL化表达方式,优点是学习成本低,不用学习专门的MapReduce开发,且数据格式可以自定义,扩展性非常好,十分适合做数据仓库。但Hive在数据处理的过程中,并不会直接加工数据,因此通常会扫描全表数据来实现分析功能,计算的延迟非常高。尽管Hive的计算过程动辄以小时计算,但Hive仍然是基于Hadoop体系应用最广泛的OLAP引擎。

官网:https://hive.apache.org/

|0x03 Hawq

Hawq相较于Hive,最大的不同,是采用了MPP架构,改进了针对 Hadoop 的基于成本的查询优化器。除了能高效处理本身的内部数据。无论是功能特性,还是性能表现,HAWQ 都比较适用于构建 Hadoop 分析型数据仓库应用。

官网:http://hawq.apache.org

|0x04 Spark SQL

SparkSQL的前身是Shark,它将 SQL 查询与 Spark 程序无缝集成,可以将结构化数据作为 Spark 的 RDD 进行查询。SparkSQL作为Spark生态的一员继续发展,而不再受限于Hive,只是兼容Hive。

官网:https://spark.apache.org/sql/

|0x05 Presto

Presto 是由 Facebook 开源的大数据分布式 SQL 查询引擎,适用于交互式分析查询,可支持众多的数据源,包括 HDFS,RDBMS,KAFKA 等,而且提供了非常友好的接口开发数据源连接器。

Presto没有使用MapReduce,它是通过一个定制的查询和执行引擎来完成的。它的所有的查询处理是在内存中,这也是它的性能很高的一个主要原因。Presto和Spark SQL有很大的相似性,这是它区别于Hive的最根本的区别。

官网:https://prestodb.github.io/

|0x06 Kylin

提到Kylin就不得不说说ROLAP和MOLAP。

  • ROLAP:以关系模型的方式存储用作多为分析用的数据,优点在于存储体积小,查询方式灵活,然而缺点也显而易见,每次查询都需要对数据进行聚合计算,为了改善短板,ROLAP使用了列存、并行查询、查询优化、位图索引等技术。
  • MOLAP:将分析用的数据物理上存储为多维数组的形式,形成CUBE结构。维度的属性值映射成多维数组的下标或者下标范围,事实以多维数组的值存储在数组单元中,优势是查询快速,缺点是数据量不容易控制,可能会出现维度爆炸的问题。

而Kylin自身就是一个MOLAP系统,多维立方体(MOLAP Cube)的设计使得用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体进行数据的预聚合。

官网:http://kylin.apache.org/cn/

|0x07 Impala

Impala也是一个SQL on Hadoop的查询工具,底层采用MPP技术,支持快速交互式SQL查询。与Hive共享元数据存储。Impalad是核心进程,负责接收查询请求并向多个数据节点分发任务。statestored进程负责监控所有Impalad进程,并向集群中的节点报告各个Impalad进程的状态。catalogd进程负责广播通知元数据的最新信息。

官网:https://impala.apache.org/

|0x08 Druid

Druid 是一种能对历史和实时数据提供亚秒级别的查询的数据存储。Druid 支持低延时的数据摄取,灵活的数据探索分析,高性能的数据聚合,简便的水平扩展。适用于数据量大,可扩展能力要求高的分析型查询系统。Druid解决的问题包括:数据的快速摄入和数据的快速查询。

官网:https://druid.apache.org/

|0x09 Greeplum

Greenplum是一个开源的大规模并行数据分析引擎。借助MPP架构,在大型数据集上执行复杂SQL分析的速度比很多解决方案都要快。一个重要的信息是,Greenplum基于Postgresql,也就是说GreenPulm和TiDB的定位类似,想要在OLTP和OLAP上进行统一。

官网:https://greenplum.org/

|0xFF

就像美团在调研Kylin的报告中所说的:“目前还没有一个OLAP系统能够满足各种场景的查询需求。其本质原因是,没有一个系统能同时在数据量、性能、和灵活性三个方面做到完美,每个系统在设计时都需要在这三者间做出取舍。”

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木东居士 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OLAP数据库初探
    • |0x00 OLAP简介
      • |0x01 OLAP的特点
        • |0x02 Hive
          • |0x03 Hawq
            • |0x04 Spark SQL
              • |0x05 Presto
                • |0x06 Kylin
                  • |0x07 Impala
                    • |0x08 Druid
                      • |0x09 Greeplum
                        • |0xFF
                        相关产品与服务
                        数据保险箱
                        数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档