对比:
1,研发同学有 debug 的需求,他们不仅需要看聚合指标,某些时间还需要查询明细数据;
2,推荐系统产生的数据,维度和指标多达几百列,而且未来可能还会增加;
3,每一条数据都命中了若干个实验,使用 Array 存储,需要高效地按实验 ID 过滤数据;
ES 不适合大批量数据的查询,Druid 则不满足明细数据查询的需求。ClickHouse 则刚好适合这个场景。
ClickHouse优点
1,ClickHouse是免费的的,ClickHouse可以使用自己的机器部署,不需要云。
2,与Cloudera Impala, Spark SQL, Facebook Presto , Apache Drill区别:ClickHouse支持实时的高并发系统ClickHouse不依赖于Hadoop生态软件和基础ClickHouse支持分布式机房的部署
3,与nfiniDB, MonetDB, LucidDB区别:这些项目的应用的规模较小,并没有应用在大型的互联网服务当中,相比之下,ClickHouse的成熟度和稳定性远远超过这些软件。
4,与Druid , Apache Kylin对比,ClickHouse可以支持从原始数据的直接查询,ClickHouse支持类SQL语言,提供了传统关系型数据的便利。
ClickHouse的特性
1, 真正的面向列的DBMS
ClickHouse拥有完备的管理功能,所以它称得上是一个DBMS ( Database Management System,数据库管理系统 ),而不仅是一个数据库。作为一个DBMS,它具备了一些基本功能,如下所示。
DDL ( 数据定义语言 ):可以动态地创建、修改或删除数据库、表和视图,而无须重启服务。
DML ( 数据操作语言 ):可以动态查询、插入、修改或删除数据。
权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性。
数据备份与恢复:提供了数据备份导出与导入恢复机制,满足生产环境的要求。
分布式管理:提供集群模式,能够自动管理多个数据库节点。
2, 在线查询
ClickHouse经常会被拿来与其他的分析型数据库作对比,比如Vertica、SparkSQL、Hive和Elasticsearch等,它与这些数据库确实存在许多相似之处。例如,它们都可以支撑海量数据的查询场景,都拥有分布式架构,都支持列存、数据分片、计算下推等特性。这其实也侧面说明了ClickHouse在设计上确实吸取了各路奇技淫巧。与其他数据库相比,ClickHouse也拥有明显的优势。例如,Vertica这类商用软件价格高昂;SparkSQL与Hive这类系统无法保障90%的查询在1秒内返回,在大数据量下的复杂查询可能会需要分钟级的响应时间;而Elasticsearch这类搜索引擎在处理亿级数据聚合查询时则显得捉襟见肘。
正如ClickHouse的"广告词"所言,其他的开源系统太慢,商用的系统太贵,只有Clickouse在成本与性能之间做到了良好平衡,即又快又开源。ClickHouse当之无愧地阐释了"在线"二字的含义,即便是在复杂查询的场景下,它也能够做到极快响应,且无须对数据进行任何预处理加工。
3,支持近似计算
1.系统包含用于近似计算各种值,中位数和分位数的集合函数。
2.支持基于部分(样本)数据运行查询并获得近似结果。在这种情况下,从磁盘检索比例较少的数据。
3.支持为有限数量的随机密钥(而不是所有密钥)运行聚合。在数据中密钥分发的特定条件下,这提供了相对准确的结果,同时使用较少的资源。
应用场景:
1.绝大多数请求都是用于读访问的
2.数据需要以大批次(大于1000行)进行更新,而不是单行更新;或者根本没有更新操作
3.数据只是添加到数据库,没有必要修改
4.读取数据时,会从数据库中提取出大量的行,但只用到一小部分列
5.表很“宽”,即表中包含大量的列
6.查询频率相对较低(通常每台服务器每秒查询数百次或更少)
7.对于简单查询,允许大约50毫秒的延迟
8.列的值是比较小的数值和短字符串(例如,每个URL只有60个字节)
9.在处理单个查询时需要高吞吐量(每台服务器每秒高达数十亿行)
10.不需要事务
11.数据一致性要求较低
12.每次查询中只会查询一个大表。除了一个大表,其余都是小表
13.查询结果显著小于数据源。即数据有过滤或聚合。返回结果不超过单个服务器内存大小
缺点:
- 不支持真正的删除/更新支持 不支持事务(期待后续版本支持)
- 不支持二级索引
- 有限的SQL支持,join实现与众不同
- 不支持窗口功能
- 元数据管理需要人工干预维护