◈ DB 选型参考
← 返回首页

CockroachDB

关系型 OLTP #分布式 #NewSQL #强一致 #Serializable #多地域 #PG协议兼容 #Raft #商业许可

Cockroach Labs 出品的 Spanner 式强一致分布式 SQL 数据库:默认 Serializable、跨地域多活接入、PostgreSQL 线协议——但"多活接入"不等于"跨洋写本地完成","PG 兼容"不等于"PostgreSQL"。

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

基本信息

项内容
厂商Cockroach Labs
国家美国
起源2015 年创立,v1.0 发布于 2017 年;受 Google Spanner 论文启发
许可证CockroachDB Software License(2024 年起统一;2019–2024 为 BSL);年收入 < 1000 万美元的组织可免费使用 Enterprise
源码状态2026 年起新版本转入私有仓库开发,不再公开新源码;GitHub 旧仓库仅保留为历史快照、不再更新。当前版本是"闭源分发 + 商业许可",不是"开源"
托管服务CockroachDB Cloud(Basic / Standard / Advanced 三档;原 Serverless 2024-09-25 更名为 Basic)
主类型关系型(原生分布式,NewSQL)
兼具类型向量检索(v24.3 起)、CDC / Changefeed、企业级多地域

硬维度(47 项)

1 静态加密 / TDE 部分支持

部分支持。数据文件落盘加密有引擎内机制(--enterprise-encryption 启动参数,多 store 需逐个配置;存储层 RFC 显示文件状态记录在 COCKROACHDB_REGISTRY);备份可用 passphrase / KMS 加密。但 WAL / 临时文件的覆盖边界、密钥轮换与 KMS 矩阵需对照 v26.3 文档复核。来源等级:官方文档(旧版本)+ 待验证

2 TLS / 传输加密 有

有。TLS 双向认证(节点证书 + 客户端证书),--insecure 仅限开发测试。来源等级:官方文档

3 审计 有(多为付费墙内)

有(多为付费墙内)。sql.log.user_audit / sql.log.admin_audit.enabled 等 cluster settings 存在(官方 skills 仓库的 CIS 审计样例报告可证);具体自托管 / Cloud 各 tier 的能力边界待官方复核。来源等级:官方仓库资料 + 待验证

4 认证与权限 有

有。密码(SCRAM-SHA-256)、证书认证、RBAC 角色;OIDC/SSO、Kerberos 等多为 Enterprise / Cloud 付费层能力,具体矩阵待复核。来源等级:官方仓库资料 + 待验证

5 备份恢复 有(部分需 Enterprise)

有(部分需 Enterprise)。BACKUP / RESTORE SQL、增量备份、计划备份、PITR;全集群恢复需 enterprise license(Cockroach Labs 官方 university skill 明确);恢复速度官方口径待复核;Cloud 提供托管备份(各 tier 保留期/能力待复核)。来源等级:官方仓库资料 + 待验证

6 可观测性 有

有。DB Console(:8080)、SQL Activity、statement diagnostics、Prometheus metrics 端点。但注意:pg_stat_statements 不可用(PG 生态监控工具链迁移时的明确缺口)。来源等级:官方文档 + 社区共识

7 连接模型 部分支持

部分支持。每个节点都是 SQL 网关,客户端应配置多节点地址或经 LB 分散连接;官方对接 PG 驱动生态(port 26257);官方是否自带连接池(pgBouncer 式)未找到证据——未找到证据,待验证。来源等级:官方文档 + 待验证

8 事务与隔离级别 有

有。默认 Serializable;v23.2 起可选 READ COMMITTED(v26.3 的默认与语义细节待官方复核)。机制:MVCC + write intents + transaction record,多 Range 事务走 2PC,Parallel Commits 把提交关键路径压到约 1 轮共识 RTT。来源等级:官方文档 + 第三方技术资料

9 复制与一致性 有

有。每 Range 一个 Raft group + leaseholder 协调读写,默认强一致;另有 follower reads(AS OF SYSTEM TIME follower_read_timestamp())提供有界陈旧读。来源等级:官方设计文档 / RFC + 第三方资料

10 扩展方式 有

有。横向 scale-out 在线扩容,加节点后 Range 自动 rebalance;节点纵向升级配置亦可。来源等级:官方文档 + 社区共识

11 兼容性 部分支持

部分支持。PostgreSQL wire protocol v3 + 多数 PG 语法/工具可用,但不是 PG 内核。v26.3 官方文档明确缺口:range types、events、drop primary key、XML functions、列级权限、XA、template 建库、FDW、session-scoped advisory locks(仅 transaction-scoped 支持)。来源等级:官方文档(v26.3)

12 许可证与商业模式 有(商业许可,非开源)

有(商业许可,非开源)。Apache 2.0(2017–2019)→ BSL(2019–2024)→ CockroachDB Software License(2024–今);2024-11 起年收入 < $10M 组织免费 Enterprise;2026 起新版本源码私有。Cloud 按 RU/存储计费(Basic 层级含免费额度,第三方口径,待官方复核);自托管商业授权价格不公开(询价)。来源等级:官方博客 + 第三方报道 + 待验证

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

部分支持(偏少)(编辑判断)。官方文档以英文为主,中文社区实践帖远少于 OceanBase/TiDB。来源等级:编辑判断,待规模化采集验证

14 性能与延迟特征 有

有(用延迟换全球可用性;吞吐随节点数扩展)。

  • 单行读写延迟毫秒级(跨地域更高),高于单机 DB;吞吐随节点数提升 官方文档。
  • follower reads / 就近 leaseholder 降低读尾延迟 官方文档。
  • 热点行/高冲突事务是性能杀手,schema 设计需避免全局序列热点 社区共识。

