- 1980 年代:商业 RDBMS
- 1990 年代:开源 RDBMS
- 2000 互联网
- 谷歌三驾马车开启大数据时代
- GFS
- Bigtable
- Mapreduce
- NoSQL
- Hadoop
- Redis
- MongoDB
- 谷歌三驾马车开启大数据时代
- 2010 移动互联网:NewSQL(集成分布式技术 + 关系模型)
- Spanner
- TiDB
- 2020 云计算时代:HTAP
- TiDB
- 数据存储量
- 吞吐量
- 读写 QPS
- 单节点
- 共享状态 (Scale up)
- 分布式 (Scale out)
- 查询语言
- 计算模型
- 数据模型
- 读写延时
- 标准 SQL 语言
- 支持 ACID 事务 (OLTP, On-Line Transaction Processing)
- 结构化存储
- NoSQL (Not Only SQL)
- 非结构化数据
- Key-value
- 文本
- 图
- 时序数据
- 地理信息
- 缺点:不支持事务
- 非结构化数据
- NewSQL
- 兼容数据模型的可扩展需求
- 支持 ACID 事务
- HTAP (HybridTransactional/Analytical Processing)
- 读写分离
- 一体机
- 云原生
- 内在原因:如果一个系统需承载的计算量增长速度大于摩尔定律的预测,集中式系统将无法承载这个系统所需的计算量。
- 经济原因:使用相对廉价的机器组合形成的分布式系统,除了可以获得超过 CPU 发展速度的性能外,还可以按需弹性伸缩。
2006 年,谷歌推出了大数据三驾马车:
- GFS (Google File System): 解决了分布式文件系统问题;
- Google Bigtable: 解决了分布式 Key-Value 存储的问题;
- Google MapReduce: 解决了分布式文件系统和分布式 KV 存储上进行分布式计算和分析的问题。
- 如何最大程度地实现分治
- 如何实现全局一致性
- 如何进行部分故障与失效的容错
- 如何应对不可靠的网络和网络分区
分布式系统的不可能三角:
- 一致性 Consistency(强调各个数据副本的一致性)
- 可用性 Availability
- 分区容忍性 Partition Tolerance
事务具有 ACID 特性:
- Atomicity 原子性:事务包含的全部操作是一个不可分割的整体
- Consistency 一致性:事务的前后所有相关数据状态一致(强调事务的一致性)
- Isolation 隔离性:用来规定多个事务访问同一个数据资源时对该数据资源的操作行为
- Durability 持久性:事务一旦完成,数据的变更需要记录下来
NewSQL 是一类关系数据库,它寻求为在线交易处理 (OLTP, OnLine Transaction Processing) 工作提供 NoSQL 系统的可扩展性,同时维护传统数据库系统的 ACID 保证。即:
分布式系统 + SQL + 事务 = 原生分布式关系型数据库