超详细解读+快速入门 一文快速了解ClickHouse 战斗民族的开源搜索引擎( 二 )


超详细解读+快速入门  一文快速了解ClickHouse 战斗民族的开源搜索引擎

文章插图
由于数据总是打包成批量读取的 , 所以压缩是非常容易的 。同时数据按列分别存储这也更容易压缩 。这进一步降低了I/O的体积 。
由于I/O的降低 , 这将帮助更多的数据被系统缓存 。
例如 , 查询?统计每个广告平台的记录数量?需要读取?广告平台ID?这一列 , 它在未压缩的情况下需要1个字节进行存储 。如果大部分流量不是来自广告平台 , 那么这一列至少可以以十倍的压缩率被压缩 。当采用快速压缩算法 , 它的解压速度最少在十亿字节(未压缩数据)每秒 。换句话说 , 这个查询可以在单个服务器上以每秒大约几十亿行的速度进行处理 。这实际上是当前实现的速度 。
2.1. 劣 势
缺少高频率 , 低延迟的修改或删除已存在数据的能力 。仅能用于批量删除或修改数据;
没有完整的事务支持
不支持二级索引
有限的SQL支持 , join实现与众不同
不支持窗口功能
元数据管理需要人工干预维护
2.1. 基准测试
2. 应用场景
绝大多数请求都是用于读访问的 , 数据只是添加到数据库 , 没有必要修改
数据需要以大批量(大于1000行)进行更新 , 而不是单行更新;或者根本没有更新操作
读取数据时 , 会从数据库中提取出大量的行 , 但只用到一小部分列
表很“宽” , 即表中包含大量的列
查询频率相对较低(通常每台服务器每秒查询数百次或更少)
对于简单查询 , 允许大约50毫秒的延迟
列的值是比较小的数值和短字符串(例如 , 每个URL只有60个字节)
在处理单个查询时需要高吞吐量(每台服务器每秒高达数十亿行)
不需要事务 , 数据一致性要求较低
每次查询中只会查询一个大表 。除了一个大表 , 其余都是小表
查询结果显著小于数据源 。即数据有过滤或聚合 。返回结果不超过单个服务器内存大小
2. 使用案例
是近年来备受关注的开源列式数据库 , 主要用于数据分析(OLAP)领域 。目前国内社区火热 , 各个大厂纷纷跟进大规模使用 。
电信行业用于存储数据和统计数据使用
我国的中国电信G网数据分析应用采用作为数据存储引擎 , 主要存储网络基站设备数据、监控设备和骨干网等数据 , 这些数据日的增量500亿条左右 , 约700GB 。并进行相应的分析处理 , 最终提供BI应用、数据挖掘等系统使用 。
新浪微博用于用户行为数据记录和分析工作
新浪微博APP监控系统采用作为数据存储引擎 , 使用Kafka存储实时产生的消息 ,  消费数据存储到中 , 然后连接作为可视化工作台 。同时还使用消费Kafka的数据到中 , 然后使用进行问题跟踪和问题排查 。
RTB网络广告
是日本的一家广告公司 , 使用作为其RTB实时竞价服务的数据存储引擎 。
商业智能
今日头条最早使用的是用户行为分析系统 。该系统在使用 之前 , 
(引擎)层已经有两个迭代 。
尝试过Spark全内存方案还有一些其他的方案 , 都存在很多问题 。主要因为产品需要比较强的交互能力 , 页面拖拽的方式能够给分析师展示不同的指标 , 查询模式比较多变 , 并且有一些查询的DSL 描述 , 也不好用现成的SQL去表示 , 这就需要有比较好的定制能力 。