ClickHouse介绍

  • ClickHouse来自哪里?

俄罗斯最大的搜索公司Yandex,在clickhouse的配置文件中我们也会看到yandex的影子。

  • ClickHouse是什么?

ClickHouse是一个开源的列式数据库(DBMS),主要用于在线分析处理查询(OLAP),于2016年开源,采用C++开发。凭借优秀的性能,市场反应非常热烈。

  • 什么是列式数据库?

相对行式数据库,像Mysql、Oracle、SqlServer等都是行式存储,是把同一行的数据放到相邻同一数据块种,而列式存储是把同一列的数据放到相邻同一数据块种,这样在进行计算类查询时,可以大大减少IO消耗,返回结果更快,采用列式存储后在进行数据记录写入的时候会麻烦一些。

行式存储

列式存储

性能测试

主要特性

  • 丰富的表引擎,主要用到以下表引擎

MergeTree引擎家族:ReplicatedMergeTree

Distributed分布式引擎

  • 矢量计算:减少调用次数,适用现代CPU的扩展指令集支持SIMD
  • 丰富的SQL和函数
  • 强有力的数据压缩:相对mysql压缩10倍
  • 分布式处理
  • 列式存储:降低io消耗
  • 数据复制完整性
  • 集群式管理
  • 可直接读取MYSQL数据

       待完善功能:

  • 不支持二级索引
  • 不支持事物:不适合OLTP
  • 低并发:不适合高QPS的KV存储
  • 对长文本支持差:建议用ES

架构:采用分布式+高可用集群

  1. Clickhouse分布式通过配置文件来实现,同一集群配置多个shard,每个shard都配置相同的配置文件;而高可用需要借助zookeeper来实现,表采用ReplicatedMergeTree引擎,共享同一个ZK路径的表,会相互同步数据;

  1. ReplicatedMergeTree,复制引擎,基于MergeTree,实现数据复制,即高可用;
  2. Distributed,分布式引擎,本身不存储数据,将数据分发汇总;
  3. app不管连接哪台shard,通过访问Distributed引擎表,读取的数据都是一致的。

官方网站:

         https://clickhouse.yandex/docs/en

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