这是我参与「第五届青训营」伴学笔记创作活动的第 15 天
基本概念
数据库概念
数据库是结构化信息或数据的有序集合,一般以电子形式存储在计算机系统中。
比如存储一个用户的信息,可以先整理数据,存储消息到二维表格的一行,每一行都表示一个用户,而每一列代表用户的不同类型的信息。
数据库类型
数据库有关系型数据库和非关系型数据库分类。关系型数据库把数据存储到表,然后建立表之间的关系。非关系型数据库没有固定的表结构,数据不存在表之间的关系。
数据库也有单机和分布式的分类。单机数据库是运行在一台计算机的存储系统,分布式数据库是同时运行和存储在多台计算机上的系统。
OLAP数据库
OLAP数据库支持大量数据的读写,PB级的存储。支持多维分析,复杂的聚合函数。窗口函数,离线和实时分析。
SQL
SQL是一种编程语言,可以使用SQL在关系型数据库中执行操作。
SQL查询包含SELECT关键字,星号指定查询所有字段。
存储引擎
存储引擎要完成管理内存数据结构。包括索引,内存数据,缓存。
存储引擎要完成管理磁盘数据的任务。管理数据的文件格式,和磁盘数据的增删改查。
列式存储
行式存储和列式存储
行式存储以行为单位存储数据。
列式存储以列为单位存储,每一列的数据类型相同。
优点
可以进行数据压缩,在IO密集型计算中有优势。
延迟物化,对内存缓存和CPU友好。
支持向量化计算,使用SSE和AVX系列指令集进行加速。
ClickHouse设计
结构
分布式表,不存储数据,用于查询路由到集群的各个节点。
本地表是实际存储数据的表。
查询优化
建一个物化视图,使用Projection。
应用场景
大宽表查询
大宽表可以建非常多的列,可以增加、删除、清空每一列的数据,引擎可以快速选择需要的列,可以将过滤条件下推到存储层加速查询。
离线数据分析
数据导入。数据通过spark生成clickhouse格式文件,导入到hdfs,数据直接导入到各个物理节点。
数据按列导入,保证查询可以及时访问已有数据,按需加载需要的列。