OLAP与ClickHouse基础篇

Posted oahaijgnahz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OLAP与ClickHouse基础篇相关的知识,希望对你有一定的参考价值。

OLAP与ClickHouse基础知识


一、OLAP

联机分析处理(OLAP)是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多维信息的快速分析的特征。其中F是快速性(Fast),指系统能在数秒内对用户的多数分析要求做出反应;A是可分析性(Analysis),指用户无需编程就可以定义新的专门计算,将其作为分析的一部分,并以用户所希望的方式给出报告;M是多维性(Multi-dimensional),指提供对数据分析的多维视图和分析;是信息性(Information),指能及时获得信息,并且管理大容量信息。OLAP展现在用户面前的是一幅幅多维视图

  1. 维(Dimension):是人们观察数据的特定角度,是考虑问题时的一类属性,属性集合构成一个维(时间维、地理维等)。
  2. 维的层次(Level):人们观察数据的某个特定角度(即某个维)还可以存在细节程度不同的各个描述方面(时间维:日期、月份、季度、年)。
  3. 维的成员(Member):维的一个取值,是数据项在某维中位置的描述。(“某年某月某日”是在时间维上位置的描述)。
  4. 度量(Measure):多维数组的取值。(2000年1月,上海,笔记本电脑,0000)。

OLAP的基本多维分析操作有钻取(Drill-up和Drill-down)、切片(Slice)和切块(Dice)、以及旋转(Pivot)等。

  1. 钻取:是改变维的层次,变换分析的粒度。它包括向下钻取(Drill-down)和向上钻取(Drill-up)/上卷(Roll-up)。上钻是在某一维上将低层次的细节数据概括到高层次的汇总数据(地域的市级信息上钻到省级),或者减少维数;而下钻则相反,它从汇总数据深入到细节数据进行观察或增加新维
  2. 切片和切块:是在一部分维上选定值后(只观察某些度量),关心度量数据在剩余维上的分布。如果剩余的维只有两个,则是切片;如果有三个或以上,则是切块。
  3. 旋转:是变换维的方向,即在表格中重新安排维的放置(例如行列互换)。

二、ClickHouse的特点

2.1 MPP架构的列式存储数据库

MPP (Massively Parallel Processing),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。

  • 完备的DBMS功能

    ClickHouse具备完备的数据库管理功能,所以称得上是DBMS(数据库管理系统)。作为DBMS,ClickHouse具备了如DDL(数据定义语言)、DML(数据操作语言)、权限控制、数据备份与恢复等功能。

  • 列式存储与数据压缩

    一个数据库查询的快慢绝大部分取决于扫描数据的范围和数据传输时的大小,而列式存储和数据压缩则是实现上述两点的关键,一般来说列式存储是数据有效压缩的前提

    数据按列组织,可以在查询时避免行式存储多余数据的传输,从而有效减少查询时所需扫描的数据量

    数据按列存储的另一个优势在于,同一列的数据具有相同的数据类型和实现语义,这对数据压缩来说具有天然友好性。数据压缩越高效,那么网络或者磁盘产生的IO也更小,传输速度更快,存储数据量更小。

  • 向量化执行引擎

    在硬件层面上,CPU的SIMD指令(单条指令操作多条数据)可以用寄存器实现数据的并行操作来实现程序性能的提升。

  • 关系型模型与SQL查询

    相比较于HBase和Redis这些NoSQL数据库,ClickHouse使用关系模型描述数据,并提供了SQL作为查询语言。关系型模型相比较于文档和键值对等其他模型,具有更好的描述能力,能更加清晰地表达实体间的关系,同时关系型模型有数仓的数据建模提供支持(星型、雪花乃至宽表)迁移至ClickHouse成本更低。

  • 多线程与分布式、多主架构

    CK在向量化并行场景不适用的情况下,对多分支判断的场景使用多线程并行来加快程序执行速度

    CK的分布式也是一种分布式计算和移动计算的思想,多个节点来承担一个大型计算,数据在节点间的传输成本是高昂的,所以预先将数据都分布到各个节点,后续只需要将计算任务下推到各个节点即可。

    CK采用多主架构,每个节点的角色对等,客户端访问任意节点都能得到相同的查询效果,天然具有规避单点故障的能力

2.2 ClickHouse的表引擎MergeTree

MergeTree在写入一批数据时,数据总会以数据片段的形式写入磁盘,且数据片段不可修改。为了避免片段过多,ClickHouse会通过后台线程,定期合并这些数据片段,属于相同分区的数据片段会被合成一个新的片段。这种数据片段往复合并的特点,也正是合并树名称的由来。

未完待续。。。

2.3 CK的不适用场景

  1. 不支持事务。
  2. 不擅长根据主键按行粒度进行查询(虽然支持),故不应该把ClickHouse当作Key-Value数据库使用。
  3. 不擅长按行删除数据(虽然支持)。

文章参考:《ClickHouse原理解析与应用》 朱凯著

以上是关于OLAP与ClickHouse基础篇的主要内容,如果未能解决你的问题,请参考以下文章

OLAP与ClickHouse基础篇

OLAP与ClickHouse基础篇

最强OLAP分析引擎-Clickhouse快速精通-上

最强OLAP分析引擎-Clickhouse快速精通-上

战斗民族开源神器!ClickHouse为什么能够征服各个大厂?

大数据 OLAP ClickHouse 引擎ClickHouse 系统架构和存储引擎实现原理 : 为什么 ClickHouse 这么快? Why is ClickHouse so fast?