◈ DB 选型参考
← 返回首页

YugabyteDB

关系型 OLTP #分布式 #PostgreSQL兼容 #多地域 #强一致 #Raft #Apache2 #NewSQL #水平扩展

美国 Yugabyte 公司的分布式 SQL 数据库:把 PostgreSQL 的查询层(C 代码)直接搬到自研的 DocDB 分布式存储(per-tablet Raft + RocksDB)之上,"PG 方言、水平扩展、多地域"是它的三张牌;2019 年起核心 100% Apache 2.0,与 2026 年源码转私有的 CockroachDB 形成许可证上的硬分水岭。

用 AI 深挖这款:
证据等级:官方文档 厂商口径 社区实测 社区共识 待验证

基本信息

项内容
厂商Yugabyte, Inc.(2016 年 2 月创立,总部美国加州 Sunnyvale)
国家美国
首次发布2016(1.0 GA 确切版本待验证)
许可证核心数据库 100% Apache 2.0(2019-07-16 官方博客宣布,原企业版功能全部并入开源);YugabyteDB Anywhere(运维管控面)为 Polyform Free Trial(source-available,非 OSI 开源)
托管服务YugabyteDB Aeon(2024-06-24 由 "YugabyteDB Managed" 更名而来;分 Sandbox 免费层与 Dedicated 按 vCPU/存储计费)
主类型分布式关系型(Distributed SQL)
兼具类型YCQL(Cassandra 兼容 API)、MongoDB API(2025-07 新增,multi-modal 方向)、向量检索(pgvector EA)
一致性模型CP 强一致(官方口径)
复制协议per-tablet Raft + Hybrid Logical Clock(HLC)+ MVCC
版本命名2024.1 起主线改用日历年版本(2024.x / 2025.x / 2026.x),STS(短期支持)/ LTS(长期支持)双轨制;下个 LTS v2026.2 计划 2026 年底发布厂商口径

硬维度(47 项)

1 静态加密 / TDE 有

有官方文档。信封加密——每文件唯一 DEK 加密数据,universe key 加密 DEK;OSS 自建版用 openssl rand 生成密钥经 yb-admin 启用,密钥只驻内存不落盘,新 flush/compaction 生效、老数据后台逐步重写加密;Anywhere 增加主密钥层(CMK),支持 AWS KMS / GCP KMS / Azure Key Vault / HashiCorp Vault,支持密钥轮换。YSQL 与 YCQL 无差异(加密在 DocDB 存储层)。WAL 是否独立加密官方文档未明确——待验证。

2 TLS / 传输加密 有

有官方文档。分 Node-to-Node TLS 与 Client-to-Node TLS(YSQL/YCQL);默认关闭,开启/关闭需全节点重启(有短暂停机);Anywhere 支持自签 CA / 上传 CA / Vault PKI / K8s cert-manager,到期前 30 天告警、可轮换。

3 审计 有

有官方文档。YSQL 用 pgaudit v1.7(CREATE EXTENSION pgaudit 预置,YBA v2025.2 起支持审计日志集中导出 GA);YCQL 有原生审计(--ycql_enable_audit_log,v2.4+,分类 QUERY/DML/DDL/DCL/AUTH/PREPARE/ERROR/OTHER);慢查询 pg_stat_statements 预置默认启用 + log_min_duration_statement。(pgaudit 首次引入的精确版本号待验证)

4 认证与权限 有

有(官方文档 + 社区共识)。YSQL 复用 PG role-based 模型(CREATE ROLE / GRANT / REVOKE),ysql_hba_conf_csv 配 hba;认证:password(md5)、SCRAM-SHA-256(v2.5+)、LDAP(v2.4+)、客户端证书;单节点默认安装认证关闭,需 ysql_enable_auth=true 显式开启(易踩坑);YCQL 用 Cassandra 风格角色权限,v2026.1 新增 OIDC/JWT(YSQL 侧 OIDC 未找到证据——待验证)。

5 备份恢复 有

有官方文档。底层 yb-admin create_snapshot(可表级快照)+ restore_snapshot(官方称低级命令,多数用户应走 UI);Anywhere 调度备份:全量 + 增量(v2.16+)、PITR(v2.18+,按数据库/keyspace 设保留窗口);恢复粒度为数据库/keyspace 级;恢复速度无官方性能口径——查证为无;xCluster 注意:升级前必须禁用 PITR,升级后 PITR 无法回滚到升级前时间点;K8s Operator 下 PITR 暂不支持执行恢复(官方 skills 注明 limitation)。

6 可观测性 有(官方工具链完整)

有(官方工具链完整)(官方文档 + 社区实测)。Anywhere UI(指标/告警/慢查询/Live Queries);Master UI :7000、TServer :9000(另有 YSQL :13000、YCQL :12000)均暴露 /prometheus-metrics,YBA 内置 Prometheus + Grafana;SQL 层 pg_stat_statements 默认启用、官方开源 ybtop(ASH/top SQL 可视化)、yb_stats 及 pg_stat_* 视图;Perf Advisor(Aeon tech preview → 2026.1 演进)。

7 连接模型 有(继承 PG 模型 + 官方方案)

有(继承 PG 模型 + 官方方案)(官方文档 + 社区共识)。YSQL 沿用 PG"每连接一后端进程"(厂商博客自述),但连接可分散到所有节点,单节点压力低于单机 PG;Smart Drivers(JDBC/Go/Node/Python 等,官方维护的 PG 驱动分叉,Apache 2.0):感知拓扑,多 host URL + load_balance=true 自动打散连接、跳过故障节点、topology_keys 就近路由;YSQL Connection Manager(内置服务端连接池,基于 Odyssey,监听 5433):数千客户端连接多路复用到少量后端连接,支持 SET/临时表/预编译,2026.1 官方明确称"无需外部 PgBouncer";默认支持 1 万客户端连接(社区经验口径约每 vCPU 10–15 后端连接,官方硬上限未找到——待验证)。

8 事务与隔离级别 有