15 合规与认证 有

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

  • CockroachDB 公开 SOC2 Type II厂商口径厂商口径。
  • 无中国区服务/信创名录信息;中国用户需评估跨境合规 待验证。
  • 自托管版的合规责任在部署方 社区共识。

16 成熟度与社区生态 有

有(2015 年开源;2023 年转 BSL 许可)。

  • 2015 年开源;2023 年核心改 BSL 引发社区 fork 讨论 社区共识。
  • GitHub stars 数万级;Cockroach Labs 持续融资 社区共识。
  • Serverless/Standard/Dedicated 多形态,版本线需对准 官方文档。

17 标杆用户 有

有(新兴市场金融科技;案例少于 TiDB)。

  • 公开案例以新兴市场金融科技、SaaS 为主厂商口径厂商口径。
  • 顶级互联网大厂公开案例少于 TiDB/Cassandra 社区共识。
  • 选型参考:多活/全球部署是主要采用动因 社区共识。

18 生态工具链 有

有(CHANGEFEED 做 CDC;备份内置)。

  • CDC:CHANGEFEED(到 Kafka/云存储)官方文档。
  • 备份:全量/增量内置,支持 PITR 官方文档。
  • 迁移:MOLT(MySQL/Postgres→CRDB)等官方工具 官方文档。

19 云托管与 Serverless 有

有(CockroachDB Cloud(Serverless/Standard/Dedicated))。

  • Cloud Serverless(按量)/ Standard / Dedicated 三档 官方文档。
  • 跨云部署(AWS/GCP)是特色 官方文档。
  • 自建版与云版功能对齐,BSL 许可注意 社区共识。

20 数据接入与摄入 有

有(IMPORT(CSV/Parquet/Avro);PG COPY 兼容)。

  • IMPORT FROM 可从 S3/GCS/HTTP 批量导入 CSV/Parquet/Avro 官方文档。
  • PG 协议兼容,COPY、pg_dump/pg_restore 可用 官方文档。
  • 大表 IMPORT 注意拆分与超时,并行度需实测 社区共识。

21 外部数据访问 部分支持

部分支持(IMPORT 读外部存储;无 FDW/外部表)。

  • 可从外部存储 IMPORT,但那是导入不是联邦查询 官方文档。
  • 无 postgres_fdw 等外部表机制 社区共识。
  • 跨库查询需求一般在应用层或用 CDC 同步后解决 社区共识。

22 CDC 与下游同步 有

有(CHANGEFEED 一等公民:Kafka/云存储/webhook)。

  • CHANGEFEED 可把行级变更推到 Kafka、云存储(Parquet/CSV)、webhook 官方文档。
  • 支持 Avro/JSON 信封,可做下游流处理 官方文档。
  • 大事务变更 feed 延迟与内存是已知调优点 社区共识。

23 TTL 与数据生命周期管理 部分支持

部分支持(无原生 TTL;靠 scheduled job 定时删)。

  • 无原生行级 TTL,需用 scheduled job 机制跑定时 DELETE 官方文档。
  • 大表定时删注意拆批,避免长事务拖慢 MVCC GC 社区共识。
  • 原生 TTL 的 feature request 长期 open,短期别指望 社区共识。

24 在线 DDL 与 Schema 演进 有

有(四类全在线;DDL 默认非事务性)。

  • 只改定义:加可空列、重命名、删列(打标记)、COMMENT 只改系统表元数据,代价 O(1) 与表大小无关 官方文档。
  • 重写数据:改列类型、加二级索引走后台分布式回填,读写不阻塞;大回填可能临时占用至约 3 倍存储,官方建议低峰执行 官方文档。
  • 搬数据:ALTER TABLE … ALTER PRIMARY KEY 与 SET LOCALITY 均在线执行;但主键变更进行中同表禁止其他在线变更 官方文档。
  • 验证约束:支持 NOT VALID 先加约束、再 VALIDATE CONSTRAINT 分阶段验证 官方文档。
  • 规模:第二、四类代价 O(n),小表大表两个世界;大回填耗算力,官方明确建议低峰执行 官方文档。
  • 语义:DDL 一般不入事务(官方已知限制;多语句事务中 DDL 可能部分提交,错误码 XXA00);删列回滚可能无法正确恢复(官方已知限制);变更以 job 运行,SHOW JOBS 监控、可暂停/恢复/取消 官方文档。(依据 v26.x 官方文档,2026-10-02 核验)

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

部分支持(admission control 有限;无租户资源组)。

  • admission control 做过载保护,但不是租户级 QoS 官方文档。
  • 多租户靠多集群/多 database 逻辑隔离 社区共识。

26 跨地域多活 有

有(多 region 生存目标,原生多活)。

  • REGIONAL BY ROW 等生存目标,数据放离用户近的 region 官方文档。
  • 多 region 写原生支持,follower 读降低跨区读延迟 官方文档。
  • 跨区事务延迟是物理上限,设计表时要分区裁剪 社区共识。

27 高可用架构与 RTO/RPO 有

有(Raft 自愈,RTO 秒级)。

  • Raft 多副本,节点故障自动选主,RTO 秒级 官方文档。
  • RPO=0(多数派提交),脑裂靠 Raft 任期防护 官方文档。
  • 多活架构下单节点故障业务几乎无感 社区共识。

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

未找到证据(RLS支持不完整,待官方确认)。

  • CockroachDB 曾实验行级安全相关能力,但官方文档中 RLS 的支持状态不明确 / 不完整 待验证
  • 当前行级隔离主要靠视图与应用层,或利用多租户 / 分区做隔离 社区共识
  • 无内置动态脱敏引擎的公开说明 待验证

