NewSQL 属于分布式关系数据库,但不是所有分布式关系数据库都叫 NewSQL
NewSQL 是 **「原生分布式 + 强一致事务 + 标准 SQL」** 的新一代关系数据库,是分布式关系数据库里的 "优等生"。
一、NewSQL 的三个硬性标准(缺一不可)
1. 关系型内核
- 支持标准 SQL、表、主键、索引、JOIN、视图
- 支持 ACID 事务,强一致
- 简单说:和 MySQL/Oracle 用法一样,该有的都有
2. 原生分布式架构
- 数据自动分片打散到多台机器,不是靠中间件路由
- 水平扩容:加机器就能提升性能和容量
- 内置高可用:副本、自动故障转移
3. 不牺牲事务一致性
- 很多分布式数据库为了性能,放弃了强事务,变成 "最终一致"
- NewSQL 坚持分布式强一致事务,跨节点也能保证数据不丢、不错
二、分布式关系数据库 ≠ NewSQL,这几类就不算
1. 中间件分片方案(MyCat、ShardingSphere)
❌ 不是 NewSQL
- 本质:一堆单机 MySQL + 一个中间件做路由
- 分片规则要你自己写,跨库事务、跨库 JOIN 都有问题
- 相当于 "人工拼装的分布式",不是原生的
2. 读写分离集群(MySQL 主从)
❌ 不是 NewSQL
- 只是主库写、从库读,数据还是一份
- 容量上限还是单机,不能水平扩展
- 本质还是单机数据库,只是做了读扩展
3. 共享存储分布式(普通 PolarDB、Aurora)
❌ 不算标准 NewSQL
- 计算节点可以扩展,但底层存储只有一份
- 写入能力还是有上限,不是真正的 "数据分布式"
- 属于 "云原生数据库",不是典型 NewSQL
4. NoSQL 数据库(MongoDB、Cassandra)
❌ 完全不是一类
- 不支持标准 SQL、不支持强事务
- 是非关系数据库,和 NewSQL 是两条路线
三、一张图看懂关系
plaintext
关系数据库
├── 单机关系数据库(MySQL、Oracle、PostgreSQL、SQL Server)
└── 分布式关系数据库
├── 中间件分片(MyCat、ShardingSphere)← 不是NewSQL
├── 共享存储(PolarDB MySQL版、Aurora)← 不是典型NewSQL
└── 原生分布式强一致 ← 这就是 NewSQL
├── TiDB
├── OceanBase
├── CockroachDB
├── YugabyteDB
├── Google Spanner
└── PolarDB-X
四、为什么叫 NewSQL?新在哪里?
传统关系数据库(OldSQL)的痛点:
- 单机容量有上限,数据多了装不下
- 单机性能有上限,并发高了扛不住
- 要扩容只能换更好的机器(垂直扩展),贵且有天花板
NewSQL 的突破:
- 数据自动打散到多台机器,容量无限扩展(水平扩展)
- 多台机器并行处理,性能随机器数量线性提升
- 关键:分布式下还能保持强一致事务,这是以前做不到的
五、结合你的 MES 场景一句话总结
你之前看的 TiDB、OceanBase、CockroachDB、PolarDB-X,都是标准的 NewSQL。
它们的共同特点:
- 用起来和 MySQL 差不多(SQL、事务都有)
- 数据自动分片,不用你手动分库分表
- 加机器就能扩容,十年亿级数据不担心
- 三副本高可用,一台坏了自动修
简单理解:NewSQL = 会自动分片、能无限扩容、还不丢数据的 MySQL
阅读剩余
THE END