ClickHouse笔记(四) | 青训营笔记

76 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第16天

相关笔记ClickHouse笔记(一) | 青训营笔记

相关笔记ClickHouse笔记(二) | 青训营笔记

相关笔记ClickHouse笔记(三) | 青训营笔记

一、本文内容:

  1. 数据库基本概念

  2. 列式存储

  3. ClickHouse存储设计

  4. ClickHouse典型应用场景

二、详细介绍

ClickHouse的典型使用场景

大宽表存储和查询

  1. 动态表结构

  1. map中的每个key都是一列
  2. map中的每一列都可以单独的查询
  3. 使用方式同普通列,可以做任何计算
  1. 大宽表查询

可以建非常多的列查询的时候引擎可以快速选择需要的列,查询的时候引擎可以快速选择需要的列

离线数据分析

  1. 数据导入

数据可以通过spark生成clickhouse格式的文件

导入到hdfs上由hive2ch导入工具完成数据导入

数据直接导入到各个物理节点

  1. 数据按列导入

保证查询可以及时访问已有数据

可以按需加载需要的列

实时数据分析

  1. 数据可以被立刻查询
  2. 使用memory table减少parts数量
  • 数据先缓存在内存中
  • 到达一定阈值再写到磁盘

复杂类型查询

  1. bitmap索引
  • 构建

  • 查询

  1. bitmap64类型

select countDistinct(uid)

from user_detial

where tag_id = 'a' and uid in

(

select uid from user_detail

wherer tag_id = 'b'

)

  1. lowcardinality
  • 对于低基数列使用字典编码
  • 减少数据存储和读写的IO使用
  • 可以做运行时的压缩数据过滤

思考

  1. 列存和行存的差别是什么,使用场景有什么不同

  2. 列存的优点有哪些

  3. 列存的缺点有哪些

  4. 列存适合什么样的索引

  5. ClickHouse的列存是什么样的存储架构

  6. ClickHouse的索引是怎么设计的

  7. ClickHouse的查询是怎么使用索引的

本文如有不足之处,欢迎大家指出