ClickHouse 详解

1. 简介

官方文档:https://clickhouse.yandex/docs
ClickHouse 是一个采用列式存储,用于联机分析(OLAP)的数据库管理系统(DBMS)

2.ClickHouse 的优点

2.1 "真正"的列式存储

一个真正的列式存储的数据库管理系统中,除了数据本身之外不应该存在其他额外的数据。意味着为了避免在只旁边存储它们的长度 'number',必须支持固定长度的数值类型。ClickHouse 的数据类型都是固定长度。

2.2 实时的数据更新

ClcikHouse 数据是以增量的方式有序的存储在 MergeTree 中。因此,数据可以持续不断高效的写入到表中,并且写入的过程中不会存在任何加锁的行为。

2.3 支持近似计算

ClickHouse 提供各种各样在允许牺牲精度的情况下对查询进行加速的方法

  1. 用于近似计算的各类聚合函数,如:distinct values, medians, quantiles
  2. 基于数据的部分样本进行近似查询。这时,仅会从磁盘检索少部分比例的数据。
  3. 不使用全部的聚合条件,通过随机选择有限个数据聚合条件进行聚合。这在数据聚合条件满足某些分布条件下,在提供相当准确的聚合结果的同时降低了计算资源的使用

2.4 支持数据复制和数据完整性

ClickHouse 使用异步的多住复制技术。当数据被写入到任何一个可用副本后,系统在后台将数据分发给其他副本。

  1. 只有 MergeTree 系列里的表壳支持副本
  2. 副本是表级别的,不是整个服务器级的。
  3. 副本不依赖分片,每个分片有它的独立副本
  4. 对于 InsertAlter 语句操作数据的会在压缩的情况下被复制
  5. CREATE,DROP,DETACH,RENAME 语句只会在单个服务器上执行,不会被复制
    • CREATE TABLE 在运行此语句的服务器上创建一个新的可复制表。如果此表已存在其他服务器上,则给该表添加新副本。
    • DROP TABLE 删除运行此查询的服务器上的副本。
    • RENAME 重命名一个副本。换句话说,可复制表不同的副本可以有不同的名称。

3. ClickHouse 的缺点

  1. 没有完整的事务支持
  2. 缺少高频率、低延迟的修改或删除已存在数据的能力,仅能用于批量删除或修改数据。
posted @ 2020-02-02 23:58  大数据小码农  阅读(8070)  评论(0编辑  收藏  举报