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

它们的共同特点:

  1. 用起来和 MySQL 差不多(SQL、事务都有)
  2. 数据自动分片,不用你手动分库分表
  3. 加机器就能扩容,十年亿级数据不担心
  4. 三副本高可用,一台坏了自动修

简单理解:NewSQL = 会自动分片、能无限扩容、还不丢数据的 MySQL

阅读剩余
THE END