栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

简单剖析OLAP异域猛兽——ClickHouse设计思路

简单剖析OLAP异域猛兽——ClickHouse设计思路

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

异域是因为它来自俄罗斯,Yandex 公司,这家公司是俄罗斯本土搜索引擎企业,原本是为了分析自家的 Web 流量而开发的一款产品 ,后来经过演变,逐渐形成为现在的 ClickHouse,全称是:Click Stream,Data WareHouse 

ClickHouse 官网

它具有 ROLAP、在线实时查询、完整的 DBMS 功能支持、列式存储、不需要任何数据预处理、支持批量更新、拥有非常完善的 SQL 支持和函数、支持高可用、不依赖 Hadoop 复杂生态、开箱即用等许多特点。


今天我们来剖析ClickHouse 设计思路

先看看这下面的2个SQL

-- 场景1 根据键key找到值
select name from table where id = 1

-- 场景2 统计平均金额
select city,avg(amount) from table group by city

对于上面这两种场景,

数据量不大,而且又是结构化数据,可以用MySQL存储和分析

数据量大的话,对于场景1来说可以使用Hbase来解决。

但是大数据量情况下场景2需求特别多,那么需要设计一个专门用来做分析的存储计算引擎解决分

析的低效率问题。


海量数据中,如果能够快速的把待搜寻的数据范围降低到原来的1/n,然后在结合索引或者热点数

据放在内存等思想,就能实现高效率的查询了

那么一个专门用来做 OLAP 分析的存储引擎该如何设计呢?如何在海量数据中,针对大量数据进

行查询分析呢?一些常见的方案和手段如下:

1、列式存储+字段类型统一

2、列裁剪

3、数据排序

4、数据分区分片+ 分布式查询

5、预聚合

6、利用CPU特性:向量化引擎,

7、构建多种不同索引:主键索引+二级索引+位图索引+布隆索引

8、支持近似计算 pv

9、定制引擎:多样化的存储引擎满足不同场景的特定需要

10、多样化算法选择

具体设计思路:单挑记录的增删改等操作,通过数据的横向划分,做到数据操作的快速定位

在海量的数据查询分析中,一般就是针对某些列做分析既然并不是全部列,

那么把数据做纵向切分把表的数据按照列的单独存储,那么在做分析的时候,同样可以快速把待查

询分析的数据总理降低到原来的1/n


说到OLAP,Kylin也是适合于OLAP场景的一个分布式分析引擎, Kylin 把预聚合发挥到极致,但是它的缺点:

  • 只支持固定的分析场景,无法满足自定义分析场景
  • 维度组合爆炸会导致数据膨胀
  • 增量数据 ,预聚合不能进行数据更,所以会产生大量的重算

ClickHouse优点

  • 1.非常快的扫描,可用于实时查询
  • 2.在多个服务器上分布式处理
  • 3.并行处理单个查询(利用多核)
  • 4.列存储非常适用于“宽”/“非规格化”表(多列)
  • 5.SQL支持(有限的支持)
  • 6.良好的压缩特性
  • 7.不同的存储引擎的支持(磁盘存储格式)
  • 8.一系列函数的支持,包括对近似计算的支持
  • 9.非常适合结构性日志/事件数据以及时间序列数据(引擎的合并树需要日期字段)
  • 10. 索引支持(仅主键支持,不是所有的存储引擎都支持)
  • 11.漂亮的命令行界面,用户友好的进度条和格式

当然ClickHouse 也并不完美,比如

  1. 没有完整的事务支持
  2. 稀疏索引,不擅长细粒度查询
  3. 不擅长高频率,低延迟修改或者删除数据
  4. 不擅长join操作

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344654.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号