【大数据哔哔集20210110】后起之秀ClickHouse的优缺点和核心特性
The following article is from 大数据真好玩 Author 大数据真好玩
点击上方蓝色字体,选择“设为星标”
回复”资源“获取更多惊喜
ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).
Vertica的2.63倍(Vertica是一款收费的列式存储数据库)
InfiniDB的17倍(可伸缩的分析数据库引擎,基于Mysql搭建)
MonetDB的27倍(开源的列式数据库)
Hive的126倍
MySQL的429倍
Greenplum的10倍
Spark的1倍
ClickHouse主要特点
ROLAP(关系型的联机分析处理,和它一起比较的还有OLTP联机事务处理,我们常见的ERP,CRM系统就属于OLTP)
在线实时查询
完整的DBMS(关系数据库)
列式存储(区别与HBase,ClickHouse的是完全列式存储,HBase具体说是列族式存储)
不需要任何数据预处理
支持批量更新
拥有完善的SQl支持和函数
支持高可用(多主结构,在后面的结构设计中会讲到)
不依赖Hadoop复杂生态(像ES一样,开箱即用)
一些不足
不支持事务(这其实也是大部分OLAP数据库的缺点)
不擅长根据主键按行粒度查询(但是支持这种操作)
不擅长按行删除数据(但是支持这种操作)
ClickHouse基础架构
第一类用于处理数据定义的DDL操作
第二类用于处理关系运算的相关操作
第三类则是与表引擎呼应,每一种表引擎都拥有与之对应的BlockInputStream实现
ClickHouse 表引擎
MergeTree :允许您依据主键和日期创建索引,并进行实时的数据更新操作。MergeTree 是 ClickHouse 里最为先进的表引擎。
ReplacingMergeTree :该引擎和MergeTree的不同之处在于它会删除具有相同主键的重复项。数据的去重只会在合并的过程中出现。有一些数据可能仍未被处理。因此,ReplacingMergeTree适用于在后台清除重复的数据以节省空间,但是它不保证没有重复的数据出现。在一定程度上可以弥补clickhouse不能对数据做更新的操作,可以用做在数据过多重复场景对数据进行去重。
SummingMergeTree:表的数据片段时,ClickHouse 会把所有具有相同主键的行合并为一行,该行包含了被合并的行中具有数值数据类型的列的汇总值。如果主键的组合方式使得单个键值对应于大量的行,则可以显著的减少存储空间并加快数据查询的速度,对于不可加的列,会取一个最先出现的值。对某个字段长期的汇总查询场景。
AggregatingMergeTree :该引擎继承自 MergeTree,并改变了数据片段的合并逻辑。ClickHouse 会将相同主键的所有行(在一个数据片段内)替换为单个存储一系列聚合函数状态的行。可以使用 AggregatingMergeTree 表来做增量数据统计聚合,包括物化视图的数据聚合。引擎需使用 AggregateFunction 类型来处理所有列。如果要 按一组规则来合并减少行数,则使用 AggregatingMergeTree 是合适的。对于AggregatingMergeTree不能直接使用insert来查询写入数据。一般是用insert select。但更常用的是创建物化视图 ,做增量数据统计聚合,包括物化视图的数据聚合。
Distributed 分布式引擎本身不存储数据, 但可以在多个服务器上进行分布式查询。读是自动并行的。读取时,远程服务器表的索引(如果有的话)会被使用。分布式引擎参数:服务器配置文件中的集群名,远程数据库名,远程表名,数据分片键。
【大数据哔哔集20210108】Spark Shuffle 和 Hadoop Shuffle有什么异同?
【大数据哔哔集20210107】聊聊MapReduce中的排序/二次排序/辅助排序
【大数据哔哔集20210106】Hadoop3.0有哪些新特性