29 JSON 与半结构化能力 有

有(JSONB 类型,PG 算子兼容)。

  • JSONB 类型,->/->>/@> 等 PG 兼容算子 官方文档。
  • GIN 索引支持弱于 PG,复杂 jsonb 查询性能注意 待验证。

30 全文检索能力 无

无(查证为无,生产外挂检索)。

  • 无全文索引(查证为无)官方文档。
  • 全文场景需外挂 ES/Typesense 社区共识。

31 存储效率与压缩 有

有(Pebble LSM+Snappy 压缩)。

  • 存储引擎 Pebble(RocksDB 系)采用 LSM 结构,默认 Snappy 压缩,支持块级压缩配置。官方文档
  • 多副本(默认 3 副本)带来 3 倍存储放大,压缩可部分抵消但无法消除。社区实测
  • 备份与导入导出支持压缩,属运维层面能力。官方文档

32 开源协议与厂商锁定风险 部分支持

部分支持(曾从 Apache 2.0 转 BSL)。

  • CockroachDB 2019 年将核心从 Apache 2.0 转为 BSL(Business Source License),限制云厂商托管竞争,是明确的协议变更黑历史。官方文档
  • BSL 条款下自建使用仍免费,但二次分发与云托管受限。社区共识
  • CockroachDB Dedicated/Serverless 云版本进一步绑定其云平台。厂商口径

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

有(自研 CBO;EXPLAIN 完备;hint 有限)。

  • 自研分布式 CBO,支持 EXPLAIN (OPT/VERBOSE) 官方文档。
  • hint 能力有限(不如 PG/Oracle),计划控制手段少 官方文档。
  • 统计信息自动收集,计划翻转多与统计过期相关 社区共识。

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

部分支持(参数精简哲学;自动 rebalance)。

  • 参数数量刻意精简,大量行为自动(副本 rebalance、range 分裂)官方文档。
  • DB Console 诊断完善,但深度调优点少 社区共识。

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

部分支持(存储引擎块级校验+三副本,用户侧无开关)。

  • 底层 Pebble 存储引擎带块级 checksum,读路径可发现损坏块。待验证
  • Range 三副本 + Raft,单副本损坏可被多数派掩盖并修复。官方文档
  • 无用户可见的页校验开关或全库校验命令,损坏审计能力有限。社区共识

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

无(查证为无存储过程/触发器)。

  • 无存储过程、触发器(查证为无)官方文档。
  • 逻辑放应用层;去 O 迁移时 PL/SQL 需整体重写 社区共识。

37 约束与数据完整性 有

有(FK/CHECK 有,分布式下慎用)。

  • 支持外键、CHECK、唯一约束 官方文档。
  • 跨 range 外键检查有分布式代价,高吞吐写入建议应用层保证 官方文档。

38 分析 SQL 完备性 有

有(窗口/CTE 有;递归有限)。

  • 窗口函数、CTE 可用,PG 兼容度高 官方文档。
  • 递归 CTE 与复杂分析性能弱于专用 OLAP 社区共识。

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

部分支持(手动DELETE;MVCC历史+备份残留)。

  • MVCC 下 DELETE 产生墓碑标记,GC 前旧版本可读;企业版备份保留历史 官方文档
  • 无原生擦除证明,GDPR 删除需应用层编排“删行 + 轮转备份 + 审计” 社区共识

40 数据血缘与目录集成 无

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

  • 无原生数据血缘/目录 官方文档。
  • 依赖第三方治理平台 社区共识。

41 存算分离 vs 存算一体 有

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

  • 每节点 Pebble(RocksDB 衍生)本地存储,存算一体 官方文档。
  • 扩缩容自动 rebalance,但数据搬迁耗时 社区共识。

42 多模能力 部分支持

部分支持(PG 兼容多模:JSONB+全文+向量)。

  • JSONB、全文检索、pgvector 兼容(PG 生态)官方文档。
  • 无原生图引擎 社区共识。

43 FinOps 成本可观测性 部分支持

部分支持(云版按量计费,标签与预算能力有限)。

  • CockroachDB Cloud 按请求/计算单元计量,提供用量视图。厂商口径
  • 成本标签与预算告警能力弱于主流云数仓,细粒度归因有限。待验证
  • 自建版无计费概念,成本=硬件+运维人力自理。社区共识

44 驱动与多语言生态 有

有(PG 协议兼容,驱动直接复用)。

  • PG 线协议兼容,pgjdbc/psqlODBC/libpq 直接可用 官方文档。
  • 部分 PG 高级特性驱动层需注意兼容 社区共识。

45 物化视图 无

无(查证为无物化视图能力)。

  • 无物化视图(查证为无)官方文档。
  • 预聚合靠应用层或下游 OLAP 社区共识。

46 支持跨云 有

有(自建任意云;CockroachDB Cloud 多云)。

  • 开源/企业自建版任意云可部署 官方文档。
  • CockroachDB Cloud 支持 AWS/GCP 官方文档。
  • 跨云多活理论可行,延迟与成本是现实门槛 社区共识。

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

