美文网首页
二、ClickHouse概念了解

二、ClickHouse概念了解

作者: nieniemin | 来源:发表于2021-05-06 09:51 被阅读0次

    ClickHouse是一个用于联机分析(OLAP)的式数据库管理系统(DBMS)。
    1. 什么是OLAP?
    数据处理大致可以分成两大类:联机事务处理OLTP、联机分析处理OLAP。

    OLTP:OLTP(Online Transaction Processing)联机事务处理是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理。基于列存储,查询速度极快,用于海量数据分析。MySQL、Oracle;

    OLAP:数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。Hive、Greeplum、Druid、Clickhouse;

    OLAP场景的关键特征如下:

    • 绝大多数是读请求
    • 数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
    • 已添加到数据库的数据不能修改。
    • 对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
    • 宽表,即每个表包含着大量的列
    • 查询相对较少(通常每台服务器每秒查询数百次或更少)
    • 对于简单查询,允许延迟大约50毫秒
    • 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
    • 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
    • 事务不是必须的
    • 对数据一致性要求低
    • 每个查询有一个大表。除了他以外,其他的都很小。
    • 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中
      2.什么是列式数据库?
      以下面的表为例:

    采用行式存储时,数据在磁盘上的组织结构为:

    好处是想查某个人所有的属性时,可以通过一次磁盘查找加顺序读取就可以。但是当想查所有人的年龄时,需要不停的查找,或者全表扫描才行,遍历的很多数据都是不需要的。

    而采用列式存储时,数据在磁盘上的组织结构为:

    这时想查所有人的年龄只需把年龄那一列拿出来就可以了。

    ClickHouse优点:

    1)为了高效的使用CPU,数据不仅仅按列存储,同时还按向量进行处理;

    2)数据压缩空间大,减少io;处理单查询高吞吐量每台服务器每秒最多数十亿行;

    3)索引非B树结构,不需要满足最左原则;只要过滤条件在索引列中包含即可;即使在使用的数据不在索引中,由于各种并行处理机制ClickHouse全表扫描的速度也很快;

    4)写入速度非常快,50-200M/s,对于大量的数据更新非常适用;

    ClickHouse并非万能的,正因为ClickHouse处理速度快,所以也是需要为“快”付出代价。选择ClickHouse需要有下面注意以下几点:

    1)不支持事务,不支持真正的删除/更新;

    2)不支持高并发,官方建议qps为100,可以通过修改配置文件增加连接数,但是在服务器足够好的情况下;

    3)sql满足日常使用80%以上的语法,join写法比较特殊;最新版已支持类似sql的join,但性能不好;

    4)尽量做1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操作,因为ClickHouse底层会不断的做异步的数据合并,会影响查询性能,这个在做实时数据写入的时候要尽量避开;

    5)Clickhouse快是因为采用了并行处理机制,即使一个查询,也会用服务器一半的cpu去执行,所以ClickHouse不能支持高并发的使用场景,默认单查询使用cpu核数为服务器核数的一半,安装时会自动识别服务器核数,可以通过配置文件修改该参数;

    相关文章

      网友评论

          本文标题:二、ClickHouse概念了解

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