Scott's Blog

学则不固, 知则不惑

0%

设计数据密集型应用-数据系统 P2

「设计数据密集型应用」书中第三、四章内容的思维导图。包括:存储与检索、编码数据等内容。

3. 存储与检索

驱动数据库的数据结构

驱动数据库的数据结构

散列索引

以类 CSV 格式存储键值对的日志,并使用内存散列映射进行索引

SSTable

驱动数据库的数据结构
键值更新日志压缩
同时执行压缩和分段合并

SSTable 的优势

  1. 即使文件大于可用内存,合并段的操作仍然是简单而高效的。
  2. 为了在文件中找到一个特定的键,你不再需要在内存中保存所有键的索引。
  3. 由于读取请求无论如何都需要扫描所请求范围内的多个键值对,因此可以将这些记录分组为块(block),并在将其写入硬盘之前对其进行压缩

3.2 事务处理还是存储分析

事务处理分析

OLAP vs OLTP

属性 事务处理系统 OLTP 分析系统 OLAP
主要读取模式 查询少量记录,按键读取 在大批量记录上聚合
主要写入模式 随机访问,写入要求低延时 批量导入(ETL)或者事件流
主要用户 终端用户,通过 Web 应用 内部数据分析师,用于决策支持
处理的数据 数据的最新状态(当前时间点) 随时间推移的历史事件
数据集尺寸 GB ~ TB TB ~ PB

数据仓库

OLTP 系统往往对业务运作至关重要,因而通常会要求 高可用 与 低延迟。所以 DBA 会密切关注他们的 OLTP 数据库,他们通常不愿意让业务分析人员在 OLTP 数据库上运行临时的分析查询,因为这些查询通常开销巨大,会扫描大部分数据集,这会损害同时在执行的事务的性能。

从 OLTP 数据库中提取数据(使用定期的数据转储或连续的更新流),转换成适合分析的模式,清理并加载到数据仓库中。将数据存入仓库的过程称为 “抽取 - 转换 - 加载(ETL)”。

事务处理分析-数据仓库

列式存储

列式存储

4. 编码与演化

编码数据的格式

编码与演化-格式1
编码与演化-格式2
编码与演化-模式

数据流的类型

数据流