部分支持(冲突转 40001 重试,单行热点靠应用)。

  • 并发控制原语:默认 SERIALIZABLE 乐观执行;作用于同一索引键或列族的事务被严格串行化,冲突时一方被打上 40001(restart transaction)重试错误,这是争用下的正常操作而非故障 官方文档。
  • 重试责任:隐式单语句事务由内核静默自动重试;显式多语句事务必须由应用层(或 ORM 的 CockroachDB 重试适配器)实现重试循环,否则 40001 直接暴露为用户可见错误 官方文档。
  • 衰减形态:热点行在 range leaseholder 处串行;高并发热点下重试风暴推高延迟,重试次数随冲突率放大;同 key 热点是 leaseholder 单点串行,加节点无法分担 社区共识。
  • 内置缓解:range 按负载自动分裂可缓解热点 range,但单行热点无法通过分裂打散;leaseholder 协调读写,热点 leaseholder 本身是单点 官方文档。
  • 应用层模式:官方建议用 SELECT FOR UPDATE 强制串行化临界区、UPSERT 合并写、按访问模式分离列族以缩小锁冲突面;顺序键改用 gen_random_uuid 或 hash-sharded 索引打散(主要针对顺序写入热点);代价是 schema 改造成本与重试逻辑侵入业务 官方文档。

招牌能力

每个特性 = 它是什么 + 为什么是真本事 + 边缘真相。

  1. 跨地域/跨云的强一致分布式 SQL(multi-active 接入) 真本事:各地域节点都能接 SQL,Range 的 leaseholder 按负载/地域分布,配合 REGIONAL BY ROW 让行级数据贴着访问它的地域放;SURVIVE ZONE/REGION FAILURE 声明式表达容灾目标。 边缘真相:multi-active 是"接入多活",不是"写本地完成"。跨地域写仍要等 Raft 多数派/所触及 Range 的共识;SURVIVE REGION FAILURE 直接把"至少一次跨地域 RTT"写进每一次健康日的写延迟。选型时必须把"容灾目标"翻译成"延迟预算"。
  2. 默认 Serializable 的跨节点 ACID 真本事:MVCC + HLC(无需 TrueTime 专用硬件)+ write intents + 跨 Range 2PC + Parallel Commits(约 1 RTT 提交),默认隔离级别就是最高档;2021 年 Jepsen 报告通过是正确性口碑的硬背书。 边缘真相:Serializable 的代价是热点冲突下 40001 / restart transaction 抛给应用——重试逻辑是应用的税,不是数据库的;HLC 的代价是时钟不确定性窗口和严格的 NTP 运维,时钟偏移超阈值(第三方资料称默认约 500ms,待官方复核)节点会自我保护。把"默认最强一致"读作"默认零心智负担"是误读。
  3. Range 自动 split / merge / rebalance(免手工分片) 真本事:KV keyspace 按 Range 分片,超阈值(第三方称约 512MB,待官方复核 v26.3 默认值)自动分裂,负载型拆分还能按 QPS 拆;小 Range 合并(merge queue 与 split 启发式联动,避免抖动),节点增减自动搬 Range。应用层基本告别分库分表。 边缘真相:拆分治得了"数据量大",治不了"单 key 热"。顺序递增主键会把写入钉死在一个 Range/leaseholder 上——这时多数节点 CPU 空闲、总吞吐却卡住,是 CockroachDB 最经典的"看起来有劲使不出"现场。UUID/hash-sharded index 能打散,但牺牲顺序扫描局部性。
  4. PostgreSQL wire protocol 生态接入 真本事:psycopg2、SQLAlchemy、Prisma、Hibernate、ActiveRecord 等 PG 驱动/ORM 基本直连(port 26257),迁移的"接口成本"低。 边缘真相:协议兼容 ≠ 行为兼容。session-scoped advisory locks 不支持(Authentik 这类依赖它的应用直接跑不起来,上游 issue 2026-06 仍 open)、无触发器/存储过程(PL/pgSQL)、无 FDW、无 LISTEN/NOTIFY、无 SEQUENCE(用 UUID/unique_rowid())。Storj 历史迁移(v19.2 时代)花了一个全职开发月处理兼容差异——pgwire 省的是"重写连接层",不是"零改造成本"。
  5. 声明式多地域数据布局(REGIONAL BY ROW / GLOBAL) 真本事:行级地域亲和 + GLOBAL 表(读多写少的引用数据全地域放),是"全球一张表"场景里完成度最高的数据布局抽象之一;follower reads 让远地域读走本地副本、避开 WAN。 边缘真相:GLOBAL 表写要从主地域走,写放大的账要算;REGIONAL BY ROW 要求 schema 设计时就把"地域"建模进主键/分区键,事后补救等于重做数据建模;follower reads 是有界陈旧读,读到旧数据是 feature 不是 bug——用错地方就是线上事故。

先有固定题库基线,再看差异。以下是不宜塞进杀手特性、但选型时值得知道的"第二梯队":

  • 向量检索(v24.3+):PGvector 兼容函数 + DiskANN 索引,官方 2024-11 GA。差异点:TP workload 顺手做向量召回;但别把它当专用向量库——大规模 ANN 性能与生态(LangChain 等集成深度)待实测验证。来源等级:官方口径 + 待验证
  • Follower reads / non-voting replicas:读多地域场景的延迟杀器;non-voting 副本 historically 为企业特性。来源等级:官方 RFC + 待验证(tier 边界)
  • Row-level TTL:行级自动过期删除,日志/事件类表的"自动清理"刚需。来源等级:官方文档,版本细节待复核
  • Continuum(2026-01 发布):Cockroach Labs 新推出的"AI agent 舰队"产品,面向 AI workload 的数据基础设施;2026 年战略转向 AI 的信号。GA 状态与定价待验证,本档案不计入判决依据
  • 多租户架构(Cloud Basic):Basic 层用存储层虚拟化实现多租户,低成本入口;代价是性能隔离与版本跟随策略弱于 Standard/Advanced。来源等级:第三方架构资料 + 待官方复核

深水区

