美文网首页
ClickHouse简记

ClickHouse简记

作者: _陆春阳_ | 来源:发表于2019-05-25 16:15 被阅读0次

    初识ClickHouse

    第一次接触ClickHouse是在朋友圈,很凑巧的是当时正在寻找一款不依赖Hadoop生态圈的分析引擎数据库,同类数据库也看了不少 ,比如刚刚研究的InfoBright,性能上的确不错,但是缺点也很多(详情请看上一篇),所以遇到ClickHouse后发现眼前一亮!

    什么是ClickHouse?

    ClickHouse是一个用于联机分析(OLAP)的列式存储数据库(DBMS)

    和我们传统的行存储数据库比较

    行存储
    列存储

    OLAP使用场景

    1.读请求占大多数。
    2.数据总是以大批量(> 1000 rows)进行写入。
    3.已添加的数据不修改。
    4.每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列。
    5.宽表,即每个表包含着大量的列。
    6.较少的查询。(通常每台服务器每秒数百个查询或更少)
    7.对于简单查询,允许延迟大约50毫秒。
    8.列中的数据相对较小: 数字和短字符串。(例如,每个URL 60个字节)
    9.处理单个查询时需要高吞吐量。(每个服务器每秒高达数十亿行)
    10.事务不是必须的。
    11.对数据一致性要求低。
    12.每一个查询除了一个大表外其他都很小。
    13.查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中。

    那么多数据库,为啥用它?

    1.快 。(这一个字就够了吧)
    2.数据压缩。
    3.多核并行处理,在大型查询中ClickHouse可以并行化处理,合理利用资源。
    4.分布式处理,大部分列式存储数据库,几乎没有一个支持分布式的查询处理。
    5.完美支持SQL(没有开窗函数有点遗憾)
    6.支持近似计算,牺牲了精确度,换的是速度。
    7.异步的多主复制技术,在大多数情况下ClickHouse能在故障后自动恢复。

    几乎可以忽略的缺点

    1.没有完整的事物支持。
    2.没有Update/Delete.
    3.多服务器上DDL不同步。

    它究竟有多快?

    1.简单的查询速度可达30GB/s 。
    2.短查询非常低的延迟时间,延迟少于50毫秒。
    3.批量写入50~200MB/s。
    这里有性能报告

    非常好用的小功能

    1.从Mysql中拉取数据,有点像Mysql的Federated引擎

    # du出的表大小
    13.7G    playlog.ibd
    # ClickHouse操作语句
    CREATE TABLE playlog
    ENGINE = MergeTree
    ORDER BY id AS
    SELECT *
    FROM mysql('host:port', 'db', 'playlog', 'user', 'password')
    # 耗时和平均速度
    0 rows in set. Elapsed: 230.232 sec. Processed 45.32 million rows, 17.6 GB (138.23 thousand rows/s., 52.31 MB/s.)
    

    2.从Kafka中读取数据

    # ClickHouse操作语句
      CREATE TABLE queue (
        timestamp UInt64,
        level String,
        message String
      ) ENGINE = Kafka('localhost:9092', 'topic', 'group1', 'JSONEachRow');
    
    今天的总结就写这些吧!
    以上部分图片和数据出自ClickHouse官网

    相关文章

      网友评论

          本文标题:ClickHouse简记

          本文链接:https://www.haomeiwen.com/subject/zgzazqtx.html