引言
Clickhouse 数据库来自于战斗民族俄罗斯,其速度彪悍程度同样令人敬畏,本文作为引擎专题将为大家介绍Clickhouse当前支持的不同引擎特性,以及如何快速应用到自己项目中。我将根据实际的项目经验并带点个人思考为大家做出示范,注意,本文并不对该数据库做全面介绍,如果你想了解安装和其它细节问题,可以从官方论坛(如果你看不懂英语,给我打个赏嘛,或许我们之间的故事就开始了)或其它渠道进行了解。
无论怎样,目前国内对Clickhouse的讨论和应用还处于萌芽的阶段,你可能很难找到相关的介绍,本人实际遇到的问题大多通过国外论坛的讨论并加以总结,文章的描述可能不尽专业,这里还希望各位大神批评指正互相探讨。
了解Clickhouse
Clickhouse是Yandex公司的开源作品,Yandex是一家搜索引擎公司,号称俄罗斯的“百度”,内部很多项目采用了该数据库进行大数据管理。总之,你放心就是,人家大公司的作品你不需要过多怀疑可靠性。
Clickhouse专注于大数据的处理,号称大数据的数据库感觉很屌吗?其实也不是,所谓术业有专攻,Clickhouse适合当做数据仓库进行大数据分析,但绝对不能拿来支持业务的处理,这和Mysql是两种概念。Mysql很好地支持事务,这主要是从安全和数据的完整性考虑。而Clickhouse完全是分析型,要从一堆亿万数据中分析出你认为很有用的东西,速度至上,所以不支持耗时的事务。
速度!速度!速度是Clickhouse的最大特色了,如果你刚好追求这个东西,那么Clickhouse很有可能适合你,你想对100亿行数据实现毫秒查询吗?你想实现1秒内单机20000条数据插入吗?你想对亿万数据实现去重吗?你如果大声说想,那就对了。
Clickhouse能够支持Sql语句实时查询并生产数据报告。也就是说,如果你熟悉Sql语法那么你将会比较轻松地使用这个数据库,当然了,Clickhouse的sql语法在一些细节上将体现出一些差异,相较于Mysql在连接查询、函数应用和字段类型的支持上都有明显的体会。Clickhouse函数库极其丰富而强大,同时支持数组等复杂的字段类型,在大部分情况下你能应对各种蛋疼的数据关系,我想高傲而机智的你早已胸怀于心跃跃欲试。
任何大规模的问题,貌似专业的你都会抛出一句话:“容灾不?分布式不?”,我知道你说这句话的时候嘴角上扬了一下,而该配合演出的我当然会说:“easy easy”。Clickhouse支持在数百个节点的集群上执行,什么单点故障后的请求转移啊、主从复制啊、分布式处理啊,统统满足你所有的幻想~关键是,整个配置过程相当优雅!
以上从个人角度来概括对Clickhouse的基本印象,如果你觉得有那么点意思,那么接下来我们可以回归到本文的重点:引擎!Clickhouse支持Log、Memory、Merge三大类引擎,不同引擎的应用环境都非常不一样,而大多数应用场景会用到的引擎是Merge系列,Merge系列又分为MergeTree、CollapsingMergeTree、SummingMergeTree、AggregatingMergeTree、ReplacingMergeTree这些引擎,再配合Distributed引擎将构成本文的主要讨论内容。
引擎的那些事
抱歉,写到这里刚好端午节了,等我过完节再更新下讨论讨论。