深水区一(存储引擎):Range 拆分救得了数据量,救不了单 key 热

  • 机制:Range 超容量/负载阈值由 leaseholder 选 split key、经 Raft 发起分裂;merge queue 定期扫描本 store 持有 lease 的 Range,与右邻合成假设合并 Range,若 split 队列会立刻再拆则不合并(天然防抖动);小 Range(默认 <8MB 不参与合并判断的阈值,可按 zone 配)合并。
  • 推到边缘:顺序递增主键 → 新写入全部落到最右 Range → 该 Range 的 leaseholder 成为单点写瓶颈;Range 分裂对"单 key"无效(key 再热也只属于一个 Range);此时集群 CPU 大片空闲但写吞吐封顶,看 Hot Ranges / SHOW RANGES 才能定位。缓解靠 UUID 主键或 hash-sharded index,代价是范围扫描变 scatter-gather。
  • 选型含义:凡是有"全局递增 ID"习惯的 MySQL/PG 迁移,第一件事就是改主键策略;热点压测必须按真实 key 分布打,不能只看均匀压测。
  • 来源:官方 range-merges tech note、design.md;社区运维总结(sanoy24);HN 历史讨论(2019,历史社区观察)

深水区二(复制与一致性):leaseholder 是延迟的指挥棒,follower reads 是陈旧读

  • 机制:强读走 leaseholder(本地读,无需 Raft);写由 leaseholder 提案,经 Raft 多数派确认;follower reads 基于 closed timestamp 让 follower 副本 serving 有界陈旧读,避开 WAN 跳和 leaseholder 热点(但解决不了"单 key 写热")。
  • 推到边缘:跨地域部署中,若某 Range 的 leaseholder 在远地域,每次强读/写都是一次 WAN RTT;SURVIVE REGION FAILURE 要求共识跨地域,写延迟下限 = 到最近必需副本的往返。节点故障时 lease 重新选举有秒级窗口(第三方笔记称约 4.5s 心跳超时量级,待官方复核),期间相关 Range 写不可用——这是"CP 系统"的正常表现,不是 bug。
  • 选型含义:多地域方案必须回答"leaseholder 在哪"和"读能不能接受陈旧";延迟 SLA 要按"拓扑实测"签,不能按"单地域 benchmark"签。
  • 来源:官方 follower reads RFC(2020)、non-blocking txns 提案;cockroachlabs 官方 skills(multi-region);Medium 第三方分析(2026-08)

深水区三(事务与时间):Parallel Commits 压的是 RTT 次数,不是光速;HLC 的税是时钟

  • 机制:跨 Range 事务 2PC,Parallel Commits 把"写 intents(1 RTT)+ 提交 transaction record(1 RTT)"折叠,让事务在第一阶段返回后即可向客户端确认提交,关键路径约 1 RTT;HLC = 物理时钟 + 逻辑计数器,用不确定性窗口代替 TrueTime 硬件。
  • 推到边缘:① 单地域 2 RTT→1 RTT 是实打实的延迟减半;跨洋事务 1 RTT 仍是 100–300ms 量级(第三方估算,按拓扑实测),Parallel Commits 不消灭地理。② 时钟偏移超过 max-offset(第三方称默认 500ms,待官方复核)节点自我保护/拒绝服务——NTP 是生产前置条件,虚拟机时钟漂移是隐形杀手。③ 高冲突下事务在不确定性窗口内被 restart,应用看到 40001;重试必须由应用做,且"重试外部副作用"(发邮件、调支付)是应用自己的坑,数据库只保证"数据库内工作可重做"。
  • 选型含义:事务模型 POC 必须包含"跨地域事务延迟分布"和"热点冲突重试率"两项;任何在 commit 前做外部调用的代码,迁移过来都要重写。
  • 来源:官方设计文档;第三方工程手册(max-offset);Medium 2026-08 分析(PG vs CRDB 地域故障)

深水区四(SQL 层/兼容):pgwire 是"方言兼容",缺口清单是迁移的真实工作量

  • 机制:自研 SQL 层实现 PG wire protocol v3 + 多数 PG 语法,非 PG 内核 fork。
  • 推到边缘(v26.3 官方兼容文档明确缺口):range types、events、drop primary key、XML functions、列级权限、XA、template 建库、FDW、session-scoped advisory locks 不支持。另:SERIAL 行为差异、默认 INT8、自动 rowid 主键、PostGIS 等扩展生态缺失、pg_stat_statements 不可用(监控工具链迁移缺口)。历史案例:Storj 迁移花约 1 人月处理兼容/迁移脚本(v19.2 时代,仅作历史参考);Authentik 因 session advisory locks 无法直接运行(2026-06 上游 issue 仍 open)。
  • 选型含义:PG 迁移必须逐项跑兼容矩阵,尤其是触发器、存储过程、advisory locks、FDW、扩展;"Django/Rails 能跑"不等于"你的 PG 能跑"。
  • 来源:官方 postgresql-compatibility(v26.3);社区迁移案例

深水区五(运维/升级):版本火车快,finalize 是单行道

  • 机制:滚动升级逐节点进行;全部节点换完二进制后显式 SET CLUSTER SETTING version finalize;finalize 前可用 cluster.preserve_downgrade_option 保住回退,finalize 后不可回退。
  • 推到边缘:一年多个大版本(v25.4→v26.1→v26.2→v26.3),升级是"日常操作"不是"年度项目"——跟不上的团队会长期停在旧大版本;finalize 后发现问题只能向前修不能向后退,升级前必须有完整备份 + 回滚预案(向前)。证书管理是持续吐槽点(社区运维手册单列"证书过期需全量重签发+重启"流程)。
  • 选型含义:把"升级演练"写进 SLA,把证书轮换写进 on-call 手册;Cloud Basic 自动跟随新稳定版(第三方称,待官方复核),要"版本 pin 住"得看 Standard/Advanced 的能力边界。
  • 来源:社区运维手册(rolling upgrade 实操);rancher helm chart 文档(preserve_downgrade_option)

