clickhouse

三丰 soft张三丰

Clickhouse简介

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

常见的列式数据库有:Vertica、 Paraccel (Actian Matrix,Amazon Redshift)、 Sybase IQ、 Exasol、 Infobright、 InfiniDB、 MonetDB (VectorWise, Actian Vector)、 LucidDB、 SAP HANA、 Google Dremel、 Google PowerDrill、 Druid、 kdb+。

不同的存储方式适合不同的场景,这里的查询场景包括:

•进行了哪些查询
•多久查询一次
•各类查询的比例
•每种查询读取多少数据————行、列和字节
•读取数据和写入数据之间的关系
•使用的数据集大小以及如何使用本地的数据集
•是否使用事务,以及它们是如何进行隔离的
•数据的复制机制与数据的完整性要求
•每种类型的查询要求的延迟与吞吐量
系统负载越高,根据使用场景进行定制化就越重要,并且定制将会变的越精细。没有一个系统同样适用于明显不同的场景。如果系统适用于广泛的场景,在负载高的情况下,所有的场景可以会被公平但低效处理,或者高效处理一小部分场景。

优点

1.为了高效的使用CPU,数据不仅仅按列存储,同时还按向量进行处理;
2.数据压缩空间大,减少IO;处理单查询高吞吐量每台服务器每秒最多数十亿行;
3.索引非B树结构,不需要满足最左原则;只要过滤条件在索引列中包含即可;即使在使用的数据不在索引中,由于各种并行处理机制ClickHouse全表扫描的速度也很快;
4.写入速度非常快,50-200M/s,对于大量的数据更新非常适用。

缺点

1.不支持事务,不支持真正的删除/更新;
2.不支持高并发,官方建议qps为100,可以通过修改配置文件增加连接数,但是在服务器足够好的情况下;
3.SQL满足日常使用80%以上的语法,join写法比较特殊;最新版已支持类似SQL的join,但性能不好;
4.尽量做1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操作,因为ClickHouse底层会不断的做异步的数据合并,会影响查询性能,这个在做实时数据写入的时候要尽量避开;
5.Clickhouse快是因为采用了并行处理机制,即使一个查询,也会用服务器一半的CPU去执行,所以ClickHouse不能支持高并发的使用场景,默认单查询使用CPU核数为服务器核数的一半,安装时会自动识别服务器核数,可以通过配置文件修改该参数。
全量数据导入:数据导入临时表 -> 导入完成后,将原表改名为tmp1 -> 将临时表改名为正式表 -> 删除原表

增量数据导入:增量数据导入临时表 -> 将原数据除增量外的也导入临时表 -> 导入完成后,将原表改名为tmp1-> 将临时表改成正式表-> 删除原数据表

架构对比

Hbase架构

Kudu架构

Clickhouse架构


综上所示,Hbase和Kudu都是类似于Master-slave的架构而Clickhouse不存在Master结构,Clickhouse的每台Server的地位都是等价的,是multi-master模式。不过Hbase和Clickhouse额外增加了一个Zookeeper作为辅助的元数据存储或者是log server等,而Kudu的元数据是Master管理的,为了避免server频繁从Master读取元数据,server会从Master获取一份元数据到本地,但是会有元数据丢失的风险。

©著作权归作者所有:来自51CTO博客作者mb5fe32930661bd的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Android之MVC模式
  5. Android(安卓)Studio环境下连接远程服务器中的sqlserver2012数据
  6. Android下使用lamemp3库将PCM录音数据压缩为MP3格式
  7. Android(安卓)性能优化 APM 平台搭建
  8. Android(安卓)实现联网(二)——java.net漫游
  9. C虾仔笔记 - 数据存储

随机推荐

  1. php检查数组下标是否存在
  2. php 与 nginx 的两种处理方式
  3. PHP运算符知识点整理
  4. php检测字符串是否包含字符串
  5. PHP 实现常用数据结构之链表
  6. php判断数组某个值是否存在
  7. php生成一个不重复的会员号
  8. tideways+toolkit对php代码进行性能分析
  9. php+nodeJs+thrift协议,实现zookeeper节点
  10. PHP写时复制(Copy On Write)