引言

NewSQL数据库试图打破"NoSQL放弃一致性"与"SQL难以扩展"的二元对立。Google Spanner的发布(2012年)开启了NewSQL时代,自此CockroachDB、TiDB、YugabyteDB等产品相继涌现。本文深入分析NewSQL的核心技术:分布式事务、一致性模型、存储引擎设计,以及云原生时代的架构演进。

CAP定理与真实世界的权衡

CAP理论指出,分布式系统无法同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)。NewSQL数据库的核心挑战在于:在网络分区不可避免的前提下,如何在C与A之间做出工程化的权衡。

不同系统的选择:

  • Spanner/CockroachDB:强一致性(外部一致性),牺牲部分可用性换取正确性
  • Cassandra/DynamoDB:最终一致性,优先保证可用性和分区容态
  • TiDB:强一致性(Raft),提供乐观/悲观事务两种模式

分布式事务的实现

两阶段提交(2PC)

2PC是经典的分布式事务协议,包含准备阶段(Prepare)和提交阶段(Commit)。NewSQL系统通常将2PC与共识算法结合:

  • 协调者(Coordinator)向所有参与者发送Prepare请求
  • 参与者执行事务但不提交,将redo/undo日志持久化
  • 所有参与者确认后,协调者发送Commit
  • 任一参与者失败,则发送Rollback

2PC的阻塞问题(协调者单点)通过共识算法(Raft/Paxos)解决,将协调者状态复制到多数派节点。

Percolator模型(Google Spanner)

Spanner使用Percolator模型实现跨行跨表事务:

  • 选择主锁(Primary Lock)作为事务的同步点
  • 预写(Prewrite阶段):写入mutations和主锁
  • 提交(Commit阶段):提交主锁,异步清理其他锁
  • 使用TrueTime API保证外部一致性(Linearizability)

共识算法:Raft与Multi-Paxos

NewSQL数据库广泛采用共识算法保证数据一致性:

  • Raft:更易理解的共识算法,TiKV/CockroachDB采用。Leader选举、日志复制、安全性三大核心机制
  • Multi-Paxos:Spanner中的变体,优化多提案场景的吞吐量
  • 优化技术:Pipeline复制、Learner节点(只读副本)、Lease Read(Leader本地读取)

存储引擎设计

LSM树(Log-Structured Merge-Tree)是NewSQL的主流存储引擎选择:

  • 写入路径:MemTable → WAL → SSTable(多层压缩)
  • 读取路径:MemTable → Immutable MemTable → L0 SSTable → Ln SSTable
  • 压缩策略:Size-Tiered(写优化)vs Leveled(读优化)vs Tiered(混合)
  • 布隆过滤器:加速SSTable查找,减少无效IO

TiKV使用RocksDB作为存储引擎,CockroachDB使用Pebble(RocksDB的Go语言fork)。

多云与地理分区

云原生NewSQL的一个重要趋势是多云部署和地理分区(Geo-Partitioning):

  • 分区表(Partitioned Tables):将数据按地理位置划分,减少跨区域流量
  • 跟随读(Follower Read):在副本上执行读操作,降低主节点压力
  • 位置感知放置(Location-Aware Placement):根据合规要求将数据固定在特定区域
  • 多云一致性:跨AWS/GCP/Azure的事务一致性保证

HTAP:混合事务分析处理

TiDB等系统通过存储与计算的分离实现HTAP能力:

  • 行存(TiKV):处理OLTP(高并发短事务)
  • 列存(TiFlash):处理OLAP(复杂分析查询)
  • Raft Learner协议:行存到列存的实时数据同步
  • 智能路由优化器:根据查询特征自动选择行存或列存

未来展望

NewSQL正朝着Serverless化、AI原生化的方向演进。Serverless NewSQL(如CockroachDB Serverless、TiDB Cloud)将按使用量付费,进一步降低使用门槛。同时,AI优化器、向量搜索集成、以及存算分离架构的成熟,将推动NewSQL成为云时代的数据底座。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部