深水区六(成本/授权):许可证三年三变,2026 年源码转私有是分水岭

  • 机制:Apache 2.0(2017–2019)→ BSL(2019–2024,限竞争性 DBaaS,旧版本到期转 Apache)→ CockroachDB Software License(2024–今,年收入 <$10M 免费 Enterprise)→ 2026 年新版本转私有仓库开发、公开仓库只留历史快照。
  • 推到边缘:"自托管可移植" ≠ "自主可控"。BSL 时代至少还能看源码、到期转 Apache;2026 后新版本无源码可看、无社区可提核心 PR——线上遇到内核级 bug,你的选项只剩"等官方修/买支持",和闭源商业数据库一致。收入口径(关联公司、$10M 线)、用途限制、审计条款必须在合同里抠字眼,不能按博客标题理解。
  • 选型含义:把 CockroachDB 当"商业数据库"做 TCO 和退出预案;需要源码级自主修复能力的团队(如信创/强监管),这条是硬门槛。
  • 来源:官方博客(licensing-update-2024、source-code-protection 2026);SDTimes、The Register 报道

深水区七(成本/计费):RU 是抽象货币,跨地域复制是隐形税

  • 机制:Cloud 按 RU(请求单元)+ 存储计费;RU 把 CPU/IO/网络抽象成统一货币。
  • 推到边缘:RU 抽象让预算难预测——同样的 SQL,索引选错、跨 Range fan-out、跨地域流量都会让 RU 膨胀;多地域写入在"计算+网络+存储"三处重复花钱;自托管躲开了 RU,但起步就是 3 节点 + 跨 AZ 流量 + 商业授权/运维人力。历史公开价格(2024 年第三方口径)已不适用,2026 年现价以官方为准,询价前不要按旧数字做预算。
  • 选型含义:POC 必须跑"计费影子测试"(同样 workload 在 Cloud 跑一周看账单),不能只看性能;自托管 vs Cloud 的 TCO 要按 3 年算,含人力。
  • 来源:TechTarget 2024(历史价,数字已删);第三方部署指南(待官方复核)

深水区八(存储/性能):LSM + MVCC 的债——tombstone、GC 与 fan-out

  • 机制:底层 Pebble(RocksDB 系 LSM),叠加 MVCC 多版本;Range 分裂/合并、rebalance 都是后台数据搬运。
  • 推到边缘:重 UPDATE/DELETE 产生 tombstone 与旧版本,GC/compaction 跟不上时读放大、磁盘水位上涨、p99 延迟毛刺;一次 SQL 扫大量 Range 触发 DistSQL fan-out,网络与内存放大;大删除后"删完了但磁盘没降、查询变慢"是社区反复出现的运维现场(2019 HN 讨论,历史观察)。长事务/长读会 pin 住 MVCC 版本,拖慢 GC——"一个忘了关的事务拖垮整库 GC"不是传说。
  • 选型含义:大批量删除/更新要有分批 + 观察 compaction/GC 水位的 SOP;慢查询排查先看"扫了多少 Range"。
  • 来源:社区运维总结;HN 历史讨论;官方设计文档

客户经验

内核 多活生存性 —— 丢一个 region 业务不中断

