背景¶
现在主流的数据存储与检索引擎可以大致分为两种:OLTP和OLAP.
OLTP指的是online transaction processing.
OLAP指的是online analysis processing.
维度 | OLTP | OLAP |
---|---|---|
设计思路 | 面向行 | 面向列 |
系统功能 | 日常交易数据/在线事务处理 | 统计\分析\报表/在线分析处理 |
设计目标 | 面向试试交易类应用 | 面向统计分析类应用 |
数据处理 | 当前的,最新的 | 历史的,聚集的 |
实时性 | 实时性读写要求高 | 实时性读写要求低 |
事务 | 强事务 | 弱事务 |
分析要求 | 低,简单 | 高,复杂 |
OLAP主要应用在hive,spark,hbase等.本文重点研究OLTP,并将侧重点放在面向页(b+ tree)的存储引擎以及日志结构(lsm tree)的存储引擎.
为什么选择B+树作为基于页的存储引擎¶
现状分析¶
- 读多写少的场景居多
- 数据按行组织
- 需要存储的数据量级增加到千万级量级
- 存储时选择的存储介质需要满足成本较低\容量较大的特点
磁盘IO VS 内存IO¶
磁盘访问时间=寻道时间+旋转时间+传输时间:
- 寻道时间: 8ms-12ms
- 旋转时间: 7200转/min:半周 4ms
- 传输时间: 50M/s,约0.3ms
磁盘随机IO<<磁盘顺序IO≈内存随机IO<<内存顺序IO