-
ClickHouse的定义
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。
联机分析处理OLAP是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多维信息的快速分析的特征。其中F是快速性(Fast),指系统能在数秒内对用户的多数分析要求做出反应;A是可分析性(Analysis),指用户无需编程就可以定义新的专门计算,将其作为分析的一部 分,并以用户所希望的方式给出报告;M是多维性(Multi—dimensional),指提供对数据分析的多维视图和分析;I是信息性(Information),指能及时获得信息,并且管理大容量信息。
随着市场竞争的日趋激烈,企业更加强调决策的及时性和准确性,这使得以支持决策管理分析为主要目的的应用迅速崛起,这类应用被称为联机分析处理,它所存储的数据被称为信息数据。《百度百科》
OLAP是“使分析人员、管理人员或执行人员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的并真实反映企业维特性的信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。”其特点如下:
1)快速性:用户对OLAP的快速反应能力有很高的要求。
2)可分析性:OLAP系统应能处理与应用有关的任何逻辑分析和统计分析。
3)多维性:多维性是OLAP的关键属性。系统必须提供对数据分析的多维视图和分析,包括对层次维和多重层次维的完全支持。事实上,多维分析是分析企业数据最有效的方法,是OLAP的灵魂。
4)信息性:不论数据量有多大,也不管数据存储在何处,OLAP系统应能及时获得信息,并且管理大容量信息。
-
CK数据存储方式
1)传统的数据库是行存储,CK是采用列存储。
行存储是一行数据总是一起存在物理存储上,CK是一列数据保持在一起。
查询100列中的5列,行查询,需要读取所有的列再选择,明显CK涉及的数据量小的多。
2)在列处理上更进一步[向量引擎],可按向量进行处理,就是能对列的一部分进行处理;
3)列上的数据是可压缩的,能使数据列进一步减少;
4)列固定的长度,相对行存储,不需要每个数据都要存储数据的长度,较少了空间;
5) MergeTree表是有主键排序的数据片段,CK会为每个数据片段创建一个索引,索引文件包含每个索引行的主键值;
我们以 (CounterID, Date)
以主键。排序好的索引的图示会是下面这样:
全部数据 : [-------------------------------------------------------------------------]
CounterID: [aaaaaaaaaaaaaaaaaabbbbcdeeeeeeeeeeeeefgggggggghhhhhhhhhiiiiiiiiikllllllll]
Date: [1111111222222233331233211111222222333211111112122222223111112223311122333]
标记: | | | | | | | | | | |
a,1 a,2 a,3 b,3 e,2 e,3 g,1 h,2 i,1 i,3 l,3
标记号: 0 1 2 3 4 5 6 7 8 9 10
如果指定查询如下:
CounterID in ('a', 'h')
,服务器会读取标记号在[0, 3)
和[6, 8)
区间中的数据。CounterID IN ('a', 'h') AND Date = 3
,服务器会读取标记号在[1, 3)
和[7, 8)
区间中的数据。Date = 3
,服务器会读取标记号在[1, 10]
区间中的数据。