一句话
默认可串行化 + 按 range 的 Raft 复制 + geo-partitioning——region 级故障下业务零中断,数据可按法规钉在指定地域;Netflix 380+ 集群在跑,是本批最硬的生产证据之一。
窄场景
全球化在线业务(设备管理、支付、SaaS 控制面),要求"任何一个云 region 整体挂掉,服务不降级";有数据主权合规要求(欧盟数据不出欧盟)。
机制
数据按 key range 切分,每个 range 经 Raft 在多地域多副本同步复制;默认隔离级别就是可串行化(serializable),不需要用户显式选择;geo-partitioning 允许行级指定数据归属地域(如欧盟用户行只落在欧盟节点),在"全球复制求生"与"合规钉住数据"之间按表/行精细调配。代价是写要跨地域走 Raft 共识(见[避坑]卡)。
生产验证
Netflix(厂商案例集):380+ 集群、160+ 生产集群、60+ 多 region 集群;设备管理平台(数百种设备的接入与事件处理)在其上运行;最大单集群 60 节点、26.5TB;Netflix 数据平台团队有持续公开技术博客佐证(https://cdn.featuredcustomers.com/CustomerCaseStudy.document/CockroachLabs-NETFLIX-Case-Study.pdf)。Storj:2019 年从 PG 迁移,对象存储元数据 51 亿行、5.5TB,3 大洲 9 region 部署(https://cockroachlabs-www-prod.netlify.app/pdf/CockroachLabs-STORJ-Case-Study.pdf)。诚实标注:数字来自厂商发布的案例材料,未独立复现。
竞品差距
TiDB 多 AZ 强一致、跨洲多活语义与 geo-partitioning 精细度弱;YugabyteDB xCluster 异步双活有 RPO;Aurora Global 跨区异步复制 RPO 非零;Spanner 同级但贵一个数量级且 GCP 专属。"开源/多云可部署 + 同步多活 + PG 线路兼容"三者兼得,31 款只有 CockroachDB。
证据等级
具名大厂生产(厂商案例集,数字未独立复现)+ 持续公开技术博客(Netflix)
最后核验
2026-10-01

生态 PG 线路兼容 —— 从 PG 迁来的摩擦力最低的分布式 SQL

一句话
PG 线路协议兼容,Storj 从 PG 迁移时"transition was easy"——团队把精力花在业务而非学新数据库上;PG 生态出走分布式最顺滑的第一站。
窄场景
PG 单机到瓶颈、但应用层是标准 SQL/ORM(无重度 PG 专有特性);不想重写应用,只想换掉"单机"这个约束的团队。
机制
实现 PG 线协议,多数驱动/ORM 零改动连接,SQL 方言覆盖 PG 常用子集。但线路兼容 ≠ 行为兼容:默认可串行化带来的事务重试、某些 DDL/特性的缺失,是迁移后才暴露的差异(见[避坑]卡)。
生产验证
Storj 案例 CTO 原话:"Because CockroachDB is PostgreSQL wire-compatible, the transition was easy, allowing the team to focus on building the product instead of learning a new technology."——CTO 原话级别的迁移体验背书(https://cockroachlabs-www-prod.netlify.app/pdf/CockroachLabs-STORJ-Case-Study.pdf)。
竞品差距
YugabyteDB 复用真实 PG 查询层、兼容度更深,但运维更重;TiDB 是 MySQL 线路,PG 用户过不来。结论:PG 生态出走分布式,CockroachDB 是"最顺滑"的第一站,YugabyteDB 是"兼容最深"的第二站——两者定位不同。
证据等级
具名客户 CTO 原话(厂商案例集内)
最后核验
2026-10-01

避坑 共识延迟加在每一个健康日 —— 多活是按天付税的

一句话
为"region 挂掉也能活"付出的跨地域 Raft 共识延迟,加在每一次健康日的写入上;默认可串行化还要求应用处理事务重试——这是选型前必须接受的物理现实。
窄场景
单 region、低延迟 OLTP(<10ms 写入 SLA);应用层没有实现幂等/重试、不想为"理论上正确"的重试逻辑买单的团队最容易中招。
机制
同步多活的写 = 跨地域 Raft quorum 确认,延迟下限是光速(跨洲 100ms+ 级),与 region 是否健康无关。叠加默认 serializable:读写冲突导致事务重试是常态,应用必须实现重试循环与幂等——这是从 PG/MySQL 迁来的团队最不适应的心智变化。
生产验证
Build & Learn 独立博客(2026-08)PG vs CockroachDB 对照:region 生存能力的延迟税是持续的、不是只在故障时付(https://medium.com/@BuildAndLearn/postgresql-vs-cockroachdb-surviving-a-region-failure-added-latency-to-every-healthy-day-4cc1a2f4aaeb)。
竞品差距
PG/单机 MySQL 同城/单 AZ 写入延迟低一个数量级、无强制重试心智;YugabyteDB 同样付共识税(分布式 SQL 的通病)。多活生存性与低延迟写入不可兼得——CockroachDB 的诚实之处是把 serializable 做成默认,逼你在选型第一天就面对这个 trade-off,而不是生产第三年。
证据等级
独立博客(机制分析)+ 社区共识
最后核验
2026-10-01

用户最买账的 5 点

  1. 正确性口碑(Jepsen 背书 + 默认 Serializable) 为什么是真的:2021 年 Jepsen 测试通过 + 默认最高隔离级别,金融/账务类团队把"不出错"排第一时,这是架构级信任状。 边缘与限度:正确性的对价是延迟(Raft 共识)和重试(40001);Jepsen 2021 距今已 5 年,版本差了十几代,口碑需要新版本的持续验证来续费。 来源:jepsen.io 报告(第三方,2021);社区共识。观察版本:v21.x 时代报告,v26.3 现状待新证据
  2. 多地域/全球部署是真本事 为什么是真的:REGIONAL BY ROW + survival goals + follower reads 是一套完整的多活原语,不是"主从+中间件"的拼凑;eu-west 5ms / ap-south 7ms 提交(第三方 2026 实测口径)说明行级地域亲和确实能把延迟做进个位数毫秒。 边缘与限度:个位数毫秒只属于"数据和人都对齐了地域"的 workload;跨地域写同一行/同一事务照样付 WAN 税;GLOBAL 表写放大的账要单独算。 来源:Medium 第三方工程分析(2026-08);官方 skills。观察版本:v26.x
  3. 弹性扩展:加节点就行,不用分库分表 为什么是真的:Range 自动分裂/搬迁,扩容是在线操作,应用无感知——这是"分布式"三个字最实在的落地。 边缘与限度:扩容期的数据搬迁吃 IO/网络,高峰扩容等于给飞行中的飞机换引擎;以及大多数业务 3 年都用不满 3 节点,为用不上的扩展性付运维税是常见误用。 来源:社区共识 + 官方文档。观察版本:全版本
  4. PG 生态接入摩擦小 为什么是真的:wire 协议兼容让现有 PG 驱动/ORM/工具链(psycopg2、SQLAlchemy、Hibernate…)基本直连,团队学习曲线平缓。 边缘与限度:见深水区四——省的是连接层重写,不是零改造;pg_stat_statements 不可用意味着现有 PG 监控/慢查询工具链要换。 来源:官方兼容文档(v26.3);Storj 历史迁移案例。观察版本:v26.3
  5. 原生 CDC(Changefeed)对数据工程友好 为什么是真的:CREATE CHANGEFEED INTO 'kafka://...' 原生进 Kafka,无需 Debezium/JVM/复制槽;resolved timestamp 让下游(Iceberg/Delta/Snowflake)把 at-least-once 转成 exactly-once 摄入;Avro 模式下 schema 演进自动。 边缘与限度:企业级 CDC 多在付费墙内;at-least-once 语义要求下游必须做幂等/去重设计;大事务的 changefeed 延迟与开销要单独压测。 来源:Medium 第三方数据工程分析(2026-08)。观察版本:v26.x,tier 边界待官方复核

吐槽清单

分类吐槽影响版本状态
性能坑跨地域/跨节点写延迟高:共识开销是架构税,单地域 commit 约为单机 PG 的 1.5–3×(第三方口径)全版本open
性能坑单 key/顺序键写热点无法靠 Range 分裂解决,多数节点空闲但吞吐封顶全版本open(设计约束,靠建模规避)
性能坑热点冲突下 40001 / restart transaction 抛给应用,重试风暴放大尾延迟全版本open(v23.2+ 有 READ COMMITTED 可选,缓解非全治)
性能坑大删除/重更新后 tombstone + MVCC 旧版本导致读放大、磁盘水位涨,GC/compaction 跟不上就毛刺全版本open
运维坑证书管理繁琐:过期需全量重签 CA/节点/客户端证书并重启(社区原话"horrible")全版本open
运维坑版本火车快(一年多代),finalize 后不可回退,升级=日常操作,跟不上就掉队v23+open
运维坑长事务 pin 住 MVCC 版本拖慢 GC,一个忘了关的事务能拖累全库全版本open(运维规范规避)
兼容坑session-scoped advisory locks 不支持(Authentik 跑不起来);FDW、触发器、存储过程、LISTEN/NOTIFY、SEQUENCE 缺失v26.3open
兼容坑pg_stat_statements 不可用,PG 监控工具链迁移有缺口全版本open
授权坑许可证三年三变(Apache→BSL→Software License),2026 年新版本源码转私有,"开源"叙事终结2024+ / 2026open
成本坑Cloud RU 计费抽象,真实 workload 下账单难预测;跨地域复制三处重复花钱全版本open
生态坑中文资料少,中文社区实践帖远少于国产分布式库全版本open

判决

  • 一句话定位:为"全球多活 + 强一致"而生的分布式 SQL;单地域小库用它是大炮打蚊子,跨地域核心系统用它是同类里完成度最高的选择之一——前提是你接受它的许可证现实和延迟物理。
  • 适合谁:
    • 多地域/全球化业务的 OLTP 核心系统(用户和数据天然分区,如 SaaS、跨境、IoT 平台)
    • 金融/账务类对正确性零容忍、愿意为 Serializable 付延迟税的系统
    • 数据量持续增长、希望永远不做分库分表的团队
    • 需要原生 CDC 进湖仓(Kafka→Iceberg/Delta)的数据工程团队
    • 年收入 <$10M、想白嫖 Enterprise 能力的中小团队(以合同口径为准)
  • 不适合谁:
    • 单机 PG/MySQL 就能扛住的业务(延迟、运维、授权三重税白付)
    • 重度依赖 PG 触发器/存储过程/advisory locks/FDW/扩展生态,且不愿做兼容 POC 的团队
    • 需要源码级自主可控(信创/强监管)或对"闭源化"趋势敏感的组织
    • 预算敏感且 workload RU 难预测、又不想做计费影子测试的团队
    • 团队无专职 DBA/运维,又想"装完不管"(证书、NTP、升级、GC 都是活)
  • 迁移成本:
    • MySQL → 中高:无 MySQL 协议,走应用层改造;事务语义(Serializable vs REPEATABLE-READ)差异大;递增主键习惯必须改
    • PostgreSQL → 低-中:协议/驱动层摩擦小;但触发器、存储过程、advisory locks、FDW、扩展、pg_stat_statements 等缺口需逐项 POC;默认隔离级别差异要全回归
    • Oracle → 高:无 Oracle 兼容路线,不建议作为"去 O"目标

来源与待验证清单

  • 版本与发布:第三方 2026 报道(v26.3 GA 约 2026-08-19;v26.2.4 自托管 GA 2026-07-16);官方兼容文档已覆盖 v26.3;官方新闻稿(v25.4 为维护版本 2026-02;Continuum 2026-01)
  • 许可证演变:官方博客(2024 licensing update;2026 source-code-protection);SDTimes、The Register 2024 报道
  • 架构机制:官方 design.md、range-merges tech note、follower reads / non-blocking txns RFC、旧版存储加密 RFC;cockroach start --enterprise-encryption 文档(v24.2)
  • 多地域:cockroachlabs 官方 skills(survival goals / REGIONAL BY ROW);第三方 2026 分析(延迟实测、PG 对比)
  • 兼容缺口:官方 postgresql-compatibility(v26.3);Authentik 社区 spike(advisory locks);Storj 历史迁移案例
  • 运维实操:社区 ops handbook(rolling upgrade、证书);rancher helm chart(preserve_downgrade_option);官方 university skill(全集群恢复需 enterprise license);官方 skills CIS 审计样例(audit settings、OIDC、SCRAM)
  • 云与计费:官方 docs cloud releases(Basic/Standard/Advanced;Serverless→Basic 更名 2024-09-25);TechTarget 2024(历史价);2026 第三方部署指南(Basic benefit,待官方复核)
  • 吐槽采集:HN 历史讨论(2019,tombstone/延迟);社区性能复盘
  • 下次评审必查:官方 v26.3 release notes(确认补丁号与 GA 日期);v26.3 加密/WAL覆盖边界;审计/SSO/备份的 tier 矩阵;Cloud 2026 现价;cluster.preserve_downgrade_option 与跳版本规则的官方口径;READ COMMITTED 在 v26.3 的默认与语义