Day18 ClickHouse | 青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第 18 天
var code = "539f3c13-f00e-4f8b-a9f3-1482bdbceaa5"
数据库的类型
根据模型分类
- 关系型数据库:关系型数据库是把数据以表的形式进行存储,然后在各个表之间建立关系,通过这些表之间的关系来操作不同表之间的数据
- 非关系型数据库:NoSql或非关系数据库,支持存储和操作非结构化数据及半结构化数据。相比于关系型数据库,NoSQL没有固定的表结构,且数据之间不存在表与表之间的关系,数据之间是可以独立的
根据架构分类
- 单机数据库:在一台计算机上完成数据的存储和查询的数据库系统。""
- 分布式数据库∶分布式数据库由位于不同站点的两个或多个文件组成。数据库可以存储在多台计算机上,位于同一个物理位置,或分散在不同的网络上。
根据使用场景分类
- OLTP数据库:OLTP(Online transactional processing)数据库是一种高速分析数据库,专为多个用户执行大量事务而设计。
- OLAP数据库:OLAP (Online analytical processing)数据库旨在同时分析多个数据维度,帮助团队更好地理解其数据中的复杂关系
OLAP数据库的使用场景:
- 大量数据的读写,PB级别的存储
- 多维分析,复杂的聚合函数
- 窗口函数,自定义IUDF
- 离线/实时分析
列式存储的优点
数据压缩
-
数据压缩可以使读的数据量更少,在IO密集型计算中获得更大的性能优势
-
相同类型压缩效率更高
-
排序之后压缩效率更高
-
可以针对不同类型使用不同的压缩算法
数据选择:
-
可以选择特定的列做计算而不是读所有列
-
对聚合计算友好
延迟物化: 尽可能推迟物化操作的发生
- 缓存友好
- CPU/内存带宽友好
- 可以利用到执行计划和算子的优化,例如filter
- 保留直接在压缩列做计算的机会
行存 | 列存 | |
---|---|---|
优点 | 数据被保存在一起 | 1. 查询时只有涉及到的列会被读取 2. 投影高效 3. 任何列都能作为索引 4.便于做延迟物化和向量化计算 5. 压缩效率高,每一列可以使用不同的压缩算法 |
缺点 | select时即使只涉及某几列,所有数据也会被读取 | 1. select完成时,被选择的列需要重新组装 2. 插入修改麻烦 3. 点查询不适合 |
适用场景 | 1. 点查询(但会记录少,基于索引的简单查询) 2. 增删改操作较多的场景 | 1. 统计分析类查询(OLAP,数仓) 2. 即时查询 |
本文作者:七つ一旋桜
本文链接:https://www.cnblogs.com/poifa/p/17716913.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步