有官方文档。YSQL 支持 SERIALIZABLE、REPEATABLE READ(映射为 Snapshot 隔离,不是缺失)、READ COMMITTED(v2025.2 起新集群默认真启用;旧版本需 flag 否则回退为 Snapshot);分布式事务:写先以 provisional records(意向记录)落各参与 tablet,协调者把提交时间戳写入去中心化事务状态表后再转为正式 MVCC 版本(Percolator 风格,非经典 2PC);死锁:fail-on-conflict / wait-on-conflict + 后台分布式死锁检测自动中止(不是 wait-die);单行/单 shard 事务走优化路径(不写事务状态表,一次网络往返完成 Raft 提交)。

9 复制与一致性 有

有官方文档。每 tablet 独立 Raft 组,写经 leader 复制到多数派后确认;HLC(物理时钟微秒 + 逻辑计数器)生成时间戳,MVCC 多版本存储;单 tablet 读走 leader 可达线性一致(leader lease 防脑裂),读默认强一致、可调 follower 读;跨分片事务按 HLC 快照时间戳读,提供 Snapshot/Serializable 全局一致性。

10 扩展方式 有(在线)

有(在线)官方文档 社区共识。加节点:在线不停服(官方 FAQ 口径),tablet 由负载均衡器自动迁移均衡;缩容:在线(YBA Remove Node / yb-admin decommission),数据迁出后节点退出;tablet 自动分裂:2.18 起默认开启,达尺寸阈值自动在线分裂(低阶段默认 128MiB 起三阶段递增),也可手动 split_tablet 或建表 SPLIT INTO;扩容时后台迁移副本+重选 leader,无停服但有额外 IO/网络与短暂热点。

11 兼容性 部分支持

部分支持官方文档。YSQL:v2025.1 起 PG 分叉从 11.2 rebase 到 PG 15(v2025.2 LTS / v2026.x 沿用;官方称目标约每六个月跟进一个 PG 大版本——厂商口径);扩展:pg_trgm、pgcrypto 预置,pg_cron、pg_partman、HypoPG、pgaudit、Orafce、pgvector(EA)、DocumentDB(MongoDB 协议,TP)等;PostGIS:查证为无(官方已明确移除支持,历史 1.x/2.x 曾可手动安装);YCQL:兼容 CQL v3.4,部分支持(不支持多数表级属性,但强一致、原生 JSONB、分布式事务、全局二级索引);驱动/ORM:官方 smart drivers(JDBC/pgx/psycopg/Node/Npgsql/C#/Rust/Ruby,集群感知负载均衡),Hibernate/Django/SQLAlchemy 有官方适配文档。

12 许可证与商业模式 有(开源核心 + 商业运维层)

有(开源核心 + 商业运维层)(官方文档 + 仓库 LICENSE.md)。核心数据库 100% Apache 2.0、无功能阉割(自 2019-07 起数据库层面无企业专有功能——查证);差异仅在运维层:Anywhere 自管平台需商业许可(Polyform Free Trial,32 天评估);托管 Aeon:Sandbox 免费(单节点最多 2 vCPU)、Dedicated 按 vCPU/存储 pay-as-you-go 或订阅(具体单价以官网 pricing 页为准)。

13 中文资料丰富度 部分支持(弱)

部分支持(弱)。官方中文文档:查证为无(docs.yugabyte.com 仅英文);中文社区/博客:未找到活跃证据——仅零散中文博客/CSDN 对比文章与个人中文笔记,无成规模中文社区或官方中文社群。

14 性能与延迟特征 有

有(延迟特征与 CRDB 同类;双 API 路径)。

  • YSQL(PG 兼容)分布式事务延迟高于单机 PG;YCQL(Cassandra 协议)路径延迟更低 社区共识。
  • 读可调 follower reads / 表级 follower 读取降延迟 官方文档。
  • 跨区部署的延迟主要由 Raft 复制距离决定,选型前按拓扑实测 社区共识。

15 合规与认证 有

有(SOC2 Type II;国际合规为主)。

  • Yugabyte 公开 SOC2 Type II厂商口径厂商口径。
  • 无中国区服务/信创名录信息 待验证。
  • 自托管版合规责任在部署方 社区共识。

16 成熟度与社区生态 有

有(2016 年成立;2024 年转 Apache 2.0)。

  • 2016 年成立,2017 年开源;2024 年将核心转回 Apache 2.0 许可证 官方文档。
  • GitHub stars 万级;Yugabyte Inc 持续投入 社区共识。
  • 许可证回摆是加分项,但社区规模仍小于 CRDB/TiDB 社区共识。

17 标杆用户 有

有(以厂商口径案例为主)。

  • Kroger 等零售/企业案例厂商口径厂商口径。
  • 公开互联网大厂案例少于 Cassandra/CRDB 社区共识。
  • YCQL 兼容 Cassandra 的迁移案例是特色 社区共识。

18 生态工具链 有

有(yb-voyager 迁移;CDC streams)。

  • 迁移:yb-voyager(Oracle/MySQL/PG/Cassandra→YB)官方文档。
  • CDC:CDC streams(gRPC/Kafka)官方文档。
  • 备份:分布式快照内置 官方文档。

19 云托管与 Serverless 有

有(YugabyteDB Managed)。

  • YugabyteDB Managed(云托管,AWS/GCP/Azure)官方文档。
  • 2024 年转 Apache 2.0 后,自建与云无许可顾虑 官方文档。
  • 托管规模声量小于 CRDB Cloud 社区共识。

20 数据接入与摄入 有

有(YSQL 用 COPY/PG 工具;yb-voyager 迁移)。

  • YSQL(PG 兼容):COPY、pg_dump/pg_restore 可用 官方文档。
  • 大批量用多连接并行 COPY;yb-voyager 是官方迁移工具 官方文档。
  • YCQL(Cassandra 兼容):可用 cassandra-loader 类工具 待验证。

21 外部数据访问 部分支持

部分支持(YSQL 有 postgres_fdw;YCQL 无)。

  • YSQL(PG 兼容)可用 postgres_fdw 官方文档。
  • YCQL(Cassandra 兼容)无外部表 社区共识。

22 CDC 与下游同步 有

有(CDC Streams;Debezium YugabyteDB 连接器)。

  • YugabyteDB CDC(WAL 式)+ gRPC 流 官方文档。
  • Debezium 有官方 YugabyteDB 连接器 官方文档。
  • YCQL 侧 CDC 覆盖弱于 YSQL 社区共识。

23 TTL 与数据生命周期管理 有

有(YCQL/YSQL 表级 TTL)。

  • YCQL 继承 Cassandra 语义:USING TTL / default_time_to_live 官方文档。
  • YSQL 也支持表级 TTL 属性,过期后台清理 官方文档。
  • 墓碑与 compaction 行为同 Cassandra 系,需同样运维 社区共识。

24 在线 DDL 与 Schema 演进 部分支持

部分支持(在线索引回填与改列类型在线;改分布键未找到证据;分阶段验证未找到证据;DDL 默认非事务性)。

  • 只改定义:加列/删列/改默认值只改元数据,在线(官方 safe 操作清单) 官方文档。
  • 重写数据:ALTER COLUMN … TYPE 需全表重写,但分区表、带规则表不支持,CDC 流 / xCluster 下需重写时亦不支持 官方文档;建索引默认在线并发构建(分布式并行回填 + 增量镜像) 官方文档。
  • 搬数据:无显式主键的表加主键走全表重写 官方文档;改已存在主键/分布键官方文档无明确说明(未找到证据)。
  • 验证约束:加约束在线(官方 safe 清单) 官方文档;是否支持 NOT VALID 分阶段验证,官方文档无明确说明(未找到证据)。
  • 规模:重写/回填 O(n),分布式并行仍随数据量与 tablet 数放大 官方文档。
  • 语义:DDL 默认非事务性——事务内 DDL 自治执行,ROLLBACK 不回滚(issue #1404) 官方文档;事务性 DDL 为 Early Access,默认关闭 官方文档;同一库并发 DDL 不支持,冲突报错需应用重试 官方文档;普通 CREATE INDEX 默认在线构建,不可放显式事务块内(issue #6240) 社区共识;schema 经 catalog 版本 + 心跳传播,各节点缓存按错误/重试刷新 官方文档。(依据 v2025.2 LTS 官方文档,2026-10-02 核验)

25 多租户与资源隔离 部分支持

部分支持(逻辑隔离为主;无租户资源组)。

  • 靠多 keyspace/多库逻辑隔离,无租户级 CPU/IO 限流 社区共识。
  • admission control 类能力弱于 TiDB 的 RU 社区共识。

26 跨地域多活 有

有(xCluster/多 region,原生多活)。

  • xCluster 跨集群复制 + 多 region 部署,写多活原生 官方文档。
  • 按表/行级 geo-partition 就近读写 官方文档。
  • 跨区延迟同样进写路径,设计决定体验 社区共识。

27 高可用架构与 RTO/RPO 有

有(Raft 自愈,RTO 秒级)。

  • Raft 多副本自动选主,RTO 秒级,RPO=0 官方文档。
  • 跨区部署下故障域隔离天然 官方文档。

28 行级安全与数据脱敏 未找到证据

未找到证据(RLS支持状态不明,待确认)。

  • YugabyteDB 兼容 PG 语法,但 RLS(CREATE POLICY)在分布式层的支持完整度不明 待验证
  • 列级权限沿用 PG 兼容的 GRANT 官方文档
  • 动态脱敏无公开说明 待验证

29 JSON 与半结构化能力 有

有(YSQL jsonb;YCQL 集合)。

  • YSQL jsonb(PG 兼容),YCQL 集合类型 官方文档。
  • YSQL GIN 索引支持弱于 PG 待验证。

30 全文检索能力 部分支持

部分支持(tsvector 有限,待验证)。

  • YSQL 继承 PG 部分全文能力,tsvector 支持有限 待验证。
  • 生产全文多外挂 ES 社区共识。

31 存储效率与压缩 有

有(DocDB LSM+块压缩,机制完备)。

  • 存储引擎 DocDB 基于 RocksDB 系 LSM,支持块级压缩(Snappy/LZ4/ZSTD 可选)。官方文档
  • 行存与文档混合编码,压缩比取决于 schema 设计,窄表效果更佳。社区实测
  • 多副本与跨地域复制带来存储放大,压缩为主要对冲手段。社区共识

32 开源协议与厂商锁定风险 无

无(Apache 2.0 开源;云版闭源)。

  • YugabyteDB 核心(YB-TServer/YB-Master)采用 Apache 2.0 开源,GitHub 公开。官方文档
  • YugabyteDB Aeon(原 Managed)为闭源托管服务,存在云绑定;自建版功能对等可迁回。厂商口径
  • 无协议变更黑历史,YSQL/YCQL 双 API 降低迁出改造成本。社区共识

33 查询优化器与计划稳定性 有

有(PG 衍生 CBO;分布式下推)。

  • 继承 PG CBO,Yugabyte 增加分布式下推与分区感知 官方文档。
  • hint 随 PG(pg_hint_plan 扩展)社区共识。

34 参数调优与自治能力 部分支持

部分支持(参数可调;YB UI 诊断;自治中等)。

  • 参数可调,YB-Master Admin UI 诊断 官方文档。
  • 自动 tablet 分裂/搬迁部分自治 官方文档。

35 静默数据损坏防护 部分支持

部分支持(DocDB RocksDB 块校验,用户侧无开关)。

  • DocDB 基于 RocksDB,数据块带 checksum,读路径可发现损坏块。待验证
  • Tablet 多副本 + Raft,单副本损坏可被多数派掩盖并自动修复。官方文档
  • 无用户可见的页校验开关或全库校验命令,损坏审计能力有限。社区共识

36 存储过程/触发器/过程语言 有

有(YSQL plpgsql;触发器部分)。

  • YSQL plpgsql 可用,触发器部分支持 官方文档。
  • 分布式下触发器语义注意 待验证。

37 约束与数据完整性 部分支持

部分支持(FK/CHECK 有;分布式代价)。

  • YSQL 外键、CHECK 支持 官方文档。
  • 跨 tablet 外键检查有分布式代价,高吞吐慎用 官方文档。

38 分析 SQL 完备性 有

有(YSQL 窗口函数 PG 兼容)。

  • YSQL 窗口函数、CTE(PG 兼容)官方文档。
  • 复杂分析性能弱于专用 OLAP 社区共识。

39 被遗忘权与数据擦除 部分支持

部分支持(手动DELETE;LSM墓碑残留)。

  • DocDB 为 LSM 存储:删除写墓碑,compaction 前物理残留;分布式多副本放大残留面 社区共识
  • 无原生擦除证明流程 待验证

40 数据血缘与目录集成 无

无(查证为无原生血缘)。

  • 无原生数据血缘 官方文档。

41 存算分离 vs 存算一体 有

有(存算一体:DocDB 本地盘 LSM)。

  • DocDB 本地盘 LSM,存算一体 官方文档。

42 多模能力 部分支持

部分支持(YCQL+YSQL 双 API;pgvector 可用)。

  • YSQL(PG 兼容)支持 jsonb、pgvector 官方文档。
  • YCQL(Cassandra 兼容)宽列 官方文档。

43 FinOps 成本可观测性 不适用

不适用(自建无计费,成本=硬件+运维人力自理)。

  • 开源自建无内置计费概念,成本是节点硬件、存储与运维人力。社区共识
  • YugabyteDB Aeon 托管版按量计费,支持用量视图。厂商口径

44 驱动与多语言生态 有

有(PG+Cassandra 双驱动生态)。

  • YSQL 用 PG 驱动,YCQL 用 Cassandra 驱动 官方文档。
  • 拓扑感知智能驱动是特色 官方文档。

45 物化视图 有

有(YSQL 物化视图手动刷新)。

  • YSQL 物化视图(PG 兼容,手动 REFRESH)官方文档。
  • 无自动增量刷新 社区共识。

46 支持跨云 有

有(开源任意云;YB Cloud 多云)。

  • 开源版任意云可部署 官方文档。
  • YugabyteDB Managed 支持 AWS/GCP/Azure 官方文档。

47 热点数据更新能力 部分支持

部分支持(等待或失败两种策略,热点靠重试扛)。

  • 冲突策略:Wait-on-Conflict(tserver 参数 enable_wait_queues,需滚动重启开启)提供类 PostgreSQL 的等待语义;默认 Fail-on-Conflict 按优先级直接让冲突方失败并返回 kConflict 错误 官方文档。
  • 重试责任:Read Committed 下每条语句前有隐式 savepoint,竞态冲突可语句级透明重启;Serializable 或显式事务的冲突必须由应用层重试 官方文档。
  • 衰减形态:热点行在 tablet leader 处串行;Fail-on-Conflict 下高并发热点意味着高冲突率与高重试率,社区 pgbench 热点测试中重试曾占事务的数十个百分点 社区实测。
  • 内置缓解:未找到官方命名或文档化的热点行机制的证据;缓解主要靠 schema 设计(如 hash sharding)把写入分散到不同 tablet 待验证。
  • 应用层模式:SELECT FOR UPDATE 等待、NOWAIT 或 SKIP LOCKED 快速失败或跳过、更新只写变更列以缩小锁冲突面;代价是应用必须显式处理冲突与重试逻辑 官方文档。

招牌能力

  1. 真正的分布式 PostgreSQL:复用 PG 查询层 C 代码 真本事:YSQL 不是"线协议兼容",而是把 PG 的解析器/优化器/执行器代码直接拿来用,psql、JDBC、多数 ORM 和迁移工具零改造接入,PG DBA 的既有知识(执行计划、pg_stat、调优方法论)大部分可迁移。这是它相对 CockroachDB(自研 Go SQL 层、仅协议兼容)最硬的差异:兼容的"质地"不同。 边缘真相:同一份查询层不等于同一份语义——存储引擎换了,边缘处处是分叉(见深水区四:事务内 DDL、advisory locks、可延迟约束、exclusion 约束、序列行为)。"PG 语法能跑"和"PG 行为一致"是两回事,迁移测试必须按 YSQL 自己的缺口清单重做,不能因为"都是 PG 方言"就借用 PG 的测试结论。
  2. 多地域数据放置的灵活性(geo-partitioning + follower reads + xCluster) 真本事:单集群横跨 AZ/region/云做 Raft 同步复制;geo-partitioning 用表空间把表/分区 pin 到指定地域实现"写本地化";follower reads 让只读走本地副本;xCluster 做双活/容灾的单向异步复制。强一致跨地域这档里完成度最高的选择之一。 边缘真相:同步跨地域写逃不掉光速税(每次提交付一次跨洋 RTT);leader 放错 region 延迟直接翻倍;xCluster 计划外故障切换是手动流程(停应用→pause 复制→PITR 恢复→切连接),RTO 取决于应用切流速度而非数据库;3 地域 × RF 的资源账单很实在。只配了数据库侧高可用、没配应用侧切流,等于只做了一半。
  3. Apache 2.0 核心、无功能阉割(许可证分水岭) 真本事:2019 年 7 月起核心数据库 100% Apache 2.0,备份、加密、读副本、CDC 等原企业功能全部并入开源,数据库层面无商业版专有功能。在 2026 年 CockroachDB 新版本源码转私有的背景下,这是两者当前最硬的分水岭:一个走向更开放,一个走向更封闭。 边缘真相:许可证翻转过不止一次(2019 年前是 CE/EE 双版本),长期主义者对"下次再变"的焦虑是合理的;管控面 Anywhere 是 Polyform(非 OSI 开源),"全栈开源"不成立;Jepsen 正确性测试是厂商付费的厂商口径。选型时按法务口径核实,不要用一方的宣传材料论证另一方。
  4. Smart Drivers + 内置 Connection Manager(给 PG 连接模型的分布式解法) 真本事:官方 smart driver 从集群元数据读拓扑,连接直打各 tserver,load_balance=true + topology_keys 实现免外部 LB、AZ 就近路由、故障时客户端侧重试;YSQL Connection Manager(基于 Odyssey,:5433)把数千客户端连接多路复用到少量后端连接,官方 2026.1 明确称"无需外部 PgBouncer"。这是对"PG 每连接一进程"模型在分布式下被放大的系统性回答。 边缘真相:只在官方 smart driver 生态内生效,普通 PG 驱动/连接池无此能力;社区实战挖出坑:Node 驱动拓扑缓存是类级静态量、换连接池不重置会继承过期拓扑,连接池需手动预热才能铺满全节点,非对等 VPC 下驱动会先探测不可达节点引入延迟。用第三方驱动就等于放弃了这项红利。

深水区

深水区一(存储引擎):DocDB——每 tablet 一个 RocksDB,tablet 数量是先到的天花板

  • 机制:每个 tablet 对应独立 RocksDB 实例(LSM-tree);YSQL 的每个 tablet 实际是两个 RocksDB——regular 存已提交数据、intents 存事务 provisional 记录;tablet 分裂经 Raft 日志 split record 触发,split apply 后旧 tablet 拒绝一切新读写、新 tablet 重新选主才 RUNNING;HLC 时间戳,--max_clock_skew_usec 默认 500000(500ms),官方建议设为预期最大时钟偏差 2 倍;MVCC 历史保留 timestamp_history_retention_interval_sec 默认 15 分钟。
  • 推到边缘:SST 堆积到上限 → DocDB 直接限流写入(可观测指标 majority_sst_files_rejections、rocksdb_stall_micros、intentsdb_rocksdb_stall_micros),写入密集 + IO 吃紧时先到的是这个天花板不是 CPU;tablet 数:官方部署清单给出 8 GiB 节点约 530 个 tablet 副本的经验上限,表多、索引多、RF 高的集群先吃掉内存和管理预算;某节点时钟偏差超 max_clock_skew → 直接 crash 保正确性,NTP 配错不是变慢是丢节点;读落在"不确定窗口"内报 40001 read-restart 要求重试;长查询/长事务跑过保留期 → snapshot_too_old(SQLSTATE 72000),不可重试,重开事务拿新快照是唯一出路;开 PITR 或 CDC before-image 会抬高保留期,lagging 的 CDC stream 让磁盘用量随保留数据线性增长——CDC 消费端的 lag 直接转化为源端磁盘账单。
  • 选型含义:写入型业务必须给 compaction 留磁盘/IO headroom 并监控 stall 指标;NTP 与时钟偏差监控是必选项;报表类长查询要么调大保留期(拿磁盘换)要么在应用层处理 snapshot_too_old;tablet 数量要前置规划(YugabyteDB tablet 只按大小分裂、不自动合并,数量只增不减)。
  • 来源:官方设计文档(tablet 分裂)、官方部署清单(tablet 上限/时钟配置)、第三方监控文档(stall 指标,社区实测)、官方博客(时钟偏差/保留期,厂商口径)

深水区二(事务与时间):分布式事务的税——provisional records、read restart、重试脚手架

  • 机制:多 tablet 写先以 provisional records 落各参与 tablet,协调者把提交时间戳写入去中心化事务状态表后再转为正式 MVCC 版本(Percolator 风格);冲突处理是 fail-on-conflict / wait-on-conflict + 后台分布式死锁检测;单行/单 shard 事务走优化路径(不写事务状态表)。
  • 推到边缘:每次写要等 Raft quorum,单机 PG 亚毫秒写在 YB 上变毫秒级是架构固有(官方 FAQ 承认 trade-off;社区实测三表各插 1 行的 DO 块 465ms,Read Committed 下 801ms);读多 tablet 要等读时间戳在各 tablet 变安全;时钟 skew 接近阈值即触发读重试,NTP 没配好直接表现为毛刺;Serializable 下冲突即 40001,应用必须写重试循环——重试脚手架两边(YB/CRDB)都要写,只是默认隔离级别不同(YSQL 默认 Read Committed)。
  • 选型含义:写延迟敏感(亚毫秒)场景直接出局;应用层必须实现幂等重试;POC 必须用真实事务模型压测,单表点查 benchmark 会严重低估分布式事务成本。
  • 来源:官方架构文档(distributed-txns / concurrency-control / single-row-transactions)、官方 FAQ、社区实测(dev.to)

深水区三(SQL 层):YSQL vs YCQL 双 API——数据孤岛与投入倾斜

  • 机制:YSQL 复用 PG 查询层(v2025.1 起 rebase 到 PG 15),线协议兼容;YCQL 兼容 Cassandra CQL v3.4;两套 API 数据面完全隔离,一边写入另一边不可见(官方连 YSQL 经 FDW 读 YCQL 都只列在 roadmap issue #830)。
  • 推到边缘:官方未宣布废弃 YCQL(未找到 deprecation 表态——待验证),但投入倾斜信号是实的:gRPC CDC 不支持 YCQL 表(issue #11320);新集群默认内存配置为 YSQL 优化;2025 年 7 月官方新增的是 MongoDB API(与 YSQL/YCQL 并列 "multi-modal");官方 FAQ 给 YCQL 的定位很窄:不需要 FK/JOIN、要亚毫秒单行延迟、要 TTL、要接 Spark/KSQL。一套集群跑两套 API = 两套监控、两套调优参数、数据孤岛,运维代价是乘法不是加法。
  • 选型含义:新用户默认选 YSQL;只有存量 Cassandra 迁移且命中官方列出的四个场景时才考虑 YCQL;把 YCQL 当新写主力前先掂量它的功能投入曲线。
  • 来源:官方 FAQ(compatibility)、官方 CDC 文档、官方部署清单、BusinessWire 通稿(MongoDB API,厂商口径)

深水区四(兼容/迁移):PG 兼容缺口清单——"语法能跑"≠"语义一致"(版本截至 2026-09-29)

  • 外键:支持,但引用分区表的外键不支持;可延迟 UNIQUE 不支持(issue #1709),可延迟 FK 支持。
  • DDL 事务性:默认 DDL 非事务——BEGIN; CREATE TABLE; ROLLBACK; 后表依然存在(issue #1404);事务性 DDL 是 early-access flag(v2025.2),且与 CDC 互斥;普通 CREATE INDEX 在线构建,不能放显式事务块里(issue #6240)。
  • Advisory locks:2025.1 之前直接报错,2025.1 起支持(需 preview flag),2025.2 废弃静默报错 flag——2025.1 之前版本迁移必改应用。
  • LISTEN/NOTIFY:early-access,默认关闭;官方 voyager 评估工具列为不支持。
  • 触发器/存储过程:官方称支持,但分区表 AFTER UPDATE 触发器曾不正确;exclusion 约束不支持(issue #3944),官方 workaround 是"用触发器模拟"——语义从约束降级为尽力而为。
  • 序列:强制最小 cache 100,序列存在分布式系统表,节点增减/重连都会产生 gap——要无间隙编号别用序列。
  • 其他硬缺口:系统列 xmin/xmax/ctid、大对象 lo、PREPARE TRANSACTION(两阶段提交)、表继承 INHERITS、GIN 多列索引均不支持;已修复可关闭:UNLOGGED 表(2024.2+/2025.1+)、GENERATED ALWAYS 列(2.25/2025.1+)、分区表后加主键(2024.1+)。
  • 选型含义:迁移前用 yb-voyager 的 assess-migration 跑缺口扫描,重点审计可延迟约束、exclusion 约束、事务内 DDL、advisory locks、LISTEN/NOTIFY 五处——它们在 PG 里常用,在 YSQL 里要么报错要么静默语义变化。v2025.1(PG15 rebase)是兼容分水岭,低于此版本的兼容吐槽很多已部分修复。
  • 来源:官方 voyager known-issues(postgresql.md)、官方迁移文档、GitHub issues(#1404/#1709/#3944/#6240/#830/#11320)、第三方兼容实测(pg-boss)

深水区五(复制与容灾):多地域——光速税、leader 放置、手动 failover

  • 机制:geo-partitioning 用表空间 + placement block 把表/分区 pin 到指定地域;follower reads 要求只读事务 + yb_read_from_followers=on,代价是 yb_follower_read_staleness_ms(默认 30000ms)有界过期,设太小(<2×Raft 心跳)读被弹回 leader;read replicas 做远端只读;xCluster 是两 universe 间单向异步复制——计划内切换 RPO=0(等目标追平),计划外 RPO 非零且步骤手动:停应用→pause 双向复制→PITR 恢复到最新一致点→切连接;v2025.2.1 起 xCluster DDL 自动复制 GA,但故障切换本身仍手动。
  • 推到边缘:同步跨地域写逃不掉物理延迟(第三方对比:US→EU 50–100ms,US→亚洲 100–200ms,待验证);tablet leader 若全在 preferred region,该 region 挂掉 → 所有 tablet 瞬间无 leader,约 3 秒重选,但应用流量切换(LB/连接串)得自己做;follower reads 本质是"用 30 秒过期换本地延迟",报表能忍、交易不能忍,混用要在会话级显式开关。
  • 选型含义:写多跨地域 → 接受延迟或改 geo-partitioning 让写本地化;读多 → follower reads/read replicas 是正解;DR 演练必须覆盖"xCluster 切过去再切回来"的完整手动流程 + 应用连接切换,RTO 取决于应用切流速度而非数据库。
  • 来源:官方 tserver 配置文档、官方 DR 设计文档、官方 Aeon DR 文档、第三方对比(sesamefs,社区共识)

深水区六(成本/授权):许可证演变——从双版本到 100% 开源,与 CockroachDB 的分叉

  • 机制:2016–2019.7 双版本(CE 开源 + EE 商业闭源功能)→ 2019-07-16 官方博客宣布 100% 开源(v1.3 起分布式备份、加密、读副本、CDC 等并入 Apache 2.0)→ 至今核心(src/yb/ + src/postgres/ + 客户端库)Apache 2.0,数据库层面无企业专有功能;管控面 Anywhere(managed/ 目录)Polyform Free Trial。
  • 推到边缘:对照 CockroachDB:Apache 2.0(2017–2019)→ BSL(2019–2024)→ Software License(2024–今)→ 2026 年新版本转私有仓库开发。许可证是两者当前最硬的分水岭:一个走向更开放,一个走向更封闭。"自托管可移植"≠"自主可控"——CRDB 2026 后新版本无源码可看、无社区核心 PR,线上遇到内核级 bug 选项只剩等官方修/买支持;YB 这边"会不会再变"是合理的长期焦虑(毕竟翻转过),法务口径要各自核实,不要用一方的宣传材料论证另一方。
  • 来源:Yugabyte 官方博客(2019 换证 / 2025 博客)、仓库 LICENSE.md(独立核实,未引用 CRDB 方资料);CRDB 侧:本档案库 cockroachdb.md(2024 licensing update、2026 source-code-protection 官方博客)

客户经验

内核 复用真实 PG 查询层 —— 迁移成本最低的分布式 PG

一句话
YSQL 直接复用 PostgreSQL 的查询层代码(不是重写)——pl/pgSQL、触发器、扩展的兼容度在分布式 SQL 里最高;"PG 特性用得多、又要水平扩展"的唯一答案。
窄场景
重度使用 PG 特性(存储过程、触发器、PostGIS/pgvector 等扩展)的应用要水平扩展;不接受"重写 SQL 层"迁移方案的团队。
机制
双 API 架构:YSQL(PG 兼容)复用上游 PG 查询层源码,DocDB 是自研的分布式文档存储(tablet 分片、Raft 复制)。查询计划、优化器行为、pl/pgSQL 语义都来自真正的 PG 代码,而非"看起来像 PG"的重写——这是与 CockroachDB(自研 SQL 层、线路级兼容)的本质区别。官方承诺上游 PG 大版本发布后 6 个月内完成 rebase(已到 PG15)。
生产验证
独立架构解析:第三方工程师拆解 DocDB 存储、tablet 分裂与双 API 架构,确认查询层复用路线的实现细节(https://letsbuildsolutions.com/blog/system-design/how-yugabytedb-works-internally-docdb-storage-tablet-splitting-and-the-dual-api-architecture-that-scales-postgresql-horizontally/)。诚实备注:独立项目 pidgeiot 记录 Kratos(Ory 身份系统)官方支持列表里没有 YugabyteDB,其迁移曾死于 ALTER TABLE…ALTER COLUMN TYPE(PG15 rebase 后已支持)——"兼容 PG"不等于"被 PG 生态承认"(https://github.com/justins-engineering/pidgeiot/blob/HEAD/docs/infra/postgres-consolidation.md)。
竞品差距
CockroachDB 自研 SQL 层,兼容停在"线路 + 常用方言"层,触发器/扩展是短板;TiDB 是 MySQL 线路,PG 用户无关。反之只用标准 SQL+ORM 的团队,CockroachDB 的顺滑度可能更高。
证据等级
独立架构解析 + 官方博客(rebase 承诺可验证)
最后核验
2026-10-01

生态 替 Shopify 拆掉数万手工分片 —— "去分片"本身就是招牌

一句话
Shopify 把数万个手工分片的 MySQL 节点迁到 YugabyteDB:160 节点、7000 核、20 万 QPS、1.4PB——分布式 SQL 最有名的"去分片"生产案例。
窄场景
被手工分片拖进运维地狱的 MySQL/PG 大户:跨分片查询要应用层拼、扩容要重分片、事务跨分片即残废;目标是"拿回单机 SQL 的表达力"。
机制
手工分片把"数据分布"这个数据库该干的事推给应用层,代价是:非分片键查询全分片广播、跨分片无事务、扩容 = 数据重分布工程。YugabyteDB 的 tablet 自动分裂/负载均衡把分布收回数据库内部;Shopify 团队还沉淀了 hash vs range 索引策略、延迟预期对齐等实践——"去分片"不是换个库就行,要重新学索引设计。
生产验证
Shopify 官方成功故事(厂商发布):160 节点、7000 cores、200,000 QPS、1.4 PB;目标是将 2000 万 QPS、1500+ 表全部迁完;具名客户、量化规模(https://www.yugabyte.com/success-stories/shopify/)。诚实标注:数字来自厂商发布,未独立复现。
竞品差距
TiDB 同样吃"去分片"场景,但那是 MySQL 线路;CockroachDB 同样去分片,但 PG 深度兼容弱于 YB。PG 生态的"去分片",YugabyteDB 是案例最硬的一家。
证据等级
具名客户案例(厂商发布,数字未独立复现)
最后核验
2026-10-01

避坑 pidgeiot 迁回自建 PG —— 分布式 SQL 的"起步税"实录

一句话
独立开源项目 pidgeiot 完整记录了从 YugabyteDB 迁回自建 PG 的决策:4 vCPU/节点的生产下限 vs PG 的 1–2 核,外加 Kratos 生态不承认 YugabyteDB——分布式 SQL 的"起步税"实录。
窄场景
小团队、单机/小集群能扛住的 workload;依赖 Ory Kratos 等"只认官方 PG"的上游软件的团队最容易中招。
机制
YugabyteDB 每个节点跑完整分布式栈(tablet server、Raft、YSQL/YCQL),官方生产下限约 4 vCPU/节点——3 节点 RF3 起步就是 12 核的固定开销;PG 同等可用性(Patroni + 同步备)1–2 核起步。生态侧:Kratos 官方支持列表只有 PG/MySQL/CockroachDB/SQLite,YugabyteDB 不在其中;pidgeiot 的迁移曾死于其跑不动的 ALTER TYPE(PG15 rebase 后已支持,但"每次 Kratos 升级都要重新验证"是持续税)。
生产验证
pidgeiot 项目文档:《postgres-consolidation.md》(迁回 PG 的决策)与《distributed-sql-comparison.md》(HA 方案里 Patroni 击败 YugabyteDB 的对照),含资源数字与 Kratos 事件引用(https://github.com/justins-engineering/pidgeiot/blob/HEAD/docs/infra/postgres-consolidation.md)(https://github.com/justins-engineering/pidgeiot/blob/HEAD/docs/infra/distributed-sql-comparison.md)。
竞品差距
PG + Patroni:同等"单节点故障可活"需求下,资源占用与生态兼容完胜;CockroachDB 反而在 Kratos 官方支持列表里。YugabyteDB 的甜蜜区在"真需要水平写扩展",不在"想要高可用"——后者 PG 原生方案更便宜。
证据等级
独立项目文档(决策过程完整、可追溯)
最后核验
2026-10-01

用户最买账的 5 点

  1. PG 兼容带来的迁移顺滑度
    • 为什么是真的:YSQL 直接复用 PG 查询层 C 代码,线协议兼容,psql/JDBC/多数 ORM 无需改造即可连接,官方有 YugabyteDB Voyager 迁移工具;PG DBA Franck Pachot 实测推荐"OLTP 且未来可能要 scale 时从 YB 起步",理由是兼容 PG 且可随时迁回 PG。
    • 边缘与限度:"兼容"≠"就是 PG"——表重写类 ALTER TABLE ... ALTER COLUMN TYPE 在 v2025.1 前直接报错(Ory Kratos 迁移曾因此失败),PG15 rebase 后补上但仍有 exclusions;官方维护着"不支持的 PG 特性"清单。
    • 来源:官方文档 + 社区实测。观察版本:v2025.1/v2025.2
  2. 水平扩展能力
    • 为什么是真的:tablet 可自动分裂、rebalancer 自动搬迁,加节点即扩容且官方称无需停机——"原生分布式"相对 PG 主从/Citus 系最被认可的点。
    • 边缘与限度:扩展的是容量与吞吐,不治单点延迟;tablet 膨胀有真实代价(8GiB 节点约 530 tablet 副本 + 65 PG 物理连接上限),过多放大 leader 均衡与元数据压力;3 节点 × 4vCPU 的生产下限被社区认为小规模场景"杀鸡用牛刀"。
    • 来源:官方文档 + 社区共识。观察版本:v2025.2
  3. 多地域 active-active / 同步复制
    • 为什么是真的:单集群横跨 AZ/region/云,Raft 同步复制保强一致,geo-partitioning 数据就近放置,xCluster 双向复制;第三方社区对比将其与 CRDB 并列"强一致跨地域"档。
    • 边缘与限度:写必须等 Raft quorum,跨地域写延迟受物理距离硬约束;leader 放错 region 延迟翻倍;3 地域 × RF 资源账单实在。厂商口径(Kroger 5000+ cores、延迟 <10ms)待验证,不进入判决依据。
    • 来源:官方文档 + 第三方对比。观察版本:v2025.2
  4. Smart Drivers(集群/拓扑感知驱动)
    • 为什么是真的:官方 smart driver 从集群元数据读拓扑直连各 tserver,load_balance=true + topology_keys 实现免外部 LB、AZ 就近路由、故障客户端侧重试,实测验证流量均匀打到各节点。
    • 边缘与限度:只在官方 smart driver 生态内生效;社区实战坑:Node 驱动拓扑缓存类级静态共享、换连接池不重置继承过期拓扑,连接池需手动预热,非对等 VPC 下先探测不可达节点引入延迟。
    • 来源:官方文档 + 社区实测。观察版本:v2025.2 / v2026.1
  5. 开源口碑(核心 Apache 2.0)
    • 为什么是真的:核心 100% Apache 2.0(2019 年 HN 反响积极),对比 CRDB(BSL→私有)、TiDB 商业版边界更彻底;通过 Jepsen 正确性测试。
    • 边缘与限度:许可证历史多次翻转,长期主义者担心"下次再变";Anywhere 管控面是 Polyform 非 OSI 开源;Jepsen 是厂商付费测试厂商口径。
    • 来源:HN 讨论(2019)、Jepsen 报告。观察版本:全版本

吐槽清单

分类吐槽影响版本状态
性能坑分布式事务延迟:写等 Raft quorum,单机 PG 亚毫秒写变毫秒级;三表各插 1 行 DO 块实测 465ms,Read Committed 下 801ms(架构固有,官方 FAQ 承认 trade-off)v2.x(2.23 实测)open
性能坑LSM 写放大 + compaction 毛刺:SST 堆积触发写节流;社区诊断抓到某节点 compaction pressure HIGH、P99 38ms全版本partially-fixed(持续优化中,状态待验证)
性能坑时钟 skew → read restarts/stalls:hybrid clock 偏差近阈值即读重试,NTP 没配好直接毛刺全版本open(by design)
性能坑第三方 sysbench 对比:混合读写 50 并发即瓶颈、延迟秒级老版本(约 2.x 早期)open,状态待验证(旧版本测试仅供参考)
运维坑yb-master + yb-tserver 双进程架构,RF3 最少 3 节点,生产下限 4vCPU/节点;小规模团队认为负担远超 PG+Patroni全版本open(by design)
运维坑tablet/leader 均衡:自动 rebalance 存在,但实战出现某节点 leader 数是另一节点 2.6 倍v2025.2 实测partially-fixed,状态待验证
运维坑ulimit/文件描述符耗尽致集群不稳;Rewriting of YB table is not yet implemented 是常见迁移 blockerv2.x–v2025.xopen
兼容坑ALTER TABLE ... ALTER COLUMN TYPE(表重写)缺口致 Ory Kratos/Hydra 迁移失败,issue 被关闭未解决< v2025.1fixed-in-v2025.1(PG15 rebase 补上,但仍有 exclusions)
兼容坑YCQL 与 YSQL 数据不互通(各写各的,roadmap issue #830)全版本open
兼容坑不支持清单:LISTEN/NOTIFY、advisory locks(2025.1 前)、PREPARE TRANSACTION、事务内 DDL、GiST/BRIN 等,ORM/工具链踩坑全版本open(advisory locks fixed-in-v2025.1)
授权坑许可证历史多次变更(双版本→2019 Apache 化→企业功能曾商业授权→现 100% 开源),长期选型有不确定性焦虑历史全版本fixed-in-2019(核心 100% Apache 2.0;"会不会再变"属主观,待验证)
授权坑Anywhere 管控面为 Polyform Free Trial 非 OSI 开源;Aeon 托管版按 vCPU 分级商业定价(公开报价以官方为准,询价前不要按旧数字做预算)v2024+open(by design)
生态坑Ory 官方仅支持 PG/MySQL/CockroachDB,YugabyteDB 不在支持列表,Kratos/Hydra 用户需自担"每次升级重验"税全版本open
生态坑Smart driver 实战坑:拓扑缓存静态共享、连接池需预热、discovery 阶段可绕过连接超时配置2026 年实战open,状态待验证
生态坑监控集成:Prometheus 指标端点特殊(默认 /metrics 无数据),需按官方 receiver 方式对接全版本open
成本坑RF3 三副本:同样数据量 3 倍存储 + 3 节点起步计算资源;社区测算小规模 HA 场景资源约为 PG+Patroni 方案 4 倍全版本open(by design)

判决

  • 一句话定位:想"用 PG 的方言写、按分布式的规模跑",且把许可证开放度看得很重的团队,YugabyteDB 是 NewSQL 里 PG 兼容质地最真的一家——但你要为分布式付的税(延迟、RF3 资源、运维复杂度)一分不会少。
  • 适合谁:需要 PG 生态 + 水平写扩展的 OLTP(从 PG 起步、预留 scale-out);多地域 active-active / 同城双活强一致场景;存量 Cassandra 迁 YCQL;对许可证敏感、要求核心 100% 开源无阉割的团队(对照 CRDB 2026 转私有)。
  • 不适合谁:单地域小规模业务(RF3 资源下限 + 运维复杂度不划算,先用 PG+Patroni);写延迟敏感到亚毫秒级的场景;重度依赖 PG 偏门特性(PostGIS、exclusion 约束、LISTEN/NOTIFY、advisory locks 老版本、PREPARE TRANSACTION)且不愿改应用;中文支持要求高、无专职 DBA 又想"装完不管"的团队。
  • 迁移成本:PostgreSQL → 低-中(协议兼容 + yb-voyager assess-migration,但必须跑缺口扫描,长尾缺口逐项验证;v2025.1 之前版本兼容坑更多);MySQL → 中(先过 PG 兼容层再谈);Cassandra → 低(YCQL);Oracle → 高(无 Oracle 兼容,走应用层改造)。

来源与待验证清单

  • 版本信息:官方 releases 页(v2026.1.1.2 STS 2026-09-10;v2025.2 LTS;v2025.2.6.0→2026.1 升级限制)
  • 架构:官方架构文档(docdb-replication/raft、transactions/distributed-txns、concurrency-control、single-row-transactions、docdb-sharding/tablet-splitting)、官方设计文档(tablet 分裂、DR)
  • 安全:官方文档(encryption-at-rest、tls-encryption、audit-logging-ysql/ycql)
  • 备份/升级:官方文档(schedule-data-backups、PITR、upgrade-deployment 各版本)、官方 yugabytedb-skills
  • 兼容:官方 voyager known-issues(postgresql.md)、官方迁移文档、官方 FAQ(compatibility)
  • 许可证:官方博客(2019-07-16 换证)、仓库 LICENSE.md(独立核实);CRDB 对照:本档案库 cockroachdb.md
  • 口碑:GitHub issues(#830/#1404/#1709/#3944/#6240/#11320、ory/kratos#715、ory/hydra#2156)、HN(2019 换证讨论)、dev.to 实测、社区对比(pidgeiot、sesamefs)、yb-doctor/base-14 监控文档
  • 下次评审:跟踪 v2026.2 LTS 发布(计划 2026 年底)、PG rebase 节奏、YCQL 投入方向