◈ DB 选型参考

场景案例库

真实世界的选型故事:选了什么、结果如何、机制层面的根因是什么。我们从错误里学习。

提醒:高频最优解是“不换库”——很多案例的教训不是换一款数据库,而是把当前架构用对。先看案例,再看产品档案里的“客户经验”。

决策阶段
数据库
关系型 OLTP
KV · 宽列 · 文档
OLAP
AI 数据库
场景

找到 196 个案例

6ix:MongoDB Atlas 迁往 PlanetScale Postgres 失败教训

成本敏感 读多写少 快速迭代/小团队 查询性能
场景
金融数据平台 6ix,400 万文档 / 54GB 数据,28 TPS 且 99.9% 是读;早期为灵活 schema 选用 MongoDB Atlas。(http://6ix.com/post/mongodb-atlas-to-planetscale-postgres-migration,公司博客单一信源)
决策
迁往 PlanetScale 的 Serverless Postgres(按 postgresql 产品计),把查询重写为 SQL。
结果
账单从 $5,749/月降到 $1,149/月(约 5 倍成本差);最热页面查询从 530ms 降到 9ms;据称一天内完成迁移(含 AI 辅助)。以上数字均为 6ix 公司博客单方口径,无第三方验证,"一天完成迁移"尤其只有单方说法。
机制根因
在 6ix 的具体数据模型、查询、索引与 Atlas 计费配置下,迁移后 SQL 侧表现更好、账单更低。但这是单一样本的结论,不可推广:MongoDB 官方文档明确列出了聚合管道的重排、合并、索引利用、slot-based 执行等优化能力,不能从这一个 54GB / 28 TPS / 99.9% 读的应用推出"MongoDB 聚合管道优化器成熟度不如 SQL"的普遍规律。Atlas 按量计费对小团队是重税;多一套查询语言("Mongoose 税")是持续认知成本;Serverless Postgres 的连接池 + 分支模型对小团队更友好。
教训
读多写少的中小规模场景,文档库的灵活性收益可能被成本、查询性能与运维心智税吃掉;选型要把"账单结构"和"查询语言成熟度"计入硬指标,而不只看数据模型灵活。

相关产品:PostgreSQL(社区版)、MongoDB 相关能力:MVCC + 查询优化器 + 事务性 DDL —— 复杂分析直接跑在 OLTP 主库上、Atlas:"set it and forget it" 的托管口碑 最后核验:2026-10-01

Airbnb:数百个 Aurora 实例合并为 TiDB,重建数据服务层(2023–2024) 成功经验

分片治理 数据库整合 成本优化 OLTP 扩展
场景
Airbnb 的在线数据服务层长期跑在 Amazon Aurora(MySQL)上,随着业务扩张形成数百个 Aurora 实例(注意是实例 instances,不是集群——PingCAP 原文为"hundreds of Amazon Aurora instances"),配合应用层手动分片承载写入流量。分片越多,每次 MySQL 版本升级、故障排查和容量规划的运维工作量成倍增加。据 PingCAP 官方资料称,其数据服务层原本由"hundreds of Amazon Aurora instances and application-layer sharding"支撑("数百个"为 PingCAP 口径,具体实例数/QPS 未找到公开数据)。(https://static.pingcap.com/files/2024/11/18200414/TiDB_Amazon_Aurora_Datasheet.pdf)
决策
Airbnb 决定不再维持"分片 Aurora 舰队",把整个数据服务层重建在 TiDB(分布式 SQL、MySQL 协议兼容)上,目标是把分散的 KV 数据存储收敛成单一可信数据源。Airbnb 工程师在 2023 年 9 月 HTAP Summit 上公开分享了这一实践。选型逻辑:既然不能回到单机,就换一个自带自动分片、多写节点的分布式数据库,把分片逻辑从应用层下沉到数据库层。
结果
PingCAP 官方 datasheet(2024 年 11 月版)宣称,通过数据库整合 Airbnb 降低了 60% 的数据库成本——该数字为 PingCAP 厂商口径,Airbnb 官方工程博客未披露对应数字,也未找到第三方独立复现,引用时须注明口径。迁移前后的 QPS、数据量、迁移耗时、TiDB 集群规模等数字未找到公开数据。
机制根因
PingCAP 披露的迁移动因有四条:强制 MySQL 升级(Aurora 的升级窗口和节奏由云厂商控制)、缺乏数据库可观测性、写扩展能力有限、技术支持不佳。根因是架构模型差异:Aurora 本质是"单写 + 只读副本"的增强型单机模型,写入上限就是一台最大实例的上限;超过这个点只能靠应用层分片,而分片把一致性、重分片、DDL 等复杂性全部推给业务层,运维税随规模线性增长。TiDB 是多写分布式 SQL,自动分片 + Raft 复制把复杂性收回数据库内部——合并之后成本反而下降(实例数减少 + 释放业务层的分片代码维护人力)。代价是引入新数据库的迁移风险与团队学习成本,以及把鸡蛋放在一个新兴分布式系统的集中度风险。
教训
应用层分片不是免费的,早期省下的架构成本会在版本升级、故障排查、扩容上以数倍奉还;当实例数以百计、应用层分片代码成为主要运维负担时,就是认真评估换架构的信号(经验法则,不是定律);把云厂商托管数据库的"强制升级节奏"计入 TCO,它不只是停机窗口,更是对所有分片逐一验证的隐性人力成本;数据库整合本身就是一种降本,分布式 SQL 的价值不只是写更快,而是把舰队式管理变成单一集群管理。
来源
  1. PingCAP 官方 datasheet《TiDB: The Most Scalable Amazon Aurora Alternative》(2024 年 11 月版,厂商口径) https://static.pingcap.com/files/2024/11/18200414/TiDB_Amazon_Aurora_Datasheet.pdf
  2. Airbnb 工程博客《How We Partitioned Airbnb's Main Database in Two Weeks》(2016) https://medium.com/airbnb-engineering/how-we-partitioned-airbnb-s-main-database-in-two-weeks-55f7e006ff21

相关产品:Amazon Aurora、MySQL 相关能力:日志即数据库(log is the database)—— 存储计算分离的"真"实现 最后核验:2026-10-01

支付宝去 O:双十一做验证场的分布式替换(2010s) 成功经验

金融级事务 强一致 去 O 高并发写入
场景
双十一支付峰值场景,金融级事务、强一致、水平扩展三重要求叠加,传统单机 Oracle 无法同时满足。以下基于 2026-09 新浪财经转述(非蚂蚁官方口径):"支付宝核心流量运行于 OceanBase"的表述按该媒体报道口径引用,蚂蚁官方未在该报道中披露同等细节。(https://finance.sina.cn/stock/jdts/2026-09-07/detail-iniqymaa6344446.d.html)
决策
采用 OceanBase 分布式关系库替换 Oracle。
结果
双十一连续十年以上作为验证场。以下量化数字均为 2026-09 媒体文章转述口径,非官方:TPC-C 7.07 亿 tpmC(媒体称打破 Oracle 九年纪录);Oracle 兼容 95%+;TNGD 案例同等硬件吞吐 +40%、4 万 TPS 压测零宕机;GCash 案例存储 −70%、成本 −40%。注意 TPC-C 是标准化基准,说明的是基准条件下的事务处理能力,不证明应用兼容性、真实查询/事务分布、迁移风险与故障恢复表现。
机制根因
分布式事务协议(2PC/Paxos 系)的正确实现是"去 O"的前提——用对协议不等于实现、运维与故障处理都正确,选型要看故障注入和恢复的工程证据,不能把"用了 Paxos"当成正确性证明;Oracle 高兼容大幅降低迁移成本;用真实业务峰值(双十一)做验证场而非实验室基准。
教训
金融级去 O 的核心公式 = 分布式事务正确性 + 高兼容降迁移成本 + 真实峰值验证;媒体与厂商的基准数字一律打折看,选型时盯住"压测零宕机"这类工程指标。
来源
  1. 新浪财经转述(2026-09

相关产品:Oracle Database(甲骨文)、OceanBase 相关能力:ELR(Early Lock Release)热点行更新、MySQL / Oracle 双模式兼容 最后核验:2026-10-01

拜耳:Field Answers 从自建 PostgreSQL 迁至 AlloyDB,收获季峰值平稳通过 成功经验

同构迁移 读扩展 季节性峰值 零应用改动
场景
拜耳作物科学(Bayer Crop Science)的 Field Answers 平台:收集并计算全球田间与温室运营中数十亿条观测数据(地图、表型观测、卫星影像、天气与土壤分层),支撑 R&D 管线中的选种、生产成本优化等决策。原架构是自建开源 PostgreSQL:主写节点既要承担写操作,又要负责向读节点复制变更。为新市场版块上线做压测时发现:写流量与读节点数双涨之下,主节点会成为瓶颈、复制延迟恶化,自建 PG 满足不了延迟与吞吐要求。
决策
选择 AlloyDB for PostgreSQL。关键动因是 PG 兼容——零应用代码改动即可迁移,能赶上迫在眉睫的北美种植季;Google Cloud 团队在测试期提供支持兜底。数据战略延续 data mesh 思路:AlloyDB 负责在线数据,分析侧仍走 BigQuery。
结果
并行压测中,更小规格的 AlloyDB 实例相比原 PG 方案平均响应时间降低超 50%、吞吐提升 5 倍(拜耳 Global Data Assets 团队口述,经 Google Cloud 官方博客发布,属厂商渠道口径,引用须注明)。真正的考验是随后到来的首个收获季——农业的季节性决定了"晚几天就可能让产品上市推迟一整年",收获季平稳通过。AlloyDB 的"所有节点读同一份存储"架构让读流量扩展不再冲击主库,复制延迟保持低位。
机制根因
自建 PG 的读扩展走流复制,主库承担"写 + 复制源"双职责,读节点越多主库压力越大——这是 PG 读扩展的经典天花板。AlloyDB 存储计算分离后,计算节点(含读池)都从同一份分布式存储读数据,读扩展不再经过主库复制,主库只负责写。这是"PG 前端 + 自研存储层"架构(与 Aurora 同路线)带来的直接红利;PG 线协议兼容则让迁移零应用改动。
教训
主库身兼"写 + 复制源"是 PG 架构读扩展的第一瓶颈,压测时要同时压"写涨 + 读节点涨"双维度;季节性业务的 deadline 是硬性的——把"收获季/播种季"写进迁移排期,PG 兼容带来的零改动迁移是赶 deadline 的关键;上云后第一件事仍是重新核定规格(拜耳用更小实例跑出更好成绩,超配可以直接砍掉)。
来源
  1. Google Cloud 官方博客《Bayer uses AlloyDB》 https://cloud.google.com/blog/products/databases/bayer-uses-alloydb

相关产品:Google AlloyDB(AlloyDB for PostgreSQL)、PostgreSQL(社区版)、Google BigQuery 相关能力:HN 祛魅 —— "它就是 Aurora 路线:PG 前端 + 自研存储层" 最后核验:2026-10-02

Character.AI:迁至 AlloyDB 后查询量 5 倍、延迟减半,Spanner 扛下海量摄入 成功经验

生成式 AI 读扩展 爆发式增长
场景
Character.AI 生成式 AI 平台用户与流量爆发式增长,平台的可扩展性与可靠性承压。AI 对话类应用的查询模式是"高并发、延迟敏感",传统单体 PG 架构下查询量与延迟难以兼得。
决策
把在线查询库迁移到 AlloyDB;同时用 Cloud Spanner 承担每天 TB 级的数据摄入,走"AlloyDB 服务查询、Spanner 扛摄入"的分工。配套使用 Cloud Run、BigQuery、GKE、TPU/GPU 等 Google Cloud 服务。
结果
迁移到 AlloyDB 后,查询量达到原来的 5 倍,查询延迟减半(Google Cloud 官方 YouTube 频道发布,属厂商渠道口径,引用须注明)。Spanner 每天可靠摄入 TB 级数据。
机制根因
AlloyDB 的读扩展不走主库复制而走共享存储,读池可横向加节点扛查询洪峰;PG 兼容让迁移平滑。写入侧则交给为全球一致与海量写入设计的 Spanner——"查询与摄入解耦"是这套架构成立的关键,各自用最擅长的引擎。
教训
AI 应用的流量是脉冲式的,选型先看"读扩展是否经过主库";单一数据库包打天下不如按读写特征分工(查询库 + 摄入库);本案例数字来自厂商渠道,生产选型时应以自己的压测为准。
来源
  1. Google Cloud 官方 YouTube《How Character.ai uses Google Cloud databases to scale its growing Gen AI platform》 https://www.youtube.com/watch?v=Vb6C7rjV6FA
  2. Google Cloud 官方博客《Discover New Gen AI Google Cloud Database Capabilities》 https://cloud.google.com/blog/products/databases/discover-new-gen-ai-google-cloud-database-capabilities

相关产品:Google AlloyDB(AlloyDB for PostgreSQL)、Google Spanner 相关能力:HN 祛魅 —— "它就是 Aurora 路线:PG 前端 + 自研存储层" 最后核验:2026-10-02

CME:全球最大衍生品交易所从 Oracle 转向 AlloyDB,Omni 做混合云垫脚石 成功经验

去 O 迁移 混合云 金融合规
场景
CME Group(芝加哥商品交易所集团)是全球领先的衍生品交易所,客户交易期货与期权,覆盖几乎所有可投资资产类别:交易吞吐极高,对正常运行时间与可用性的要求极为严苛。核心系统长期跑在传统专有数据库(Oracle)上,许可成本与技术债双重压力。
决策
把"最严苛的企业级负载"交给 AlloyDB,从 Oracle 向 AlloyDB 迁移数个数据库(2023 年 10 月 Google Cloud Next 公布时迁移进行中);同时用可下载的 AlloyDB Omni 在本地先做现代化改造——不把客户承诺置于风险中,云之旅分步走。
结果
CIO Sunil Cutinho 公开背书:"AlloyDB 给了我们需要的性能与扩展性;AlloyDB Omni 让我们在维持客户承诺、支撑最关键传统负载的同时,开始向 Google Cloud 现代化与迁移。"(Google Cloud 官方博客发布,属厂商渠道口径;迁移为进行中状态、非完成态,引用须注明。)
机制根因
Omni 与云端 AlloyDB 是同一引擎的可下载版,本地现代化改造的应用"零改动"即可跑在云端 AlloyDB 上;PG 兼容大幅降低去 O 的 SQL/存储过程改写成本。强监管下"数据不能离境"不是不现代化的理由——先在本地换引擎,再迁云。
教训
金融级去 O 迁移的正确姿势是分步:Omni 做本地 in-place 现代化(合规边界内),云端 AlloyDB 做终态;选型时区分"引擎能力"与"部署形态",Omni 脱离 GCP 生态后差异化会减弱(见相关能力卡),终态仍应锚定云端;进行中的迁移案例引用时必须标注状态,不可写成"已完成"。
来源
  1. Google Cloud 官方博客《Downloadable edition of AlloyDB that runs anywhere》 https://cloud.google.com/blog/products/databases/run-alloydb-anywhere
  2. Google Cloud 官方博客《Helping developers build Gen AI apps with Google Cloud PostgreSQL databases》 https://cloud.google.com/blog/products/databases/helping-developers-build-gen-ai-apps-with-google-cloud-databases

相关产品:Google AlloyDB(AlloyDB for PostgreSQL)、Oracle Database(甲骨文) 相关能力:HN 祛魅 —— "它就是 Aurora 路线:PG 前端 + 自研存储层" 最后核验:2026-10-02

Endear:Cloud SQL 长大后扛不住,迁 AlloyDB 一年实现连接数与 TPS 双 6 倍 成功经验

同构迁移 零停机切换 连接数扩展
场景
Endear 是全渠道零售 CRM 平台,聚合电商平台、POS、营销、客服、忠诚度等多源客户数据,做实时个性化与客户洞察。早期选 Cloud SQL(贴合当时的工作负载与预算),业务长大后"长大了穿不下":CPU、内存、连接数相继耗尽。选型评估了 CockroachDB(可扩展但价格结构长期更贵)、Spanner(强一致与水平扩展很强)、Bigtable(分析吞吐高),最终 AlloyDB 在性能、成本、灵活性、运维简单度上综合最优。
决策
Google Cloud Database Migration Service 做 Cloud SQL 到 AlloyDB 的持续复制(在 Cloud SQL 建复制槽、实时同步防丢数据);PgBouncer 做连接层,切换时只换密钥管理中的连接串,应用零停机;上线前做足性能压测验证新库扛得住。
结果
一年后:连接数 6 倍(从单个 PgBouncer 池约 400–500 连接,涨到三个池、平均每池近 1000 连接)、TPS 6 倍(从约 1500 涨到主库峰值 5000、读集群 10000)、P99 聚合查询延迟低于 10 毫秒(Endear 团队口述,经 Google Cloud 官方博客发布,属厂商渠道口径,引用须注明)。
机制根因
DMS 基于 PG 原生复制的持续同步是"零停机"的底气——先实时跟上、再一次性切换;PgBouncer 把"换数据库"与"改应用配置"解耦,切换的是连接串而非应用;AlloyDB 读集群独立扩展后,读流量不再挤占主库。连接数先爆、TPS 后爆是 CRM 类聚合写入场景的典型顺序——连接池先于计算成为瓶颈。
教训
先爆的往往是连接数不是 TPS,压测要压连接;PgBouncer + 密钥切换是 PG 系零停机迁移的标配,值得提前预埋;选型时把"三年后的价格曲线"算进去——CockroachDB 就是输在长期成本结构上;小团队别为"未来可能需要的全球一致"提前买 Spanner,为真实负载选型。
来源
  1. Google Cloud 官方博客《Endear seamlessly integrates vast data sources with AlloyDB》 https://cloud.google.com/blog/products/databases/endear-seamlessly-integrates-vast-data-sources-with-alloydb

相关产品:Google AlloyDB(AlloyDB for PostgreSQL)、PostgreSQL(社区版)、CockroachDB、Google Spanner 相关能力:HN 祛魅 —— "它就是 Aurora 路线:PG 前端 + 自研存储层" 最后核验:2026-10-02

Lucius AI:一人公司用 AlloyDB 一库三用,ScaNN 索引让语义搜索快 47 倍 成功经验

向量检索 AI 运维 一人公司
场景
Lucius AI 是招标情报创业公司,平台覆盖英国、欧盟、印度、澳大利亚等五大洲 21 万+条招标信息,每晚从 13 个公共采购源摄入数据;两个生产区(欧洲、澳洲各一个 AlloyDB 集群,澳洲集群用客户管理加密密钥服务国防相关客户)。整个公司只有一个运营者,没有专职 DBA 与数据工程团队。关系型招标目录、审计日志、向量 embedding 原本需要关系库、向量库、日志库三套系统。
决策
AlloyDB for PostgreSQL 一库三用——关系型目录、文档元数据、审计日志、向量 embedding 全放同一引擎;语义搜索从"无索引暴力向量比对"迁到 ScaNN 索引;用开源 MCP Toolbox for Databases(alloydb-postgres 预置服务)把 AI agent 接进来做日常运维,权限严格最小化。
结果
代表性生产查询从 1.14 秒降到 24 毫秒,语义搜索快 47 倍(Google Cloud 官方博客发布,属厂商渠道口径,引用须注明);语义索引重建:11.58 万条记录用 Gemini embedding 模型 10.6 分钟完成,API 花费约 3 美元,此后由 AlloyDB 自动 embedding 保持向量新鲜;库内 ai.rank 重排平均延迟 77 毫秒,无需独立重排微服务;AI agent 在最小权限下承担查询分析、数据新鲜度检查、事故取证(一次外部安全探测后,agent 几分钟内从审计日志还原出请求时间线)。
机制根因
ScaNN 是 Google 自研近似最近邻检索(Search/YouTube 同款技术),相对暴力比对的加速可达两个数量级(近似检索相对精确搜索的典型量级,取决于召回率要求);向量与业务数据同库带来统一备份计划与统一身份管理;MCP 侧 agent 使用专用 PG 角色(全库 SELECT + 单运维表 UPDATE,DROP/DELETE/TRUNCATE 直接禁用),把"AI 操作数据库"的爆炸半径关进笼子。另已启用列存引擎自动列存:40 个高频查询列一天内进入内存,报表查询加速而无需第二套分析库。
教训
向量库不是必选项——向量与业务数据同库能省掉一套系统的运维、备份与身份管理;一人公司可以用 AI agent 当 DBA,但前提是最小权限 + 破坏性操作只留给人类;语义搜索"先跑通(暴力比对)、再建索引"是务实路径,索引建议本身都可以由 agent 在自动化性能审计里提出来。
来源
  1. Google Cloud 官方博客《Solo founder runs a global tender platform on AlloyDB and MCP》 https://cloud.google.com/blog/products/databases/solo-founder-runs-a-global-tender-platform-on-alloydb-and-mcp

相关产品:Google AlloyDB(AlloyDB for PostgreSQL) 相关能力:Vertex AI + ScaNN 向量 —— Google AI 生态红利 最后核验:2026-10-02

Regnology:合规报告 chatbot 用 AlloyDB 做动态向量库 成功经验

RAG 企业知识库 合规
场景
Regnology(监管科技公司)的合规报告 chatbot:需要理解复杂的监管术语、回答多样化的监管报告问题;grounding 数据是法规指南库、合规文档与历史报告数据。金融合规场景对"回答可溯源"要求高,向量检索的召回质量直接决定 chatbot 可用性。
决策
用 AlloyDB 做动态向量库,索引法规指南、合规文档与历史报告数据,把 RAG 的检索底座放在业务数据库里,而非另起专用向量库。
结果
合规分析师与报告专员以对话方式与 chatbot 交互,"节省时间、应对多样化的监管报告问题"(CIO Antoine Moreau 口述,经 Google Cloud 官方博客发布,属厂商渠道口径,引用须注明)。本案例公开细节较薄——仅一条 CIO 引言,无延迟/召回/规模数字,证据等级为"厂商渠道单引言",引用时不可脑补数字。
机制根因
AlloyDB AI 的向量能力(ScaNN 近似最近邻 + Vertex AI 闭环)让"embedding 生成—存储—检索"在 SQL 内闭环;向量与业务数据同库,合规文档的权限管控可以复用数据库已有的身份体系,这对金融合规是加分项。
教训
企业 RAG 不一定需要专用向量库——当召回延迟要求在几十毫秒量级、且文档权限需与业务数据一致时,同库向量是更省事的方案;但"一句话案例"的证据权重低,选型时应要求可复现的延迟/召回数字;金融合规场景下,向量库的权限模型与审计能力应与检索性能同等评估。
来源
  1. Google Cloud 官方博客《Discover New Gen AI Google Cloud Database Capabilities》 https://cloud.google.com/blog/products/databases/discover-new-gen-ai-google-cloud-database-capabilities

相关产品:Google AlloyDB(AlloyDB for PostgreSQL) 相关能力:Vertex AI + ScaNN 向量 —— Google AI 生态红利 最后核验:2026-10-02

SEEBURGER:集成平台 BIS 落子 AlloyDB,全球物流枢纽零代码改动上线 成功经验

SaaS 底座 零代码改动 全球部署
场景
SEEBURGER BIS Platform 是有 35 年历史的集成平台(iPaaS),提供 B2B/EDI、托管文件传输、应用集成、API 管理等能力,全球 14000+ 客户每天依赖它做集成,背后是数十亿美元的贸易额。其客户之一是服务 120 多个国家的全球物流与航运网络枢纽,对集成基础设施的可靠与可扩展要求极高。
决策
把 BIS 平台的云数据库选为 AlloyDB for PostgreSQL。五条选型标准:企业级特性(免运维杂活)、事务与分析混合负载能力、高可用、开发者效率(全托管 + 开放标准)、成本与部署灵活性(Omni 支持非 GCP 部署,避免锁定)。BIS 本就支持 PostgreSQL,AlloyDB 的 PG 兼容让采用零代码改动。
结果
"迁移到 AlloyDB 极其顺滑,我们一行代码都不用改,立刻看到了巨大的性能提升。它是我们最关键业务部署的完美平台。"——Ronald Heckendorff,SEEBURGER 集成架构总监(Google Cloud 官方博客发布,属厂商渠道口径,引用须注明)。物流枢纽客户的 iPaaS 方案上线后运营加速、全球服务提速,搭建与测试"没有任何问题或改动"。
机制根因
PG 线协议与 SQL 兼容是零代码改动的直接原因——应用层感知不到数据库换了;存储计算分离带来"更大部署的扩展性";Omni 的可下载形态给了 ISV"多云/本地都能交付"的灵活性,这是传统全托管云数据库给不了的。优化过的 vacuum、极低的复制延迟、自适应资源管理则砍掉了运维杂活。
教训
ISV 把数据库作为产品底座时,"PG 兼容 = 零迁移成本"是最硬的选型论据之一;多云交付的 ISV 应把"能否脱离单一云部署"列为必选项(Omni 正是为此存在);平台厂商的证言比终端客户更稀缺——它证明的是"作为底座"的可靠性,而不只是一次迁移。
来源
  1. Google Cloud 官方博客《SEEBURGER BIS on AlloyDB: Secure, scalable integration service》 https://cloud.google.com/blog/products/databases/seeburger-bis-on-alloydb

相关产品:Google AlloyDB(AlloyDB for PostgreSQL)、PostgreSQL(社区版) 相关能力:HN 祛魅 —— "它就是 Aurora 路线:PG 前端 + 自研存储层" 最后核验:2026-10-02

Amazon 去 O:75PB、7500 个 Oracle 库的拆分 失败教训

成本敏感 去 O 高可用 多地域
场景
Amazon 消费者业务的电商核心交易链路,承载 75PB 数据、近 7500 个 Oracle 数据库、100 多个消费者服务,历史上重度依赖 Oracle(即使已拿到重度折扣价)。(https://aws.amazon.com/es/blogs/aws/migration-complete-amazons-consumer-business-just-turned-off-its-final-oracle-database/)
决策
不做一对一替换,而是按访问模式拆分:DynamoDB 扛低延迟 KV、Aurora/RDS 扛事务、Redshift 扛分析,各团队按自身访问模式自选目标库。
结果
AWS 口径成本 −60%(已是在 Oracle 重度折扣价基础之上)、延迟 −40%、DBA 运维开销 −70%,基本零停机完成。上述数字均为 AWS 单方口径,无独立第三方验证。(https://techcrunch.com/2019/10/15/amazon-migrates-more-than-100-consumer-services-from-oracle-to-aws-databases/)
机制根因
单一巨型 RDBMS 承担所有访问模式时,license 成本与供应商锁定的运维代价被均摊到每笔交易上;purpose-built 拆分后,每种负载落到更匹配的架构(KV/文档/关系/列式各归其位),成本结构从根本上改变。
教训
去 O 的真正成本不是"换哪个兼容库",而是"一个数据库打天下"时 license + 锁定的隐性税;拆分后让一线团队按访问模式自选目标库,比顶层统一指定的成功率高。

相关产品:Oracle Database(甲骨文)、Amazon DynamoDB、Amazon Aurora、Amazon Redshift 相关能力:授权 FUD —— "换到通用云要双倍 license"是人为商业壁垒、Serverless 零运维:流量不可预测时"先跑起来"的最短路径、日志即数据库(log is the database)—— 存储计算分离的"真"实现、RA3 存算分离 + 预留价:AWS 锁定团队的成本最优解 最后核验:2026-10-01

Apple 的 Cassandra 舰队(2021):16 万实例、100PB、1000+ 集群 成功经验

超大规模 写密集 多集群 去中心化
场景
Apple 是全球最大的 Cassandra 部署者:据 Apache Cassandra 项目 2021 年 4.0 发布公告,Apple 运行着 160,000+ 个 instances、100PB+ 数据、1000+ 个集群(公告原文为 instances,未明确指节点/进程/部署实例,按原文引用,不做解读)。(https://rss.globenewswire.com/news-release/2021/07/27/2269647/17401/en/The-Apache-Cassandra-Project-Releases-Apache-Cassandra-v4-0-the-Fastest-Most-Scalable-and-Secure-Cassandra-Yet.html)业务以写密集的海量小记录为主,跨数据中心、高可用是硬要求,单点架构早已出局。
决策
把 Cassandra 作为大规模在线存储的默认选项长期投入;不追求少数巨型集群,而是拆成上千个中小集群,每个业务独立集群、独立爆炸半径。
结果
按 Apache 官方公告口径(2021-07),160,000+ instances、100PB+ 数据、1000+ 集群,是已知全球最大 Cassandra 舰队。该数字适合说明部署规模,不适合推断单集群扩展能力。
机制根因
无主对等架构 + LSM 追加写,让写吞吐随节点数接近线性增长(在该写密集小记录负载下;实际线性度取决于复制因子、一致性等级、网络拓扑与运维水平);tunable consistency 让每个业务按需在延迟与一致性之间选点;"多小集群"而非"少数大集群"的组织方式,把 gossip、repair、compaction 的运维复杂度锁在单个集群内部——规模化的真正敌人不是节点数,而是单个故障域的半径。
教训
写密集 + 可接受最终一致的场景,Cassandra 的扩展性在该场景成立,但"线性"二字要打折——取决于复制因子、一致性等级与运维;运维策略上要用"多小集群"控制爆炸半径,而不是把鸡蛋放在几个大集群里。选型时不仅要看单集群上限,还要看"舰队模式"下的运维成本曲线。
来源
  1. Hacker News 社区讨论(多小集群与爆炸半径分析) https://news.ycombinator.com/item?id=33124631

相关产品:Apache Cassandra / ScyllaDB 相关能力:LSM 追加写:吃下"写多读少、只追加"的消息流 最后核验:2026-10-01

Capital One:PoC 验证 Aurora Global Database 故障切换后,仍为多活需求选了 DynamoDB(2020–2021) 失败教训

多活架构 选型决策 跨区容灾 反例
场景
Capital One 某团队的应用跑在美东/美西双区 active-active,服务层故障切换几乎瞬时,唯独 PostgreSQL 主库跨区切换要 10–15 分钟(把异区只读副本提升为主库再切流量)。现代应用期望零停机,数据库成了整条弹性链路上的短板。团队只考虑 AWS 托管方案(不想自己运维数据库),列出三个候选逐项对比。
决策
① Aurora Global Database:优点是跨区故障切换 1 分钟内(AWS 口径 RPO 1 秒、RTO 小于 1 分钟),团队还专门做了 PoC,"切换效果极好",一度是首选;缺点是当时只支持 MySQL,与现有 PostgreSQL 应用有改造成本。② Aurora Multi-Master:多主 active-active,2019 年 8 月刚 GA,但仅限单区内多活,不满足跨区要求,出局。③ DynamoDB Global Tables:真正的跨区多活写,缺点是 NoSQL 数据模型要重写数据持久层、团队要重新学表设计。结论:只有 DynamoDB 满足"跨区多活写"这个硬需求,尽管它是迁移成本最高的选项。
结果
采用"双库并行"过渡:应用同时写 DynamoDB 和 PostgreSQL、读路径仍返回 PG 数据,生产跑数周零错误后彻底切掉 PG。据团队自述,应用层故障切换时间下降 99%,跨区故障切换的脚本和流程被彻底消除——"没有 failover,因为处处可写"。代价真实存在:表结构按访问模式重建、踩过"用 filter 当 query 使"导致全表扫描的坑、日期与空值类型全部手工处理。以上过程与数字引自 Capital One 技术博客作者 Kelly Jo Brown 的自述,属当事人一手记录。
机制根因
Aurora 的架构原语是"单写 + 存储层日志复制":Aurora Global Database 把跨区 RPO 做到秒级、RTO 压到 1 分钟内厂商口径,但写永远只有一个主区——它是"极快的故障切换",不是"多活"。Capital One 要的是任意区可写、故障时根本不需要切换动作,这超出了单写模型的表达能力。PoC 验证的是"切换够快",决策要的是"无需切换",两者差了一个架构维度——这就是 PoC 满分、选型仍被淘汰的原因。
教训
选型时把"failover 有多快"和"是否需要 failover"分成两个问题问,前者是优化项,后者是架构项,混在一起 PoC 会给出误导性高分;PoC 只能验证它测了的东西,验证不了它没测的语义(多活写语义);作者自己也承认 DynamoDB 不适合报表类负载——选多活的同时就要规划好分析链路的出路,不要等迁移完才发现。另注:文章发表后 Aurora Global Database 已补上 PostgreSQL 支持,但单写模型未变,本结论对"跨区多活写"需求依然成立。
来源
  1. Capital One 技术博客 Kelly Jo Brown《Moving to DynamoDB to Increase Application Resiliency》(2021-02-10,含三方案对比表与 PoC 过程) https://www.capitalone.com/tech/software-engineering/comparing-dynamodb-and-aurora-global-database-and-aurora-multi-master/

相关产品:Amazon Aurora、Amazon DynamoDB 相关能力:日志即数据库(log is the database)—— 存储计算分离的"真"实现 最后核验:2026-10-02

道琼斯:行情数据平台从 SQL Server 迁至 Aurora,一个周六 8 小时完成切换 成功经验

异构迁移 零停机切换 全球多读副本 成本优化
场景
道琼斯行情数据平台(WSJ.com、Factiva、MarketWatch、Barron's 背后的行情源)已运行 20 年:本地 16 台数据库服务器(4 个主库跨机房镜像,其余做分发与订阅),整个平台约 200 台服务器分处两个机房。从 5 家数据商拉取行情,每秒处理数万条消息,大行情时流量暴涨 3–4 倍。迁移动因有二:砍掉昂贵的 SQL Server 许可与本地机房;合同变化只给团队约 1 年时间,而按历史经验这类迁移至少要 2 年外加团队翻倍。
决策
用 AWS Schema Conversion Tool + Database Migration Service 把数据从本地 SQL Server 持续同步到 Aurora MySQL;迁移期间在客户端与 MarketData 服务之间架设 NGINX 代理层,请求先走旧链路,再整体切到云端 API。选定某一个周六:部署代理、更新 DNS、把全部客户端流量迁到 Aurora MySQL,全程 8 小时;两周后正式下线本地 SQL Server。目标架构是 Aurora Global 集群——弗吉尼亚 1 写 5 读、俄亥俄 6 读,写节点具备跨区 failover 能力,读副本尽量靠近数据商。
结果
比计划提前 12 天交付,客户零感知、行情数据零差错(据工程副总裁 Mona Soni 口述)。综合硬件、许可、维护、机房空间与电力,成本下降超 50%;迁移后用 CloudWatch 复盘发现实例只用了 3% CPU、40% 内存——本地机房时代的超配习惯被原样搬上了云,随即缩容,"周支出又降了超 50%"(据工程经理 Luke Sawatsky 口述)。以上数字均引自 AWS 官方博客记述的客户口述,属厂商渠道口径,引用须注明。
机制根因
Aurora Global Database 的跨区复制发生在存储层(redo 日志流)而非逻辑复制,因此"一写 + 十一读"横跨两个区的低延迟读扩展才成立,写 failover 也不需要重放日志追数据。8 小时切换可行的关键不是 DMS 同步有多快,而是 NGINX 代理层把"换数据库"与"客户端改 endpoint"解耦——切换的是流量路径而非数千个客户端配置。代价:依然是单写模型,写节点故障切换是分钟级而非秒级;且迁移后第一件事就该是重新核定实例规格。
教训
异构迁移最难的不是数据同步,而是"客户端不用动"的切换——代理/网关层是零停机迁移的标配,值得提前数月预埋;上云后第一件事是用监控重新核定规格,本地机房的超配习惯会直接变成云账单;把"许可到期日"写进迁移排期,它是比技术更硬的 deadline,道琼斯正是被它逼出了 8 小时切换方案。
来源
  1. AWS 官方博客《How Dow Jones modernized their data storage》 https://aws.amazon.com/blogs/modernizing-with-aws/how-dow-jones-modernized-to-cut-costs-by-over-50/
  2. AWS 官方博客《How Dow Jones migrated and modernized its business-critical databases in one motion》 https://aws.amazon.com/blogs/modernizing-with-aws/dow-jones-modernized-databases-to-gain-effectiveness-and-cost-benefits/

相关产品:Amazon Aurora、Microsoft SQL Server 相关能力:日志即数据库(log is the database)—— 存储计算分离的"真"实现 最后核验:2026-10-02

Instant:Aurora Postgres 大版本升级(13→16),4 人团队做出零停机切换(2024–2025) 成功经验

大版本升级 零停机 逻辑复制 踩坑复盘
场景
Instant(自称"现代 Firebase",开箱即用的实时后端)生产跑在单个 Aurora Postgres 实例(PG 13)上:数据不足 1TB,读约 180 万 tuples/秒、写约 500 tuples/秒;同步服务器监听 PG 的 WAL,把变更实时推送给浏览器客户端。2024 年 8 月开源后流量涨约 100 倍,12 月 Aurora CPU 开始打满,团队被迫一路把实例升到 db.r6g.16xlarge。复现慢查询时意外发现:同一查询在 PG 16 上比 PG 13 快 30% 以上——升级本身就是一轮性能优化。
决策
目标 PG 13→16、零停机,4 人团队列出试错清单逐个验证。① 原地升级:在克隆库实测约 15 分钟不可用(Lyft 称他们的 30TB 库原地升级要 30 分钟),出局。② Aurora 蓝绿部署:官方承诺约 1 分钟停机,实测却建失败——因为主库上有同步服务器监听 WAL 的活跃 replication slot,而 AWS 文档根本没提这个限制,出局。③ 照抄 Lyft 的"克隆→升级→复制":自定义函数在复制时因 search_path 找不到(修复:函数定义显式加 public. 前缀),更糟的是抽查发现丢了 13 条事务,出局。最终方案:全新起一个 PG 16 的 Aurora 库,用原生逻辑复制从零同步(publication + subscription,copy_data=true),7 步清单。
结果
切换写流量用自研 failover 函数:暂停新事务→等 2.5 秒让存量事务完成→cancel 剩余长事务→用不可变 transactions 表(只插不改)对账确认目标库追平→setval 把序列拨到 max(id)+1000(逻辑复制不复制序列,不处理会主键冲突)→放行新连接指向新库。生产执行约 3.5 秒暂停,用户无感知。完整复盘于 2025-01-29 公开发布。以上数字与过程均引自 Instant 自家公开复盘,属当事人自述口径。
机制根因
Aurora 的托管式升级路径(原地/蓝绿)都假设"标准用法";Instant 用 WAL + replication slot 做实时同步,是合理但非标的架构,正好撞上蓝绿部署的隐性前置条件。逻辑复制跨大版本可行,但有三处暗坑:自定义函数 search_path、序列不复制、克隆升级路径可能静默丢数据——都必须用"不可变事务表 max(id) 对账"这类业务层校验兜底,而不能信任"复制状态正常"。零停机的本质是把连接控制权从控制台收回应用层:缩容到一台大同步服务器、用代码而非按钮做切换,暂停窗口才敢压到秒级。
教训
永远先做与生产等价的完整彩排(含活跃 replication slot 和真实客户端),只在控制台点按钮的 happy path 测试等于没测;大版本升级前先把慢查询在新版本上回放一遍,升级本身可能是性价比最高的优化;"零停机"有前提—— modest 规模 + 能收敛连接,小团队别照抄大厂(Lyft 30TB 用 Aurora 秒级克隆)的方案,大厂也别照抄小团队的手工 failover 算法,规模决定路径。
来源
  1. Instant 官方技术复盘《A Major Postgres Upgrade with Zero Downtime》(2025-01-29,公开发布于 GitHub,含 Lyft 方案对照) https://github.com/instantdb/instant/blob/HEAD/client/www/_posts/pg_upgrade.md

相关产品:Amazon Aurora、PostgreSQL(社区版) 相关能力:— 最后核验:2026-10-02

三星电子:Samsung Account 11 亿用户从 Oracle 迁到 Aurora PostgreSQL(2018–2020) 成功经验

去 O 迁移 超大规模账户体系 多区域部署 成本优化
场景
Samsung Account 是三星设备与服务的统一身份入口(Bixby、SmartThings、Samsung Pay 都经它登录),用户总数 11 亿、约 4 亿月活,峰值约 8 万请求/秒。原系统跑在 IDC(自有机房)托管的 Oracle 上,已运行约 10 年,是典型的单体架构。首席架构师 Salva Jung 直言 Oracle"没为微服务架构做好准备,价格也不合理",且在老架构上做无停机扩容"既危险又昂贵",新设备与新服务带来的流量迟早撑不住。
决策
选定 Aurora PostgreSQL 为迁移目标,核心动因是兼容度:85–90% 的 Oracle 查询在 Aurora 的 PostgreSQL 兼容层里无需改写,近 3000 条查询的转换"几乎自动完成"。迁移用 AWS DMS 做异构在线迁移,源库全程保持在线服务用户。2018 年 10 月从欧盟区开始,分三个区(欧盟、中国、美国)逐区推进,每区数据量 2–4TB;DMS 3–4 天即可复制完 2–3TB 数据,随后逐一切换用户流量。仅欧盟区就用约 22 周完成 4TB 数据迁移;三区分别于 2019 年 4 月(欧盟)、2019 年 10 月(中国)、2020 年 3 月(美国)完成,全程"几乎没有停机"。
结果
迁移后每区可平滑扩展到 15 个 Aurora 只读副本,90% 请求延迟低于 60ms,云上自动化让功能交付更快。据三星 DBA Byungyul Ko 口述,Aurora PostgreSQL 的月度运维成本比 Oracle 低 44%,这还不算省掉的 IDC 许可费和 Oracle 那边另计的 22% 维护费。以上数字引自 AWS 官方案例页的三星受访人口述——属于经由厂商渠道发布的客户口径,引用时须注明。单体数据库架构也被拆解为适配微服务的数据库布局。
机制根因
Aurora"日志即数据库"的存储计算分离是这场迁移的底座:读副本共享同一份分布式存储日志,扩副本不需要复制数据,故障切换只是元数据层面的写角色变更——这正是三星敢于承诺"无缝扩展到 15 个副本"且延迟可控的原因。同时 Aurora 的 PostgreSQL 协议兼容让 85–90% 的 Oracle SQL 零改写落地,把去 O 迁移里最贵的人力环节(SQL 改写)压缩到最小。代价是三区仍是三个独立集群而非真正的全球多写,跨区用户行为分析还得另建数据湖(三星后续规划)。
教训
去 O 迁移真正的成本大头不是数据搬运而是 SQL 改写量,目标库的协议/方言兼容度直接决定迁移是否可行;超大规模账户体系选型,先看"读扩展要不要复制数据",存储计算分离的库在这类场景有结构性优势;厂商案例页的数字可以用,但必须标注口径与说话人身份(本例是三星 DBA 经 AWS 案例页口述),不要写成独立第三方实测。
来源
  1. AWS 官方案例《Migrating 1.1 Billion Users across Three Continents from Oracle to Amazon Aurora with AWS Database Migration Service》 http://aws.amazon.com/solutions/case-studies/samsung-migrates-off-oracle-to-amazon-aurora/
  2. SiliconANGLE 转述 AWS DMS 博客(2020,含 44% 降本口径) https://siliconangle.com/2020/10/15/shot-oracle-amazon-touts-300000-database-migrations/

相关产品:Amazon Aurora、Oracle Database(甲骨文) 相关能力:日志即数据库(log is the database)—— 存储计算分离的"真"实现 最后核验:2026-10-02

Gojek:自研 Firehose 把 600 个 Kafka topic 实时灌进 BigQuery(2021–) 成功经验

流式写入 Kafka 入仓 Schema 演进 开源自研
场景
Gojek 有 19+ 条产品线、数百个微服务、多个 Kafka 集群,新 topic 几乎隔天就增加一个。数仓建在 BigQuery 上,既要跑历史分析,又要做近实时报表。最初的做法是每个 Kafka topic 一个独立代码库往 BQ 推数:topic 一多、字段一变,就要人工改代码又改表,还出过几次数据丢失,只能人工从 GCS 回补。随着业务扩张到多国,这种"脚本堆"彻底管不过来了。
决策
Gojek 从零自研了 Beast(后演进为开源项目 Firehose,现属 ODPF):单代码库消费任意 topic,用 proto descriptor 驱动、无需为新 topic 写代码;Java blocking queue 把消费、转换、推送、提交 offset 做成四级独立流水线,只提交已确认写入 BQ 的 offset(at-least-once 语义);跑在 Kubernetes 上,按 topic 分区数水平扩展。Firehose 还对接 Stencil(schema registry),topic 结构一变就自动更新 BQ 表结构,无需人工干预。
结果
Firehose 把 600 个 Kafka topic 流入 BigQuery,另有 700 个入 GCS;BigQuery 侧日均 60 亿事件、10+ TB 新增数据,分析师在数据产生 5 分钟内即可查询(以上规模数字由 Google Cloud 博客引 Gojek 披露,属厂商侧口径)。schema 变更零人工,官方称"为开发者省下数百小时"厂商口径。Beast/Firehose 已开源,多家公司在用。
机制根因
流式链路的核心矛盾是交付语义:Beast 选择 at-least-once + offset 对账,把"精确一次"的去重责任留给下游——这与 BigQuery streaming insert 的 insertId 仅做 best-effort 去重是同一道取舍,没有银弹。单代码库消灭了"N 个 topic × M 次 schema 变更"的人力乘数效应;K8s 无状态部署让吞吐随业务脉冲弹性伸缩;schema 自动化是关键——此前的数据丢失事故根子都在"人工改表"这一步。
教训
流式入仓先定义交付语义(at-least-once 还是 exactly-once),再选工具,顺序反了必踩去重坑;schema 治理必须自动化,人工改表是数据丢失之源;高频小 schema 变更场景下,"通用消费器+注册中心" beats "一 topic 一脚本";把内部工具开源(ODPF)能换来社区的长期维护力,比养着内部孤儿项目划算。
来源
  1. Gojek 工程博客《Beast: Moving Data from Kafka to BigQuery》(2021,第一方) https://www.gojek.io/blog/beast-moving-data-from-kafka-to-bigquery-3?ref=blog.gojek.io
  2. Google Cloud 博客《Gojek uses Firehose to stream data to Google BigQuery》(规模数字引 Gojek 披露,厂商侧口径) https://cloud.google.com/blog/products/data-analytics/introducing-firehose-an-open-source-tool-from-gojek/

相关产品:Google BigQuery 相关能力:— 最后核验:2026-10-02

HTTP Archive:研究员在"免费"公开数据集上跑出 $14,000 账单(反例,2024) 失败教训

账单爆表 公开数据集 SDK 盲区 默认无熔断
场景
HTTP Archive 是追踪"Web 如何被建成"的公益项目,把爬取的海量页面数据放在 BigQuery 公开数据集上。用户 Tim 经 Python 脚本(官方 GCP 库)跑查询,收到 Google $14,000 账单。他在论坛发帖抗议:"这个网站让人以为 public 数据集是给社区用的,结果它是 Google Cloud 的印钞机,一眨眼就能亏掉 $14k。"
决策
事件在论坛发酵。维护者回应:99% 的用户只看免费月报/年报,BigQuery 是给 1% 需要原始数据的 power user 的;$14,000 对应约 2.5 PB 扫描量(按 $6.25/TiB,数字吻合);Web UI 跑查询会显示预估扫描量,但 Python 库没有成本提示机制。维护者道歉并承诺在 FAQ 加显式收费警告。Tim 则主张两点:默认开启 cost controls(现在默认是关的)、$5k 熔断器——超限必须手动确认才继续跑。
结果
The Register 称已联系 Google 置评,文中未见回应;退款或补偿无公开记录(查证为无,不编造)。社区吵成两派:一派认为"不懂数据量就跑查询是用户自己蠢"(该回帖后被管理员隐藏),另一派认为厂商应默认设限,尤其对学生和学术用户。
机制根因
on-demand 按扫描字节计费与"公开数据集免费"的心理模型直接冲突——数据集免费下载/查看 ≠ 查询免费。SDK 路径缺了 Web UI 的"预估扫描量"护栏,这是最隐蔽的坑。BigQuery 默认没有项目级花费上限,cost controls 要手动开——等于把熔断器的钥匙交给了最可能忘记的人。列存下一次 SELECT * 或宽表全扫,极易触达 PB 级,$6.25/TiB 的单价下 2.5 PB 就是 $14k。
教训
任何 BigQuery 项目第一天就开 custom quota / cost controls,不要赌记性;SDK 跑查询前先 dry run 估算 bytes,再决定跑不跑;碰公开数据集先看表大小,"免费数据"不等于"免费查询"——把这句话写进团队手册;给学术/学生用户搭环境时,默认配额要从紧。
来源
  1. The Register《User's $14k bill shock to run queries on 'free' dataset》(2024-02-22,第三方科技媒体,含论坛双方陈述) https://www.theregister.com/software/2024/02/22/users-14k-bill-shock-to-run-queries-on-free-dataset/1187180?td=readmore

相关产品:Google BigQuery 相关能力:On-demand 的"扫描税" 最后核验:2026-10-02

Monzo:150+ 微服务事件灌进"一张巨型 BigQuery 表",银行数据团队奠基(2016–) 成功经验

事件源架构 银行数仓 选型实话 全托管
场景
Monzo 是 2015 年创立的全云银行:150+ 微服务跑在 Kubernetes,事务库是 AWS 上的 Cassandra——不像关系库能打快照供分析用。2016 年数据团队奠基时决定用 BigQuery 做数仓。架构是事件源式的:所有微服务、App、网站发出的事件先被记录下来,独立的 analytics 服务做 enrich 和脱敏,然后灌进"一张巨型的 BQ 表"——事件 payload 存在 JSON blob 列里,新事件类型零 schema 变更,连 Stripe、Intercom 的 webhook 事件都能直接塞进来。
决策
三原则:autonomy(人人可访问脱敏数据)、全托管分析栈、自动化。选 BQ 的理由很实在:存海量数据便宜、streaming insert 自带基础去重(对比 Redshift 不用先落 S3/GCS,少一跳)、全托管、数据实时可用。但博客罕见地把丑话说在前面:小查询有 2–3 秒固定开销(Looker 多数查询 3–10 秒,交互探索"quite sluggish");当时只支持按 ingestion date 分区,大表读一小部分也贵;legacy SQL 方言缺函数,脚本被迫写两倍长。
结果
这套架构支撑了全行的数据决策与风控机器学习(Dataflow 提特征、TensorFlow 训练欺诈模型);Google Cloud 客户页称 Monzo 在 BQ 里存了近 19 PB、2000+ 数据模型厂商口径。数据团队从第一人起步,靠"托管+自动化"长期保持精干。
机制根因
事件源 + 列存数仓是天作之合:JSON blob 列用"读时 schema"换 schema 灵活性,代价是扫描成本——这正是 Monzo 当年预警的"读的时候不小心会很贵"。单巨表是 schema-on-read 的极端实践,适合事件种类爆炸但查询模式收敛的场景。小查询慢是 serverless 调度开销的固有税:BQ 的甜蜜点是大扫描,交互式小查询天然错位,所以 Monzo 早早规划了亚秒级 serving 层。
教训
选型博客敢写缺点是难得的诚实——"存便宜、读贵"这句 2016 年的预警就是今天的"扫描税";OLTP 快照不可得时,事件流是唯一的真相源;全托管的代价是"小查询税",serving 层要提前规划而不是事后补;团队精干的关键不是人少,而是把运维税交出去(managed)+ 把重复劳动自动化掉。
来源
  1. Monzo 工程博客《Laying the foundation for a data team》(2016,第一方) https://monzo.com/blog/2016/11/30/laying-the-foundation-for-a-data-team
  2. Google Cloud 客户页 Monzo(19 PB/2000 模型为厂商口径) https://cloud.google.com/customers/monzo-bank

相关产品:Google BigQuery、Apache Cassandra / ScyllaDB 相关能力:On-demand 的"扫描税" 最后核验:2026-10-02

Shopify:一个单查询差点每月烧掉 95 万美元(反例) 失败教训

账单爆表 On-demand 计费 聚簇剪枝 成本复盘
场景
Shopify 团队在给商家做营销工具的数据管线:Flink 管线(RocksDB 管内部状态)已 ingest 10 亿行,GA(全量发布)要扩量,Flink 扛不住持续增长。方案是找个外部 SQL 数仓:能原子加载 parquet、扛 60 requests/min、结果能回写 GCS。BigQuery 本来就在 Shopify 内部用着,顺手选中。团队先跑通再算账——把 10 亿行 parquet 灌进去跑查询,日志里跳出一行:`total bytes billed: 75462868992`,单次查询 75 GB。
决策
工程师做了道小学算术:60 RPM × 60 分 × 24 小时 × 30 天 = 每月 259.2 万次查询;每次 75 GB 就是每月 1.944 亿 GB 扫描量;按 on-demand 单价,约 $949,218.75/月——"nearly $1 million"。决策立刻转向:按查询 WHERE 条件里的两个特征列建聚簇表,让引擎按谓词剪枝。同样的查询重跑:billed 508.1 MB(1/150),实际扫描 108.3 MB;月账单 → $1,370.67。
结果
一次聚簇把预估月账单从近百万美元打到一千多美元。博客还留下三条军规:别 SELECT *(只选需要的列)、分区表、用免费的表预览代替"跑个查询看看数据"。
机制根因
列存按"引用的列×命中的行"计费,LIMIT 救不了——引擎要先算完再截断。这是最毒的一点:查询跑得飞快,延迟一切正常,账单是唯一的报警器,而 bytes-scanned 恰恰是大多数人从不看的指标。聚簇的本质是把"谓词下推"变成物理布局:引擎按聚簇列找到命中区间就停止扫描,不再碰整表。on-demand 模型下没有熔断器,纪律就是熔断器。
教训
任何高频查询上线前,先看 bytes billed 而不是 latency——延迟正常不等于成本正常;聚簇/分区是成本设计,不是性能优化,要在建表时就定;把"预估月账单"写进管线发布 checklist(QPS × 单次扫描 × 单价);on-demand 下默认没有花费上限,别把"跑通了"当成"可以上线了"。
来源
  1. Shopify 工程博客《Reducing BigQuery Costs: How We Fixed A $1 Million Query》(第一方,含原始日志数字) https://shopify.engineering/reducing-bigquery-costs

相关产品:Google BigQuery 相关能力:On-demand 的"扫描税" 最后核验:2026-10-02

Spotify:欧洲最大 Hadoop 集群之一迁往 BigQuery,2 万日作业双跑近一年(2016–2018) 成功经验

数据仓库迁移 Hadoop 下云 双跑迁移 Serverless 化
场景
2016 年 Spotify 宣布 3 年投入 4.5 亿美元 all-in Google Cloud。数据侧是当时欧洲最大的 on-prem Hadoop 集群之一:每天 2 万个数据作业,依赖图极其复杂;服务侧另有近 1200 个微服务要搬。迁移动机按工程总监 Ramon van Alteren 的说法很直白:维护机房、做容量规划"对成为最好的音乐服务没有直接贡献",真正吸引他们的是 Google 的数据栈——BigQuery、Pub/Sub、Dataflow。
决策
数据迁移否决了 big bang:即便有 160 Gbps 专线,全量拷贝也要两个月,"停机两个月我们就不是个生意了"。最终策略是"搬一个作业、拷一份它的依赖、下游没搬完就把输出拷回去"的双跑模式,主体迁移持续 6–12 个月。每个 sprint 团队二选一:forklift(原样搬运,赶时间用)或 rewrite(重写,理想路径但极耗时间);迁移中后期官方叫停 rewrite——"先搬过去再说,上了云还能改"。
结果
Spotify 数据栈完全跑在 BigQuery 上:每月 1000 万次查询与定时作业,处理 500 PB 数据(Computerworld 引 Google Cloud Next 2018 现场演讲)。服务质量"被严格度量,没有退化";事件投递管线(承载版权方版税结算)峰值从 80 万事件/秒涨到 300 万/秒。成本方面官方拒绝给数字:规模涨了太多,"没法同比"。
机制根因
三层约束决定了策略。物理层:带宽×数据量算出的 big bang 停机窗口不可接受,这是数学不是偏好。依赖层:复杂的作业依赖图意味着单个作业无法独立搬迁,双跑+输出回拷是唯一不断下游的办法,代价是大量昂贵且复杂的 copy jobs(负责人 Baer 的忠告:"get out of hybrid as fast as you can")。人性层:工程师一旦动手重写就忍不住顺手重构架构,rewrite 路径会系统性拖慢迁移——迁移纪律本身是生产力。
教训
迁移前先算"物理账"(数据量÷带宽=最短停机窗口),它比技术选型更能决定策略;依赖图越复杂,双跑期越要压缩——copy jobs 是纯成本,每多一天都是浪费;给 rewrite 设熔断:先上云再重构,顺序反了就误了窗口期;迁移可视化(红/绿气泡看板)能替代大量状态汇报,士气工具也是生产工具。
来源
  1. Computerworld《How Spotify migrated everything from on-premise to Google Cloud》(Google Cloud Next 2018 演讲实录,第三方媒体) http://computerworld.com/article/1655983/how-spotify-migrated-everything-from-on-premise-to-google-cloud-platform.html
  2. Google Cloud 客户页 Spotify厂商口径 http://cloud.google.com/customers/featured/spotify

相关产品:Google BigQuery 相关能力:Serverless 双轨计费 最后核验:2026-10-02

Wix:8900 万站长的分析仪表盘跑在 BigQuery 上(2016–) 成功经验

用户画像仪表盘 流式架构 Serving 分层 多租户
场景
Wix 是云建站平台(案例页口径:8900 万注册用户),想给站长提供多用途分析仪表盘:转化、clickstream、多维度筛选,还要能测"换高清图是否带来更多销售"。要求很硬:低延迟、亚 100ms 响应。原来的托管方案缺多租户支持、数据重导与恢复、按项目的安全隔离,撑不住。
决策
搭了一套分层流式架构:App Engine 收数 → Cloud Pub/Sub 排队;BigQuery 并行仓储原始数据(用于恢复与排障);Dataflow 流式处理 Pub/Sub 数据,输出进 Cloud Datastore;自研查询服务走 App Engine 按日期、过滤条件供仪表盘查询。注意 BigQuery 在这里的定位:它是"原始真相源+排障利器",而不是 serving 层——延迟敏感的查询走 Datastore+自研服务。
结果
Wix 数据服务高级总监 Gregory Bondar 称,用 GCP 搭仪表盘的成本不到自建的 20%(Wix 口径,经 Google Cloud 客户页发布);仪表盘成了 crowded 建站市场的差异化卖点,帮公司获客和留存;新垂直市场(音乐站看"过去 1/5/24 小时最热歌单"这类)的仪表盘能快速复制上线。
机制根因
分层取舍是关键:BQ 存全量原始事件(便宜、SQL 可查,排障时直接翻原始记录),serving 用 Datastore 保亚 100ms——这与 Monzo"小查询慢"的观察一致,BigQuery 当时不适合高并发小查询。多租户隔离靠项目级安全隔离+灵活的资源分配,而不是在查询引擎里做行级隔离。成本对比的锚点是"自建"而非"友商",这是客户证言的常见口径,引用时需注明。
教训
BigQuery 的正确位置常常是"真相源+排障",serving 另起一层,不要指望一个引擎包打天下;选型时把生态组合(Pub/Sub+Dataflow+BQ+Datastore)当整体评估,单产品视角会误判;客户证言里的成本数字锚点多是"vs 自建",横向对比时要打折听;仪表盘这类"高频小查询" workload,天生不适合按扫描计费的引擎。
来源
  1. Google Cloud 客户案例《Wix: Building analytics dashboards for website owners》(成本数字为 Wix 口径,经厂商页发布) https://cloud.google.com/customers/wix

相关产品:Google BigQuery 相关能力:— 最后核验:2026-10-02

字节跳动:18000 节点 ClickHouse/ByteHouse 撑起 700PB 实时分析(2022) 成功经验

实时分析 超大规模集群 存算架构 开源自研
场景
字节跳动 2017 年在实时分析版块试水 ClickHouse,2018—2019 年从单一业务扩展到 BI 分析、A/B 测试、模型预估等多个业务。截至 2022 年 3 月,其内部实时计算平台(自研 ByteHouse,基于 ClickHouse)总节点达 18000 个、单集群最大 2400 节点、支撑数据量最大 700PB、覆盖 80% 的字节业务。典型场景包括抖音线上活动的实时数据大屏、行为分析(事件/留存/漏斗)与精准营销的人群圈选。(https://www.cnblogs.com/bytedata/p/17240123.html)
决策
2017 年字节对实时数仓提出四项硬要求:支撑持续增长的海量数据(2019 年每天新增 100TB)、批流一体、明细+聚合双查、数千维度秒级交互响应,且成本可控。团队评估了 Redis、Apache 系等多种开源方案,但每种只能满足一到两点、维护多套系统成本过高;最终发现 ClickHouse 是唯一能同时满足全部要求的"All In One"选择。2020 年 ByteHouse 在字节内部正式立项(基于 ClickHouse 深度自研),2021 年经火山引擎对外服务。
结果
以下均为字节跳动数据平台官方文章自述口径(截至 2022 年 3 月):内部总节点 18000 个、单集群最大 2400 节点、支撑数据量最大 700PB、覆盖 80% 字节业务。实时监控场景写入 TPS 达 250 万/秒、端到端秒级可见且保障 Exactly Once;行为分析场景 90% 查询 5—7 秒内返回、整体 10 秒内响应;精准营销场景在自研优化器加持下 P95 响应 1 秒以内、部分达半秒,Bitmap 引擎使人群交并补计算获得 10—50 倍提升。全局查询 QPS 等指标未找到公开数据。
机制根因
ClickHouse 胜出的机制在于列式存储 + 向量化执行 + 稀疏索引带来的海量数据扫描速度,且性能基准建立在磁盘而非内存之上——服务器成本随规模线性增长而非指数级,这是"省钱"得以成立的关键。但规模化也验证了开源 ClickHouse 的机制短板:ZooKeeper 依赖在超大规模下成为可用性瓶颈(硬件故障近乎每天发生、故障恢复常超 1 小时),字节自研 HaMergeTree 将 ZK 负载降到与数据量无关,并用 RocksDB 做元数据持久化,把恢复时间从 1—2 小时压缩到 3 分钟。代价是自研投入:走到 2400 节点规模,开源版本的运维工具、多表 Join、ZK 等短板都会被放大,必须有架构演进(存算分离)或自研兜底的准备。
教训
选型时不要为每个场景配一种引擎,"一款满足全部要求"的 All In One 引擎比拼凑多套开源系统更省长期运维成本;成本模型要按"磁盘线性 vs 内存指数"来算,大规模 OLAP 的成本优势往往来自存储层而非计算层;对开源引擎的规模上限做诚实评估,提前规划自研投入或架构演进,而不是等问题爆发。
来源
  1. 字节跳动数据平台官方文章《ByteHouse:基于 ClickHouse 的实时计算能力升级》(博客园转载) https://www.cnblogs.com/bytedata/p/17240123.html
  2. ByteHouse 官方英文博客《Ensuring High Availability in ClickHouse》 https://bytehouse.cloud/blog/high-availability-bytehouse-clickhouse-metadata-persistence

相关产品:ClickHouse 相关能力:海量事件的 ad-hoc 全表扫描、Kafka 表引擎准实时写入、没有优化器:JOIN 弱、更新慢、运维心智负担 最后核验:2026-10-01

WMG(华纳音乐):Tango 版税平台停用 Cassandra,迁回 PostgreSQL RDS——"得的不再是规模病,是复杂度病"(2026) 失败教训

回迁 NoSQL 回摆 复杂度税 双写一致性 关系模型
场景
华纳音乐集团创新实验室(WMG Innovation Lab)的版税处理平台 Tango,每年处理超 10 亿美元版税、250 万作品目录、年处理数据超 7TB。2012–2013 年 NoSQL 热潮中,团队为 Tango 选择了 Cassandra(自研 ORM 基于 2013 年的 1.2.x 客户端,耦合 Spring 3.1.x),指望水平扩展与高写入吞吐。十多年后,作者 Mark Lin 与 Patrick Cosmo 在官方工程博客发文复盘:Cassandra 已被完全停用(completely decommissioned),全部迁往 AWS PostgreSQL RDS——作者原话是"back to a traditional relational database"。
决策
分阶段、按实体逐个迁移,拒绝"大爆炸"一次性切换(100 亿行数据,12 小时窗口若在第 8 小时失败,回滚是噩梦)。两个核心机制:一是"并行版税试算"——新旧两套实现并排跑 2 个季度,在强审计合规要求下逐实体比对结果的准确性与完整性,确认无误才下线旧实现;二是"历史回填"——实时数据同步后,用自研抽取管道在后台分批回填 100 亿历史行。
结果
报表摄取与计算耗时下降约 20%(作者口径);Cassandra 时代平均每天至少 1 次节点故障、季度结算期高达每天 3 次,迁往全托管 RDS 后该问题消失;砍掉了外部 Elasticsearch 集群与自研 ORM,标准 SQL 与视图即可满足此前需要双写同步的查询;下游 BI 系统从"全表抽取"变为可做增量(delta)抽取。成本侧:迁移启动时已跑到 32 个节点,按数据增速预计 2 年内要扩到 64 节点,作者称成本呈指数级增长("cost grew exponentially",作者口径,未给绝对金额)。
机制根因
音乐版税是"深度互联的关系网"(用户→地区→分成比例→身份),而 Cassandra"hates relationships":为满足查询被迫建扁平化冗余表,外挂 Elasticsearch 做二级索引——相当于"在搜索引擎里重建了一个关系模型";每次更新用户属性都要双写 Cassandra 与 ES,同步延迟即不一致;团队把时间花在"照顾集群健康、保证 repair job 完成"而不是交付功能。作者的诊断句是全文转折点:"we weren't suffering from a scale problem anymore; we were suffering from a complexity problem."——2013 年关系型数据库确实扛不住他们设想的规模,但 2026 年的云托管 PG 早已不是当年的 PG,"规模优先"的技术栈变成了纯粹的复杂度税。
教训
NoSQL 选型先回答"访问模式是关系型的吗":如果是,宽列存储的去关系化只是把 join 推迟到应用层和 ES 里付,账单会迟到但不会缺席;"双写 + 外部索引"是危险信号——当你开始在搜索引擎里重建关系模型时,就该回头算总账;十年前正确的架构决策会因基础设施进化而过期,作者建议"别让十年前的选择靠惯性决定你的架构未来";100 亿行级别的迁回必须做双跑对账,并行期按季度计,不可大爆炸切换。
来源
  1. WMG Innovation Lab 官方工程博客《Rethinking NoSQL: Why We Migrated From Cassandra to PostgreSQL RDS》(Mark Lin、Patrick Cosmo,2026-07-07
  2. "back to a traditional relational database"为作者原话
  3. 20% 提速、节点故障频率、32→64 节点、100 亿行等数字均为作者口径,未找到第三方独立复现) https://tech.wmg.com/rethinking-nosql-why-we-migrated-from-cassandra-to-postgresql-rds-561450d83c65?gi=f91a79f4b809

相关产品:Apache Cassandra / ScyllaDB、PostgreSQL(社区版) 相关能力:宽列存储的关系模型代价 最后核验:2026-10-02

Cloudflare:DEX 分析面弃选 ClickHouse——小批量写入场景下"五件套"接入成本太高(2025) 失败教训

PoC 选型评估 弃选 ClickHouse 时序分析 小团队
场景
Cloudflare Zero Trust 的 DEX(Digital Experience Monitoring)团队只有 3 名全栈工程师,要为 WARP 客户端的设备状态日志(每 2 分钟一条)建分析面。作者曾想用 ClickHouse,但按内部文档搭写入链路需要 Cap'n Proto/Protobuf → socket → logfwdr → Kafka → Concept:Inserter 五件套——系统图上凭空多出 5 个框。而 ClickHouse 的 MergeTree 为高吞吐批量写入优化,"每秒批量 < 1 次"的写入假设与"数百万设备每 2 分钟一条"的小批量写入正好相克,小写会引发写放大、资源争抢与限流。
决策
先上原生 PostgreSQL(~200 inserts/sec 上线,查询几百毫秒),撑到 1000 inserts/sec、数十亿行后,7 天时间范围查询退化到数秒。随后在 canary PG 集群自建 TimescaleDB 实例做 apples-to-apples 对比:生产双写 + 两周回填,用真实 dashboard 查询做 side-by-side benchmark(3 个时间窗口 × 3 种 columnstore 模式,5 亿–10 亿行数据集)。
结果
弃选 ClickHouse,选 TimescaleDB(PostgreSQL 扩展;TimescaleDB 不在本站 31 产品内,此处仅记录评估结论)。按 Cloudflare 自述口径:查询提升 5x–35x(随查询类型与时间窗口);压缩 1616GB→49GB(32.83x),"同等成本多存 33 倍数据"。入选理由:PG 生态完整保留、hypertable 自动分区、continuous aggregates 替代 cron 预聚合、3 人团队要简单。
机制根因
这不是"ClickHouse 不够快",而是"接入成本与写入模型错配"。MergeTree 的每次 insert 写成独立 partition 靠后台合并——大批量写入时这是神器,小批量写入时就是写放大器。DEX 的 workload(低频、小批量、高设备数)恰好踩在反模式上。TimescaleDB 赢在"不用换数据库":PG 生态、SQL、工具链全保留,columnstore 和预聚合是加法而非换血。对 3 人团队,"少一个框"本身就是性能指标。
教训
评估 OLAP 时先画写入链路图——"5 个框"的接入成本要和查询性能同权打分;小批量写入场景下,MergeTree 类引擎的默认假设就是反模式;小团队选型应把"运维复杂度"货币化计入 TCO。诚实注记:5x–35x、32.83x 均为 Cloudflare 自测口径(真实 dashboard 查询),未见第三方复现;这是 2025 年 7 月的结论,TimescaleDB 此后版本演进请自行核验。
来源
  1. Cloudflare 官方博客《How TimescaleDB helped us scale analytics and reporting》(作者 Robert Cepa,Zero Trust DEX 团队,2025-07-08) https://blog.cloudflare.com/timescaledb-art/

相关产品:ClickHouse、PostgreSQL(社区版) 相关能力:MergeTree 批量写入假设与小写放大 最后核验:2026-10-02

PostHog:评估 6 款 OLAP 引擎后选 ClickHouse,自建 benchmark 跑出"一个数量级"领先(2021) 成功经验

PoC 选型评估 OLAP 选型 Postgres 替代 自建压测
场景
PostHog(开源产品分析平台)最初跑在 Heroku Postgres 上,随事件摄入量增长把 Postgres 推到极限:用户越多、用得越多,体验越差。2021 年团队立项为 Postgres 找替代者,候选包括 Pinot、Presto、Druid、TimescaleDB、CitusDB、ClickHouse。
决策
按三个维度初筛——速度(实时结果)、复杂度(产品可自托管,不能要求用户装整个 Hadoop 栈)、查询接口(要标准 SQL;Druid 因"有 SQL 壳但不是 exactly SQL"被淘汰)。通过初筛后,团队研读公开 benchmark、参考 Cloudflare 用 ClickHouse 处理每秒 600 万请求的经验,然后自建测试集群跑自己的 benchmark。
结果
选定 ClickHouse。按 PostHog 自述口径,ClickHouse 在自家 benchmark 里"repeatedly performed an order of magnitude better"(反复比其他候选好一个数量级);压缩表现甚至超过 ORC/Parquet 序列化格式;从磁盘处理数据(不像 Presto 要求数据常驻内存);数据到达即处理,无需预聚合。迁移采用双写 + feature flag 逐查询切换的并行方案。
机制根因
PostHog 选 ClickHouse 不是只看跑分,而是三个约束同时命中:列存 + C++ 带来的摄入/压缩比契合"事件分析" workload;类 PG/MySQL 的 SQL 方言让团队持续加功能不被查询层卡脖子;自托管简单契合开源产品的分发模式。反面教材同样真实:团队曾按每小时 1–2 次的文档建议反着用 mutations(跑到每分钟数百次),直接导致 outage——ClickHouse 的 MergeTree 假设"少量大文件",高频小 mutation 会让后台合并永远追不上。
教训
选型三维度(速度/复杂度/接口)要先于 benchmark 定下来,否则跑分没有评判标准;"标准 SQL"在长期功能迭代中是生产力条款,不只是口味问题;任何引擎的"不要这么用"文档条款(如 mutation 频率)都要当硬约束读,PostHog 的 outage 就是交过学费的注脚。诚实注记:"好一个数量级"为 PostHog 自测口径,未见第三方复现;TimescaleDB/CitusDB 不在本站 31 产品内,此处仅作评估名单记录。
来源
  1. PostHog 官方博客《How we turned ClickHouse into our event mansion》(作者 James Greenhill,2021-11-06) https://posthog.com/blog/how-we-turned-clickhouse-into-our-eventmansion

相关产品:ClickHouse、PostgreSQL(社区版) 相关能力:列存压缩与 MergeTree 的写入假设 最后核验:2026-10-02

Cloudflare:ClickHouse 做每秒 600 万请求的 HTTP 实时分析 成功经验

实时分析/OLAP 高吞吐摄入 物化视图 高可用
场景
CDN 日志分析,平均每秒 600 万请求、峰值 800 万;旧分析管线存在单点组件,可靠性不足(https://blog.cloudflare.com/http-analytics-for-6m-requests-per-second-using-clickhouse/)
决策
用 ClickHouse 替换旧管线最脆弱的环节,Kafka 解耦摄入与查询。
结果
36 节点 × 3 副本扛下全网流量;月 1.5 万亿 page views 可查;物化视图预聚合常用维度,查询延迟可控。
机制根因
append-mostly 日志流 + 列式存储 + 物化视图预聚合,是该负载特征的标准答案;Kafka 让摄入与查询解耦,背压可控,单点故障被隔离在管线之外。
教训
"不自研"的机制条件:负载特征(只追加、按时间与维度聚合)与成熟工具的抽象精确匹配时,不要自研聚合层——列式 OLAP + MQ 缓冲是成熟范式。演进策略同样重要:先替换最脆弱的单点、验证范式,再整体演进,而不是一次性重写整条管线。

相关产品:ClickHouse 相关能力:海量事件的 ad-hoc 全表扫描、物化视图 + 表引擎的 DDL 管道哲学 最后核验:2026-10-01

DoorDash:特征存储引入 CockroachDB 做 Redis 补充,单位存储云支出降 75%(2023) 成功经验

特征存储 Redis 降本 混合存储 在线推理
场景
DoorDash 机器学习平台 2021–2022 年特征数量增长超过 10 倍,在线特征存储跑在 AWS ElastiCache Redis 上(超 100 节点的大集群)。特征暴增迫使团队每周扩容一次 Redis 集群,而大集群扩容是 2–3 天的蓝绿流程——从日备份起新集群、重放一天写入、切流量、删旧集群,极易出错且耗时不定,有时因缺 AWS 机型还得找 AWS 支持重试。
决策
ML 平台团队(Brian Seo、Kunal Shah,2023 年 3 月 21 日发表工程博客)决定引入 CockroachDB 作为在线特征存储的补充后端,与 Redis 混合使用:超低延迟场景留给 Redis,其余搬到磁盘型 CockroachDB。选型理由是零停机升级/扩容、按负载自动伸缩,以及磁盘存储让高基数特征的单位成本大幅下降。
结果
单位特征值存储的云支出平均下降 75%,延迟仅小幅上升(DoorDash 工程博客口径,未找到第三方独立复现)。过程有波折:最初一行一值的 KV 模型下,63 台 m6i.8xlarge 峰值约 200 万行/秒写入、CPU 均值约 30%,但 CPU 会冲到 50–70% 且吞吐腰斩到不足 100 万行/秒;按此测算仅为 Redis 成本的 30% 左右,未达预期。团队把同一 entity 的特征收敛为 JSON map(一行多值)后,写效率提升最高 300%,读延迟降 50%,部分场景读性能接近 Redis,才最终拿到 75% 的降本数字。以上数字均为博客自述口径。
机制根因
Redis 是内存数据库,特征这种高基数、持续膨胀的数据集用内存装,成本随特征数大致成比例上涨(取决于内存价格与压缩效果),且 ElastiCache 大集群扩容本质是"重建集群",运维税极高。CockroachDB 的 range 有序分片加 LSM 磁盘存储把单位字节成本降下来;JSON 收敛减少了单个特征占用的 range 数量和写放大,一次写入携带多个特征值,正好命中 LSM 批量写入的甜点。代价有三:批量 INSERT 过大(每查询超 1000 个值)会让最慢节点拖住整个集群;新表从单个 range 起步有预热期,需预切分或限流;可串行化隔离下写冲突多时 CPU 开销显著。选型的本质是"用延迟换成本",且必须按 CockroachDB 的存储模型重塑 schema 才能拿到收益。
教训
混合存储不是"多装一个数据库",而是按延迟与成本把工作负载分级;直接把 Redis 的 KV 模型平移到 SQL 表会踩坑(大 batch、单 range 预热、写冲突),schema 必须为 LSM 与 range 分片重新设计;降本数字要看分母——DoorDash 的 75% 是"单位存储价值"口径,且建立在 JSON 收敛重构之后,照搬原始模型只能拿到约 30%。
来源
  1. DoorDash 工程博客《Using CockroachDB to Reduce Feature Store Costs by 75%》(2023-03-21,作者 Brian Seo、Kunal Shah) https://careersatdoordash.com/blog/using-cockroachdb-to-reduce-feature-store-costs-by-75/

相关产品:CockroachDB、Redis / Valkey 相关能力:— 最后核验:2026-10-02

DoorDash:新零售履约后端从 PostgreSQL 迁到 CockroachDB,支撑 10 倍增长(2023) 成功经验

PostgreSQL 迁移 履约后端 影子读 特性开关
场景
DoorDash 从外卖扩张到便利店、杂货等新零售,商户与 SKU 数量指数级增长。履约后端的 store_items 物化视图(商品目录、库存、价格)跑在 PostgreSQL 上,表迅速涨到 500GB——这正是 DoorDash 内部单表上限,超限后表变得不可靠;高峰期大批量非批处理 upsert 让整体服务延迟翻倍、数据库 CPU 超过 80%;且单写节点位于单个可用区,整个新零售业务的可用性系于一个 AZ。
决策
New Verticals Fulfillment 团队(Yin Zhang、Nikhil Pujari、Kevin Chen、ThulasiRam Peddineni,2023 年 2 月 7 日发表工程博客)决定把存储引擎换成 CockroachDB,分四个里程碑迁移:先建 gRPC 门面服务 RFDS(Retail Fulfillment Data Service)收敛所有数据访问;再做 schema 改造与数据回填;然后双写加影子读比对(用 Guava MapDifference 抓数据 skew);最后特性开关灰度切流。
结果
迁移消除了扩展瓶颈,多组查询反而更快:按 store_id 的批量查询延迟下降约 38%(store_id 在 CockroachDB 是复合主键首列,在 PostgreSQL 只是普通二级索引);store_id + merchant_supplied_id 的实时查询快 10 倍(复合主键对复合二级索引);按 dd_menu_item_ids 的查询持平。团队称现在可支撑 10 倍负载增长(DoorDash 自述口径,迁移后的绝对 QPS、数据量未公开)。以上数字均为博客自述,未经独立验证。
机制根因
PostgreSQL 单写模型下所有 upsert 走一个 writer,500GB 单表加大批量写入等于写入天花板;CockroachDB 的 shared-nothing 多写把写入分散到各 range leader。但性能提升的关键不是"换数据库"本身,而是借机做的三处 schema 手术:高频更新列(价格、库存、标记位)拆成独立 column family,避免整行重写,更新性能提升 5 倍以上;二级索引从 8 个砍到 2 个;废弃大表 join,改服务层内存 join。影子读阶段是关键:双读比对把遗漏的更新路径全部暴露,feature flag 让回滚随时可做。代价是应用必须接受分布式 SQL 约束(join 变贵、索引要精简),且迁移期维护了双写链路。
教训
分布式 SQL 迁移最值钱的一步往往是"被迫还技术债"——门面服务、去 join、索引审计这些在 PostgreSQL 上也能做,但没人愿意动;影子读加双写加特性开关是生产迁移的标准三件套,不要信一次性 cutover;单表 500GB 这类内部红线是架构换代的信号灯,不是靠"优化一下"能绕过去的。
来源
  1. DoorDash 工程博客《How We Scaled New Verticals Fulfillment Backend with CockroachDB》(2023-02-07,作者 Yin Zhang、Nikhil Pujari、Kevin Chen、ThulasiRam Peddineni) https://careersatdoordash.com/blog/how-we-scaled-new-verticals-fulfillment-backend-with-cockroachdb/

相关产品:CockroachDB、PostgreSQL(社区版) 相关能力:PG 线路兼容 —— 从 PG 迁来的摩擦力最低的分布式 SQL 最后核验:2026-10-02

Form3:英国支付平台把 CockroachDB 横跨 AWS/GCP/Azure 三云,单云故障照常结算(2020–) 成功经验

多云 支付清算 跨云仲裁 监管合规
场景
英国云原生支付公司 Form3 提供 Faster Payments 等清算通道接入,最初跑在 AWS RDS for PostgreSQL 上。监管与业务连续性要求不能把命系在一家云上;团队曾考虑在 GCP 按 AWS 技术栈复制一套(SQS 换 PubSub 等),但两套行为不一致的平台维护成本极高,且"大爆炸"式迁移风险大。
决策
平台工程团队(负责人 Kevin Holditch,Form3 官方播客 Ep 38 主讲)重构为 V2 多云架构:AWS、GCP、Azure 三云各跑一个 Kubernetes 集群,用私有网络打通;NATS JetStream 与 CockroachDB 集群横跨三云;CockroachDB 副本因子为 3,每个 range 的三个副本分落三云,写 quorum 取三取二——任意一朵云整体故障,写入仍可继续。
结果
建成"一个逻辑系统横跨三朵云":一笔支付可以在 GCP 发起、在另一朵云继续,全程不绑定单云;产品团队只需对接一套云无关架构。运维细节来自 Form3 工程师 Rogger Fabri 在 RoachFest 2023 的分享:备份用 v23.1 起的 locality-restricted backup 分别落在 GCP 与 AWS,全量每 12 小时、增量每 5 分钟,RPO 为 5 分钟;可观测性用 Grafana、Prometheus、logz.io,告警进 PagerDuty。支付 TPS、延迟等业务数字未公开。
机制根因
支付的核心约束是"钱不能丢、不能重"——Raft quorum 写天然满足:三取二确认才算提交,单云故障不丢已确认交易。从 PostgreSQL 迁过来最大的摩擦是访问模式:CockroachDB 的分布式执行让"看似简单的查询"实际跨节点取数,需要重做应用设计与性能优化。跨云延迟加在每次 quorum 写上,这是多活每天交的税;好在支付场景对单次写入延迟的容忍度高于对可用性的要求。备份跨云双写则是"备份的备份",防的是云厂商级故障。
教训
真正的多云不是"每个云一套",而是"一套系统横跨多云",而这要求数据层本身支持跨云 quorum——主从复制模型天然做不到;跨云 CockroachDB 的代价是写延迟永久性垫高,选型前先确认业务是否付得起这笔税;RPO 5 分钟这个数字来自增量备份频率,不是数据库"零丢失"的魔法,两件事别混为一谈。
来源
  1. Form3 官方播客《Ep 38 .tech - Building multi-cloud at Form3》(主讲 Kevin Holditch,Head of Platform Engineering) https://techpodcast.form3.tech/episodes/ep-38-tech-building-multi-cloud-at-form3-_Z5Ha5ch
  2. Form3 工程师 Rogger Fabri 在 RoachFest 2023 的分享《Multi-cloud essentials: How we operate CockroachDB at Form3》(备份与可观测性细节) https://www.cockroachlabs.com/roachfest/2023/multi-cloud-essentials-how-we-operate-cockroachdb-at-form3/

相关产品:CockroachDB、PostgreSQL(社区版) 相关能力:多活生存性 —— 丢一个 region 业务不中断 最后核验:2026-10-02

Jepsen 独立测试在 CockroachDB beta 版揪出两处可串行化漏洞,均在 1.0 前修复(2016–2017) 失败教训

一致性测试 可串行化 第三方验证 beta 缺陷
场景
CockroachDB 在 1.0 GA(2017 年 5 月)前宣称提供可串行化隔离(serializable,ANSI 最高隔离级别)。团队自己用 Jepsen 框架做过测试,但为求独立验证,2016 年秋聘请 Jepsen 作者 Kyle Kingsbury 评审并扩展测试集,费用由 Cockroach Labs 承担。
决策
Kingsbury 在 beta-20160829 至 beta-20160908 版本上运行扩展测试:register(单键线性一致性)、bank(转账总额守恒)、sequential、G2(反依赖环)等。测试发现两个新 bug:一是 timestamp cache 缺陷——两个事务被分配相同时间戳时可能产生不一致;二是内部重试导致某些事务被应用两次。两处都是货真价实的可串行化违规。
结果
两个 bug 分别在 beta-20160915 与 beta-20161013 中修复,扩展后的 Jepsen 套件并入每夜回归,Cockroach Labs 发博客《CockroachDB beta passes Jepsen testing》公示。但测试同时钉死了两个"按设计"的弱保证:CockroachDB 只保证可串行化,不保证严格可串行化(strict serializability)——跨多 key 的事务可能不按实时顺序被观察到,读在有限场景下可能是 stale 的;且一切保证的前提是节点时钟偏移在阈值内(默认 250ms),超限后"一切保证作废",部分节点会自我关闭。
机制根因
CockroachDB 用混合逻辑时钟(HLC)代替 Spanner 的 TrueTime 原子钟,跑在普通 NTP 同步的硬件上;为换性能放弃了 Spanner 的 commit-wait(写后等待),只做可串行化而不做外部一致性。timestamp cache bug 的本质是相同时戳的事务在缓存判定上撞车,破坏了"读到已提交写的单调性";double-apply 则是两阶段提交内部重试路径缺了幂等。Jepsen 的价值在于用形式化测试把"文档声称"和"实际语义"的缝隙量化出来——Cockroach Labs 当时的文档写着"no possibility of reading stale data",测试证明这句话只在单 key 且时钟良好时成立。
教训
厂商的一致性宣称要看限定词:serializable 不等于 strict serializable,差的两个字是"跨 key 实时序";分布式 SQL 的正确性高度依赖时钟同步,NTP 偏移监控不是可选项,而是正确性基础设施;第三方独立测试(尤其是厂商付费请人来挑刺)在 beta 期做,比 GA 后出事故便宜得多——Cockroach Labs 这次是正面示范。
来源
  1. Jepsen 官方分析报告《Jepsen: CockroachDB beta-20160829》(Kyle Kingsbury) https://jepsen.io/analyses/cockroachdb-beta-20160829
  2. Cockroach Labs 官方博客《CockroachDB beta passes Jepsen testing》(厂商对测试结果的回应) https://www.cockroachlabs.com/blog/cockroachdb-beta-passes-jepsen-testing/

相关产品:CockroachDB、Google Spanner 相关能力:— 最后核验:2026-10-02

CockroachDB 2024 年砍掉免费 Core 版:年入超 1000 万美元的自建用户按 CPU 核付费 失败教训

开源许可 BSL 选型风险 供应商锁定
场景
CockroachDB 早期 Apache 2.0 开源,2019 年转 BSL 1.1(Core 版可免费自建、限制商用 DBaaS),另有功能更多的 Enterprise 版。2024 年 8 月 CEO Spencer Kimball 宣布:随 24.3 版本(11 月 18 日生效)砍掉 Core,合并为单一 Enterprise 许可(CockroachDB Software License,源码可看不可自由用);年入 1000 万美元以下的企业、个人、学生、研究者继续免费(Enterprise Free),超线企业按部署机器的 CPU 核数付费;云托管产品不受影响。
决策
这是厂商的单方面商业决策。动因 Kimball 自己说得很直白:越来越多有规模的公司"将就着用免费 Core、绕开 Enterprise 付费","我们的免费 Core 成了我们最精明的竞争对手"(TechCrunch 专访原话)。社区反应激烈:Percona 联合创始人 Peter Zaitsev 称"CockroachDB 完成了去开源化,正在变成又一个 Oracle";OpenUK CEO Amanda Brock 称对 Cockroach 的转向"并不意外"。
结果
政策已生效(同样适用于 2024 年 11 月 18 日之后发布的 23.1 及更新版本的补丁)。实际影响分层:小公司反而赚到——免费版现在包含全部 Enterprise 功能;年入超 1000 万美元的自建用户则面临"按核付费"的新账单,且免费资格需每年重新验证营收、遥测不可关闭。证据等级说明:未找到公开的"某大公司因此迁出 CockroachDB"的实证——搜到的多为个人或小项目的选型规避(如 GitHub 上的分布式 SQL 对比文档以此为由排除 CockroachDB),"迁移出走潮"属于传闻级别,此处如实标注为未找到证据。
机制根因
这是 VC 驱动型"伪开源"数据库的经典剧本:Apache 2.0 获客、 BSL 防云厂商、专有许可变现。CockroachDB 的特殊之处在于 Kimball 承认产品太稳定了——"跑生产几乎不需要支持",于是免费版成了付费版的替代品,厂商只能靠改许可收费。对用户的实质风险不是"今年多付钱",而是许可变更的单方面性:今天 1000 万美元线是恩赐,明天线划在哪、遥测收什么,都是厂商说了算;2025 年底官方进一步把新版本开发转入私有仓库,社区连代码可见性都在收缩。
教训
选型评估必须把"许可变更风险"单列一条:看贡献者是否集中于一家公司、看历史改许可次数(CockroachDB:Apache 2.0 到 BSL 再到专有,三次);Zaitsev 的忠告值得引用——警惕绝大多数贡献来自单一公司的"开源"项目;社区治理的项目(如 PostgreSQL)是这类风险的对冲。年入接近 1000 万美元线的公司尤其要算清:免费的前提是每年自证没超线,这本身就是合规成本。
来源
  1. The Register《CockroachDB scuttles away from open source Core offering》(2024-08-19,独立科技媒体) https://www.theregister.com/software/2024/08/19/cockroachdb-scuttles-away-from-open-source-core-offering/1493798?td=readmore
  2. TechCrunch《Cockroach Labs shakes up its licensing to force bigger companies to pay》(2024-08-15,含 Kimball 专访原话) http://techcrunch.com/2024/08/15/cockroach-labs-shakes-up-its-licensing-to-force-bigger-companies-to-pay/

相关产品:CockroachDB、PostgreSQL(社区版) 相关能力:— 最后核验:2026-10-02

Nubank:信用卡授权系统从内存存储迁到 CockroachDB,on-prem 三地部署(2021) 成功经验

信用卡授权 金融核心 私有化部署 强一致
场景
巴西数字银行 Nubank 2019–2021 年客户从 1200 万涨到 4000 万,业务扩张到墨西哥、哥伦比亚。信用卡授权服务(决定每笔交易批不批准)最初跑在 Java 堆内存存储上,多实例之间靠 Kafka 消息同步变更;内存方案运维复杂、扩展性差,撑不住跨国增长。
决策
Authorizer 团队评估了 Cassandra、CouchDB 等多个方案,最终选择 CockroachDB:授权场景要求强一致(批错一笔就是资金损失)、水平扩展、运维简单。团队在私有化环境三个地点先行部署,把授权应用迁了过去;看中的还有 PostgreSQL 线路兼容带来的低接入摩擦,以及自动化备份、垃圾回收、滚动升级。
结果
CockroachDB 成为授权系统的关键任务数据库(Cockroach Labs 厂商博客口径)。公开的量化结果很少:客户数 1200 万到 4000 万是公司增长数字,不是数据库性能数字;授权 QPS、延迟、集群规模均未公开。证据等级说明:选型事实与部署形态来自厂商博客,Nubank 官方未在自家工程博客披露对应细节,引用时须注明口径。
机制根因
授权是典型的"一致性优先、可用性也不能丢"负载:内存存储加 Kafka 对账本质是最终一致,脑裂时可能出现重复授权或错误拒绝;Cassandra 的最终一致模型需要应用层自己处理冲突,对金融授权是错配。CockroachDB 的 Raft 多副本加可串行化事务把一致性收回数据库内部,range 自动分片让扩容变成"加节点指向集群"。代价是 on-prem 自运维:团队自己扛时钟同步(NTP 偏移超阈值则一致性保证失效,参见 Jepsen 案例)、备份与升级——比内存方案简单,但比托管云数据库重。
教训
金融授权类场景选型时,"一致性模型"是第一性原理——Cassandra 们不是不好,是错配;厂商博客客户故事的可信度取决于细节颗粒度(这篇有团队名、部署形态、评估过谁,可用但数字要降级引用);on-prem 跑分布式 SQL 省了云账单,但把时钟与运维还给了自己。
来源
  1. Cockroach Labs 官方博客《Brazil's Nubank uses CockroachDB for application resiliency and scale》厂商口径 https://www.cockroachlabs.com/blog/nubank/

相关产品:CockroachDB、Apache Cassandra / ScyllaDB 相关能力:多活生存性 —— 丢一个 region 业务不中断 最后核验:2026-10-02

Coinbase:MongoDB 连接风暴后,把高频 KV 查询迁往 DynamoDB(约 2025) 失败教训

突发流量 连接风暴 多库并存 金融交易
场景
Users Service 是 Coinbase 身份平台的核心,所有关键用户旅程的硬依赖,写少读多,但对读延迟和写正确性要求极高。加密市场行情由价格波动驱动,流量突发且不可预测,一次市场事件就能在深层调用栈底部放大出百万级 RPS 的读流量。该服务最初完全依赖 MongoDB,但部分请求会绕过缓存直接打库,流量高峰时演变为连接风暴和 MongoDB"死亡循环",一旦触发即整服务不可用。(https://www.coinbase.com/blog/scaling-identity-how-coinbase-serves-1-5M-reads-second)
决策
Coinbase 转向联邦持久化:先分析访问模式,把访问最频繁的 K-V 查询数据集从 MongoDB 迁到 DynamoDB——DynamoDB 向客户端提供免连接池管理的托管请求接口,不需要维持活跃连接,为不可预测流量下的稳定性能而设计(准确说不是"数据库本身没有状态",而是"连接管理"这个失效维度被托管层拿走了);MongoDB 保留服务文档型查询和灵活模型。代价是 DynamoDB 没有原生唯一约束,Coinbase 自研了一套框架,用辅助表 + 多项事务保证需要唯一性的列上的原子写入;其余文档负载继续留在 MongoDB。
结果
架构改造(Fragment API + 联邦存储 + 乐观并发控制 + 负载削减)后,Users Service 在市场行情高峰期可持续承受 150 万+ 读/秒——这是整体架构改造的结果,非 DynamoDB 迁移单项的贡献,迁移时间点未单独披露(以上均为 Coinbase 官方博客《Scaling Identity》口径)。连接风暴量化:高流量期蓝绿部署时每分钟近 60K 新增连接;2020 年 4 月一次长时间事故中,单主机连接尝试数超过 MongoDB 128K 单机上限;自研 Go 连接复用代理 mongobetween 上线后,MongoDB 外连总数降低约 20 倍(以上出自 Coinbase 官方博客《Scaling connections with Ruby and MongoDB》)。DynamoDB 迁移前后的延迟/可用性对比、迁移耗时、成本变化未找到公开数据。
机制根因
MongoDB 是连接型有状态数据库,每个应用进程维持连接池;Coinbase 的 CRuby(GVL)应用每台机器就有 10–20K 外连,蓝绿部署瞬间实例数翻倍、连接数翻倍,形成"突发→绕过缓存打库→连接暴涨→失败→重试再增连接"的正反馈死亡循环,在业务最需要可用性的峰值时刻恰恰最可能触发。DynamoDB 的托管请求模型切断了这条反馈链:客户端没有连接池概念、按需弹性,不存在"连接数"这个失效维度。根本教训不是 MongoDB 弱,而是把"高频 K-V 点查"这种访问模式放在客户端需自管连接池的数据库上是模式错配;DynamoDB 缺唯一约束的代价则通过辅助表 + 事务在应用层补回,是选型时就要算进总拥有成本的隐性成本。
教训
突发流量场景下优先评估"连接管理模型":客户端需自管连接池的数据库,在峰值会把连接数放大成雪崩;把"连接管理"列为和延迟/吞吐同级的评估项;不要让一个数据库包揽一切,先做访问模式分析再按模式拆分负载;算清隐性成本,DynamoDB 的唯一约束要自研框架,没有免费的弹性。
来源
  1. Coinbase 官方工程博客《Scaling Identity: How Coinbase Serves 1.5M Reads/Second》 https://www.coinbase.com/blog/scaling-identity-how-coinbase-serves-1-5M-reads-second
  2. Coinbase 官方工程博客《Scaling connections with Ruby and MongoDB》 https://www.coinbase.com/blog/scaling-connections-with-ruby-and-mongodb
  3. MongoDB 官网客户案例《Coinbase Decreases Scaling Time》厂商口径 https://www.mongodb.com/solutions/customer-case-studies/coinbase?tck=hp_case_study

相关产品:Amazon DynamoDB、MongoDB 相关能力:Serverless 零运维:流量不可预测时"先跑起来"的最短路径、单表设计的心智税:"access pattern 先行"既是超能力也是枷锁 最后核验:2026-10-01

Biogen:本地 HPC 一周宕机后迁云,70 万变异注释从 2 周缩到 15 分钟 成功经验

基因组学 本地迁云 Delta Lake 药物靶点发现
场景
Biogen 用人类遗传证据给在研管线排序、发现新基因靶点,核心数据源是英国生物银行(UK Biobank)50 万志愿者的健康与基因组数据,PB 级。但本地数据中心撑不住了:存储不够、网络带宽传不动这么大数据,2018 年其高性能计算集群直接宕机了一周。基因组技术与信息学高级总监 David Sexton 的原话是"我们真的需要一种新的数据范式"。旧范式下,一条注释 70 万个变异的管道要跑 2 周。
决策
Biogen 与 DNAnexus 和 Databricks 合作,把本地基础设施整体迁到 AWS,用 Databricks for Genomics 运行时覆盖从原始数据处理到大规模统计分析的全谱需求;用 Delta Lake 重做变异注释管道;按基因组位置做重度垂直分区(数千列的元数据下这是关键),并把 Spark Hive Metastore 接入其平台访问控制模型做数据安全。
结果
Databricks 官方客户页宣称:原来 2 周处理 70 万变异的管道,优化后约 15 分钟注释 200 万变异;基于 UK Biobank 数据找到 6 个基因中影响人类寿命的变异,识别出 2 个新药靶点,并产出阿尔茨海默病、帕金森病相关洞见。数字为 Databricks 厂商口径(与 DNAnexus 联合实施,效果不可单独归因于 Databricks),引用须注明。2018 年宕机一周与 Sexton 的引言有公开出处。
机制根因
本地 HPC 的病根是"存储、带宽、算力"三者刚性绑定:数据进不来,算力再强也白搭。迁云把三者解耦——S3 存 PB 级数据、带宽弹性、算力按需;Delta Lake 在对象存储上提供 ACID 与版本化,让基因组这种"写一次、反复重注释"的负载敢做大规模重算;按基因组位置分区把"按区间查变异"变成局部扫描。这是典型的"云不是更便宜,而是让不可能变为可能"。
教训
突发性科研负载(一个队列空了、全员同时重跑)和本地 HPC 的固定容量是天然冲突,弹性比峰值性能更重要;基因组数据的分区键必须按生物学访问模式(基因组位置)设计,按时间/随意分区的表在关联分析时会付出数倍代价;迁云的真实收益常常不在账单上,而在"宕机一周"这种风险的消除——TCO 里要给可靠性定价。
来源
  1. Databricks 官方客户故事《Customer Story: Biogen》(厂商口径,含 2 周→15 分钟、2 个新靶点数字
  2. 系与 DNAnexus 联合实施) https://www.databricks.com/it/customers/biogen
  3. —

相关产品:Databricks 相关能力:SQL+ML 同一数据底座 最后核验:2026-10-02

Comcast:语音遥控背后的 Lakehouse——PB 级遥测数据与数百个模型的统一平台 成功经验

实时遥测 语音交互 模型生命周期管理 流批一体
场景
Comcast 是连接数千万家庭的传媒科技公司,其娱乐系统每天产生数十亿事件,2000 多万支语音遥控器带来 PB 级的语音与视频遥测数据,需要做 sessionization 才能分析。旧架构有三重病:数据量撑爆 IT 基础设施;管道脆弱、频繁失败且难以恢复,大量小文件拖慢下游机器学习的数据摄入;全球分散的数据科学家用不同语言写脚本,代码难以共享复用;数百个模型从训练到部署全靠手工,慢且不可复制;模型还要部署到云、本地甚至终端设备等互不相干的环境。
决策
Comcast 把整条链路搬上 Databricks Data + AI 平台:用 Delta Lake 做视频/语音原始遥测的摄入、 enrichment 和初加工;用托管 MLflow(经 Kubeflow 做模型服务)管理数百个模型的完整生命周期;分析师侧继续用 Tableau 消费数据。选型逻辑是"一个平台同时解决数据工程和 ML 工程",而不是再拼一套拼凑方案。
结果
Databricks 官方客户页宣称:Delta Lake 优化数据摄入后,计算资源从 640 台机器降到 64 台,计算成本降为 1/10 且性能更好;为 200 名用户做平台 onboarding 所需的运维人力从 5 人降到 0.5 人;模型部署从"数周"缩短到"数分钟"。以上数字均为 Databricks 厂商口径,Comcast 官方工程博客未披露对应数字,也未找到第三方独立复现,引用须注明口径。公开可查的定性结果是支撑其获奖的语音交互体验的模型迭代速度明显加快。
机制根因
根因有三层。其一是小文件税:流式写入在对象存储上产生海量小文件,查询规划与 listing 开销吞掉大部分算力,Delta Lake 的文件优化(compaction)直接对冲了这一点。其二是流批一体:同一份 Delta 表同时服务实时摄入与历史回填,避免了 Lambda 架构的两套管道。其三是托管红利:autoscaling + spot 实例把"按峰值买机器"变成"按需用算力",640→64 本质是把闲置容量还给了云。代价是把核心数据链路绑定在 Databricks 的托管运行时与 DBU 计价上,迁移出去的成本不低。
教训
Lakehouse 的真正价值不是"快",而是把数据工程、分析和 ML 收敛到同一份数据上——Comcast 的数百个模型如果还在多套系统间搬运数据,部署周期不可能从周降到分钟;小文件治理是数据湖的隐性税,不做 compaction,算力有一半花在"找文件"上;托管平台的降本主要来自弹性(autoscaling/spot),而不是引擎更快,选型时要把"运维人力释放"计入 TCO。
来源
  1. Databricks 官方客户故事《Customer Story: Comcast》(厂商口径,含 640→64、5→0.5 等数字) https://www.databricks.com/it/customers/comcast
  2. —

相关产品:Databricks 相关能力:SQL+ML 同一数据底座 最后核验:2026-10-02

Condé Nast:37 个品牌的数据孤岛收敛,基础设施年省约 600 万美元 成功经验

数据孤岛治理 成本优化 统一治理 媒体个性化
场景
Condé Nast 旗下有 Vogue、The New Yorker、GQ 等 37 个品牌,每个品牌各自为战形成数据孤岛。数据工程高级总监 Nana Yaw Essuman 的原话是"我们在全公司范围内都挣扎着打破数据孤岛"。碎片化的结果是:分析效率低、决策慢、跨品牌做个性化内容推荐时连"同一个用户"都对不齐——在媒体业拼个性化体验的竞争里,这是致命伤。
决策
Condé Nast 选择 Databricks Data + AI 平台做"统一消费者视图":lakehouse 架构承载全品牌数据管道;用 Unity Catalog 做统一的数据访问治理;用 Databricks SQL 让分析师直接在治理后的数据上做分析与决策。选型逻辑不是"换个更快的查询引擎",而是"先有统一可信的数据底座,个性化才有地基"。
结果
Databricks 官方客户页宣称,采用后年度基础设施成本降低约 600 万美元,同时实现全球一致的报表口径与更高的数据准确性。该数字为 Databricks 厂商口径,未披露统计口径(是否含人力、是否对比迁云前本地成本),也未找到第三方独立复现,引用须注明口径。定性层面可确认的是团队响应市场趋势的速度与个性化内容交付能力提升。
机制根因
孤岛的本质是"每个品牌一套烟囱",成本不在存储而在重复建设:37 套管道、37 套口径、37 次治理。Lakehouse 把 37 个烟囱收敛成一份 Delta 数据 + 一套 Unity Catalog 治理,边际成本从"每新增一个品牌加一套"变成"加一张表"。600 万美元的节省大概率主要来自关停冗余系统与合并运维,而非查询更快——这是"整合降本"而非"性能降本",两者的决策含义完全不同。
教训
数据孤岛的税是隐性的:不只体现在多花的机器钱,更体现在"同一个用户对不齐"导致做不出的业务;治理(Unity Catalog 这类)必须和平台迁移同步做,先迁数据后补治理等于给孤岛换了个新地址;评估 lakehouse 收益时,把"关停了多少旧系统"放在"查询快了多少"前面算,后者是锦上添花,前者才是大头。
来源
  1. Databricks 官方客户故事《Customer Story: Condé Nast》(厂商口径,含约 600 万美元数字,未披露统计口径) http://www.databricks.com/customers/conde_nast
  2. —
  3. —

相关产品:Databricks 相关能力:Unity Catalog 统一治理 最后核验:2026-10-02

Regeneron:40 万例外显子组 + 电子病历,基因组查询从 30 分钟降到 3 秒 成功经验

基因组学 药物靶点发现 ETL 加速 PB 级分析
场景
Regeneron 遗传学中心(RGC)建了全球最全面的遗传数据库之一,把 40 多万人的外显子测序数据与其电子健康病历配对,用于发现新药靶点。但数据高度分散在约 10TB 的基因组 + 临床数据集中,800 多亿个数据点让 legacy 架构扩不动:团队光是做 ETL 就要花几天(最长三周),全量查询一次跑 30 分钟,数据科学家根本不敢做"全表扫描式"的探索——而这恰恰是基因关联发现最需要的工作方式。
决策
RGC 把分析栈搬到跑在 AWS 上的 Databricks:用 Spark 驱动的管道重做 ETL,用交互式 workspace 让生物信息学家、数据科学家和计算生物学家在同一份数据上协作。选型关键是"弹性算力 + 同一份数据的交互式分析",而不是再买一台更大的本地 HPC。
结果
Databricks 官方客户页宣称:全数据集查询从 30 分钟降到 3 秒(600 倍);ETL 从 3 周缩短到 2 天。该数字为 Databricks 厂商口径,Regeneron 官方未披露可交叉验证的基准细节,引用须注明口径。定性层面可确认的是团队得以支撑"以前不可能"的新分析方式,把精力从搭集群转向找靶点。
机制根因
基因组数据的访问模式是"宽表 + 全基因组扫描",legacy 架构的瓶颈不在 CPU 而在数据布局与调度:分散的小批量 ETL 导致数据科学家排队等数仓窗口。Spark 的分布式扫描把 800 亿数据点的全表查询变成可交互操作;托管集群管理把 DevOps 工作自动化,相当于把原来花在"等集群、调集群"上的时间还给了科研。代价是这类扫描型负载对算力极敏感,DBU 账单随探索频率大致成比例增长(取决于 workload 形状与自动终止配置),成本 governance 必须跟上。
教训
科研型数据团队的瓶颈往往不是算法,而是"问一个问题要等多久"——30 分钟到 3 秒的差别决定了科学家敢不敢做探索性分析;ETL 从 3 周到 2 天说明很多"数据准备慢"不是数据本身的问题,是架构把简单任务复杂化了;把 HPC 思维(买大机器)换成云原生思维(弹性 + 共享数据),是基因组学规模化的前提,但要为"探索越便宜、探索越频繁"的账单做好预算机制。
来源
  1. Databricks 官方客户故事《How Regeneron is discovering new treatments with AI》(厂商口径,含 600x、3 周→2 天数字) https://www.databricks.com/it/customers/regeneron
  2. —

相关产品:Databricks 相关能力:SQL+ML 同一数据底座 最后核验:2026-10-02

Riot Games:1 亿玩家的行为数据,14 名数据科学家"人手一个集群" 成功经验

游戏遥测 玩家行为分析 自助式集群 数据科学协作
场景
2017 年的 Riot Games,《英雄联盟》拥有约 1 亿玩家。高级数据科学家 Wesley Kerr 在当年 Spark Summit 主题演讲中披露:约 2% 的对局存在严重不良行为(仇恨言论、种族/性别歧视),团队要用数据科学改善玩家体验、识别并治理这些行为。数据规模是"玩家级"的全量行为数据,全部流入 S3 上的 Hive 数仓;旧的交互方式是直接查 Hive,又慢又不适合数据科学家的探索式工作。
决策
Kerr 的原话是"We rely on DataBricks for all of our deployments"。约 14 名数据科学家每人管理自己的集群,随用随开、随手可关,在 Databricks + Spark 上找数据、做分析;Hive 数仓继续做 S3 上的存储层,查询层切到 Databricks/Spark,因为"对我们的数据科学场景快得多"。这是一个 2017 年的早期 lakehouse 形态:对象存储做存储、弹性 Spark 做算力,中间没有重型数仓。
结果
数据科学家获得自助式集群管理能力,不再排队等数仓资源;玩家行为分析(包括聊天文本的不良行为识别)得以规模化。需要诚实说明的是:该演讲未披露任何性能数字(查询提速倍数、集群规模、成本),"查证为无"——只有定性结论可引用。另外该环节由 Databricks 赞助(SiliconANGLE 页面底部有披露声明,称赞助方不干预编辑内容),引用时应一并注明。
机制根因
核心是"存算分离 + 自助算力":S3 存全量行为数据保证便宜可扩展,Databricks 集群只为活跃的分析会话付费,14 个人互不阻塞。对比当时主流的"Hadoop 集群排队"模式,瓶颈从"等资源"变成"想问题"。不良行为识别这类"先探索、再建模"的负载,特别吃交互式分析的响应速度——这正是 notebook + 弹性 Spark 的甜点区。代价是 2017 年还没有 Delta Lake/Unity Catalog 这类治理层,数据质量与权限全靠团队自律。
教训
数据团队的规模化不靠"更大的中央集群",靠"每人都能自助开算力"——14 个数据科学家 14 个集群,协作效率来自不互相等待;存储与查询解耦(S3 + Spark)是后来 lakehouse 的雏形,2017 年就有人在生产里跑通了;引用厂商赞助环节的演讲要做来源分级:事实部分(用了 Databricks、人手集群)可信度高,效果数字缺失就老实写"查证为无",不脑补。
来源
  1. SiliconANGLE《A game of data science: the analytics architecture behind Riot Games》(2017-07-20,Spark Summit 2017 主题演讲 + theCUBE 专访
  2. —

相关产品:Databricks 相关能力:SQL+ML 同一数据底座 最后核验:2026-10-02

Seemplicity:默认配置跑生产,日账单 2000 美元,几天砍到 500 美元 失败教训

成本失控 DBU 计价 实例选型 FinOps
场景
Seemplicity 是一家做 AI 驱动漏洞暴露面管理的网络安全公司,核心是一条 7×24 连续运行的 Databricks 作业(每小时跑一轮,主数据入流)加若干日调度管道。随着功能不断上线,DBU 账单持续走高,团队起初把这当成"业务增长的自然代价",直到某个月突破了与 Databricks 签的月度 commitment(包量),才停下来看钱到底花在了哪。作者 Igal Drayerman 在公司工程博客自述:几天集中优化,日计算账单从 2000 美元降到 500 美元,降幅 75%。
决策
复盘发现账单里全是"默认配置税"。第一,Photon 一直开着:收 2 倍 DBU 费率、提速超 2 倍才回本,而他们以 I/O 密集(读写 Delta 表、流式摄入)和内存密集(GraphFrame)为主,Photon 达不到 2 倍加速——关掉等于白捡钱。第二,实例选反了:Databricks 的 DBU 费率按实例家族区分,通用型单价反而高于内存优化型;换成内存优化型后内存翻倍(64GB)、单价减半,主管道耗时几乎不变。第三,Autoloader 默认目录 listing 模式每次扫描 S3 要 15 分钟,切事件通知模式(SNS+SQS)后降到 3 分钟。第四,Delivery Guard 的 resync 逻辑从独立管道改成主管道内联,独立管道成本归零。第五,删掉没人看的指标查询,有用的挪到数据已物化的阶段。
结果
日账单 2000→500 美元(公司自述口径,非第三方审计)。还发现反直觉规律:autoscaling 下把实例从 64GB/8 核砍半到 32GB/4 核,成本只降约 35% 而非 50%——集群会自动多拉节点补齐,降本是非线性的。账单回到 commitment 之内,团队才保住"继续把 workload 迁进 Databricks"的战略选项——作者原话:按原成本轨迹,他们会被迫重估整个平台选型。
机制根因
DBU 计价的坑在于"单价不透明且与实例家族挂钩":同样的 vCPU,通用型实例的 DBU 费率高于内存优化型,直觉("通用型最划算")在这里是错的。Photon 的 2 倍乘数是"按开启收费"而非"按加速效果收费",I/O bound 的负载开 Photon 等于纯交税。Autoloader 目录 listing 模式的 LIST 请求在深目录树下既慢又贵,是流式摄入的经典暗坑。根因总结:团队把"能跑"当成了"跑得对",没有任何人对 DBU 账单负责,直到 commitment 被突破。
教训
Databricks 的自由度(实例家族、Photon、摄入模式、集群类型)就是"旋钮地狱":每个默认选项都在默默收税,不 benchmark 就等于默认交税;FinOps 不是财务的事,是数据工程的事——system.billing.usage 这类系统表要有人定期看,tag 要打全,预算告警要在超支前响;成本优化最大的杠杆往往不是重构架构,而是"把选错的旋钮拨回去",几天工作换 75% 降幅,ROI 远高于任何新功能。
来源
  1. Seemplicity 公司工程博客《How We Reduced Our Databricks Jobs Compute Costs by 75% - And You Can Too》,作者 Igal Drayerman(2026-05-07,公司自述口径,非第三方审计) https://medium.com/seemplicity/how-we-reduced-our-databricks-jobs-compute-costs-by-75-and-you-can-too-15cd1c359183
  2. —

相关产品:Databricks 相关能力:Photon 向量化引擎、"旋钮地狱":自由度的代价是工程师小时 最后核验:2026-10-02

Datadog 的数据库选型实践(2024–2025):负载分离与三代时序存储 成功经验

负载分离 CDC 多租户 异步复制
场景
Datadog 的共享 Postgres 上,单 org 的 metrics 表越过 5 万阈值后,页面加载变慢、facet 筛选不可靠——实时搜索与分面聚合,本质上和 OLTP 是两种 workload。与此同时,时序数据的实时存储也连换两代:第一代 Cassandra 写扩展性强,但撑不起告警与分析所需的实时查询广度与复杂度,大结果集返回吃力;第二代 Redis 快而灵活,但单线程、快照与 durability 难两全,还有内存管理方面的偶发严重故障。(https://www.datadoghq.com/blog/engineering/rust-timeseries-engine/)
决策
两条线。搜索线:把搜索查询从共享 Postgres 搬走,复制过程中做反范式化,落到专用搜索平台;基于 Debezium + Kafka + Elasticsearch,用 Temporal 自动化整条 pipeline 的开通,以 Schema Registry(Avro)管多租户 schema 演进。时序线:自研第三代 Rust 实时时序存储引擎(RTDB),对 I/O、内存布局、CPU 利用率全栈可控。
结果
据官方博客,搜索场景页面加载从约 30 秒降到约 1 秒(最高降 97%),复制延迟维持在 500 毫秒左右;该平台随后扩展为公司级能力:PG→PG(拆单体大库)、PG→Iceberg(事件驱动分析)、Cassandra 数据源接入、跨区 Kafka 复制。(https://www.datadoghq.com/blog/engineering/cdc-replication-search/)
机制根因
核心洞察是"负载分离"——OLTP 与搜索/聚合对存储的要求正交,硬塞进一个库里两边都受罪;CDC(PG logical replication + Debezium + Kafka)是解耦手段,复制时反范式化一次,下游各取所需;异步复制被坦然接受(搜索场景 500ms 延迟完全可接受),不为不需要的地方付同步代价;时序三代演进则说明:当 workload 足够特殊(超高写 + 实时查询 + 大结果集),通用存储的"木桶短板"会逐个暴露,自研是算过账的选择,不是情怀。
教训
先按 workload 拆分问题,再为每个 workload 选存储;CDC + 反范式化是"保 OLTP、解放查询"的标准解法,500ms 级延迟对搜索类场景通常可接受;自研存储的正当性来自 workload 的特殊性证明(三代试错),而不是第一天就造轮子。
来源
  1. Datadog 官方博客:Rust 时序存储引擎三代演进 https://www.datadoghq.com/blog/engineering/rust-timeseries-engine/
  2. Datadog 官方博客:CDC 复制平台(搜索负载分离) https://www.datadoghq.com/blog/engineering/cdc-replication-search/

相关产品:Apache Cassandra / ScyllaDB、PostgreSQL(社区版) 相关能力:LSM 追加写:吃下"写多读少、只追加"的消息流 最后核验:2026-10-01

Discord 换掉 Cassandra:JVM GC 与 p99 延迟 失败教训

长尾延迟 p99 JVM GC 热点分区 运维负担
场景
2022 年 Discord 消息量达万亿级,Cassandra 集群膨胀到 177 节点。JVM 的 GC 停顿直接打在 p99 上;热点分区单线程处理拖慢整节点;compaction 欠债与 gossip 开销随规模放大,运维团队长期支付"调堆、哄 GC、踢节点"税。(https://discord.com/blog/how-discord-stores-trillions-of-messages)(https://thenewstack.io/how-discord-migrated-trillions-of-messages-to-scylladb/?p=22700719)
决策
Cassandra 跑到 2022 年,迁往 API 兼容的 ScyllaDB;自研 Rust 迁移器与请求合并的数据服务层。
结果
177 节点压缩到 72;读 p99 从 40–125ms 降到 15ms,写 p99 从 5–70ms 波动收敛为稳定 5ms;自研迁移器 320 万 msg/s、9 天完成全量迁移。数字为 Discord 自报,属单方口径。
机制根因
JVM GC 是运行时层面的尾延迟源,调参只能缓解、无法根除;ScyllaDB 的 C++ shard-per-core 架构(无 GC、工作负载感知调度)正好对症;API 兼容让"换引擎不换模型"成为可能,迁移风险集中在数据搬运。
教训
p99 被 GC 和热点分区绑架时,换运行时架构(C++/shard-per-core)比调参有效一个数量级;超大迁移自研专用迁移器比通用方案快一个数量级;先保协议与模型兼容,再换引擎。

相关产品:Apache Cassandra / ScyllaDB 相关能力:ScyllaDB:shard-per-core 消灭 JVM GC 的运维税 最后核验:2026-10-01

Discord 抛弃 MongoDB:单副本的内存墙 失败教训

高并发写入 内存墙 分片策略 长尾延迟 p99
场景
2015 年初 Discord 用两个月搭出第一版,消息全部存在单个 MongoDB 副本集里(刻意为之),但从第一天就预留了数据访问抽象层。2015 年 11 月消息总量达到约 1 亿条,数据加索引装不进内存后,随机读延迟因缺页变得不可预测;团队早在选型时就决定不采用当时认为复杂而不稳定的 MongoDB 分片方案。到 2017 年 1 月博客发布时,消息量已从 1 亿条总量涨到每天 1.2 亿条新增。(https://discord.com/blog/how-discord-stores-billions-of-messages)
决策
2017 年起把消息存储迁往 12 节点 Cassandra 集群。
结果
Cassandra 承接了消息量从 1 亿条总量到每天 1.2 亿条新增的增长(2017-01 博客口径);但批量删除数百万消息留下大量 tombstone,读放大引发 GC 停顿,gc_grace_seconds 从 10 天降到 2 天。
机制根因
Discord 官方原文只说"数据加索引装不进内存后延迟不可预测",没有归因于某个存储引擎——不要把这口锅扣给 WiredTiger。这是 Discord 当时"单个 MongoDB 副本集"架构在该负载下的上限:读模式极度随机(50/50 读写比、大量冷数据随机点查),工作集一旦超出内存,缺页抖动直接打在 p99 上。结论必须限定:它证明的是单副本集方案在该负载下到顶,不证明"MongoDB 的硬上限就是内存",更不能推广为"文档库过内存就该迁 Cassandra"。Cassandra 侧:LSM-tree 追加写使磁盘 I/O 永远顺序,分区键 ((channel_id, bucket), message_id) 让单频道消息天然局部。但删除在 LSM 系不是免费的——墓碑迫使读路径合并所有 SSTable,读放大直接打在延迟上。
教训
为迭代速度选"简单方案"可以,但必须同时预留迁移抽象层(Discord 从第一天就这么干的);对当时的单副本集方案,数据+索引超出内存即撞上扩展上限——但这是单样本结论,不要外推为所有文档库的通用规律;删除在 LSM 系是写操作,按墓碑成本设计 TTL 与清理策略。

相关产品:MongoDB、Apache Cassandra / ScyllaDB 相关能力:LSM 追加写:吃下"写多读少、只追加"的消息流、tombstone 读放大:"删除"是最贵的写操作 最后核验:2026-10-01

DoorDash:全集群调优 Cassandra,成本降 35%(2024) 成功经验

调优降本 压缩策略 布隆过滤器 读写隔离
场景
DoorDash 外卖与零售履约核心链路(订单、广告、菜单/商品数据等团队)长期运行大规模 Cassandra 集群。业务高速增长使集群规模快速膨胀,但 schema、压缩策略、一致性级别等关键配置长期停留在默认或历史设置,留下大量性能和成本优化空间。(https://careers.doordash.com/blog/cassandra-unleashed-how-we-enhanced-cassandra-fleets-efficiency-and-performance/)
决策
基础设施存储团队联合各产品团队开展数月的集中调优:按读写特征把压缩策略从 STCS 切换为 LCS,并联动把 bloom_filter_fp_chance 从 0.01 调到 0.1(否则切换后 OOM);把每日全表快照从"只读 DC 扛批量扫描"改为 token range 随机游走分散负载,最终整个只读 DC 下线;规避跨分区的批量读写反模式;针对性 JVM GC 调优(偏好 young gen、压制 old gen 回收,G1)。
结果
全 Cassandra 集群成本下降约 35%;单位经济性从每 1 美元投入处理 23 KB/秒吞吐量提升到 59 KB/秒,提升约 154%。两数字均出自 DoorDash 官方工程博客正文与 Figure 1,由 DoorDash 存储团队统计的其全集群成本与吞吐量口径。
机制根因
STCS 让大小渐增的 SSTable 长期共存,读放大高、需要预留大量闲置磁盘;LCS 分层后读路径更可预测。切换到 LCS 后 SSTable 更碎更分散,若不放大布隆过滤器误判率,读路径的布隆过滤器会吃光内存导致 OOM——"换压缩策略必须联动布隆过滤器"是根本原因。Cassandra 所有 DC 互联并参与复制,只读 DC 过载产生的延迟会以背压形式回流主 DC,所以"用 DC 做读写隔离"在 Cassandra 里是假隔离,这是下掉只读 DC 后主 DC 反而受益的原因。代价是数月的跨团队调优投入,以及 LCS 写放大高于 STCS、对写密集型表的取舍判断。
教训
默认配置在规模下全是坑,压缩策略、布隆过滤器、一致性级别必须按 workload 成对调优,调优前先对齐访问模式做审计;先调透再扩容,35% 降本来自调优而非加机器,"规模问题=买更多节点"是贵且懒的答案;复制拓扑决定隔离边界,在 Cassandra 里用独立 DC 做读写隔离是架构幻觉,真正的隔离要回到查询本身。
来源
  1. DoorDash 官方工程博客《Cassandra Unleashed: How We Enhanced Cassandra Fleet's Efficiency and Performance》(2024-01-30) https://careers.doordash.com/blog/cassandra-unleashed-how-we-enhanced-cassandra-fleets-efficiency-and-performance/
  2. CDOTrends《Scaling a Data Platform for Growth》 https://www.cdotrends.com/story/15267/scaling-data-platform-growth

相关产品:Apache Cassandra / ScyllaDB 相关能力:可调一致性的运维税:gossip dance 与 compaction 死亡螺旋 最后核验:2026-10-01

浩瀚深度:三物理机受控对比后 ClickHouse 换 Doris,单表 13PB/534 万亿行稳定运行半年(2025) 成功经验

PoC 选型评估 OLAP 选型 受控对比测试 超大规模
场景
浩瀚深度(SHA: 688292,科创板上市公司)旗下顺水云(StreamCloud)大数据平台,需满足客户每日万亿级增量数据的写入与查询。团队对 MPP 数据库做过多轮选型测试,并在生产环境试过 Greenplum、ClickHouse 等多个方案。ClickHouse 体系的痛点:ZSTD 压缩因性能开销频繁报"too many parts"致入库积压、被迫退回 LZ4(存储成本高);节点数据不均衡、坏盘无法自动迁移,人工持续干预;并发查询多了性能明显下降;多表/大表 JOIN 能力不足。
决策
用三台物理机模拟生产环境数据和业务,对 Doris 与 ClickHouse 做受控对比(同数据量、同字段、不同排序键与索引类型,各 3 次冷查询):前缀索引 Doris 为 ClickHouse 2 倍以上;BloomFilter 2 倍;倒排索引 5 倍以上;全表扫描接近(ClickHouse 在 IS_IP_ADDRESS_IN_RANGE 函数上略胜)。据此评估迁移后查询响应提升超 2 倍。实施初期采用 ClickHouse 与 Doris 双跑并行验证,而非直接切换。
结果
选定 Apache Doris 并替换 ClickHouse(MySQL 语法使迁移便捷)。按浩瀚深度自述口径:117 节点集群、单表 13PB/534 万亿行、日均导入 145TB(峰值 158TB)、稳定运行半年以上;导入接口机 32 台→23 台(省超 28%);ZSTD 存储较 LZ4 降 6%;单副本压缩率约 4 倍(6.5PB,双副本+倒排+ZSTD);单 SQL 响应提升近 2 倍、批量查询提升近 30%。压测期的问题(写锁超时、Compaction 假死、事务积压)均已解决并分享至社区。
机制根因
ClickHouse 的痛点集中在"存算一体 + 无自动均衡"的架构特性:坏盘/倾斜要人肉干预,并发一高就退化——这在百 TB 规模可忍,在 13PB/日增百 TB 规模是不可接受的运维税。Doris 的胜出点不是单项跑分,而是"索引丰富度 + 自动均衡 + MySQL 协议"的组合:倒排索引补上了日志场景的检索短板,tablet 自动均衡消掉了坏盘人工干预,MySQL 协议让迁移只是改配置和 SQL。值得注意的是 PoC 本身也不顺利(bucket 设 480 致 Compaction 假死、磁盘写满致事务积压)——"选型测试也测出了新引擎的坑",这恰恰是受控 PoC 的价值:坑暴露在压测期而非生产期。
教训
超大规模选型的第一性指标是"坏盘/倾斜时要不要人肉干预",而不是查询快几倍;PoC 要包含故障与压测(浩瀚深度的 bucket 数、磁盘满盘教训都是压测逼出来的);双跑并行验证是替换核心引擎时的必要成本。诚实注记:所有倍数与规模数字均为浩瀚深度自述口径(阿里云开发者社区第一人称文章),未见第三方独立复现;"国内最大单表"为作者自述。
来源
  1. 浩瀚深度顺水云团队《浩瀚深度:从 ClickHouse 到 Doris,支撑单表 13PB、534 万亿行的超大规模数据分析场景》(2025-08,阿里云开发者社区,团队第一人称) https://developer.aliyun.com/article/1678348

相关产品:Apache Doris、ClickHouse 相关能力:倒排索引与 tablet 自动均衡 最后核验:2026-10-02

快手:ClickHouse+Elasticsearch 双栈收敛到 Doris,广告分析延迟降 64%-90%(2026) 成功经验

广告分析 系统收敛 主键更新 ES 替代
场景
快手(Kling AI 开发商,4 亿 DAU)广告平台:广告素材数据存在 MySQL+Elasticsearch,广告效果数据(曝光/点击/花费)在 ClickHouse,报表查询要在 ClickHouse 里跨库 JOIN 两套系统。规模:广告素材数据累计数千亿行、向万亿迈进,2025 年 Q1 单日新增同比 3.5 倍(日增 3 亿行),700+ 核心字段、4000+ 查询模板。痛点:ES 慢查询率 35%、平均延迟 1.4 秒;ES 单分片撑不住 10 亿行以上数据集、扩容要做代价高昂的数据重分布;两套系统之间没有端到端可观测性,排障要跨系统排查。(https://medium.com/@VeloDB_poweredby_ApacheDoris/from-clickhouse-elasticsearch-to-apache-doris-how-kwai-unified-trillion-scale-ad-analytics-31528f41513d)
决策
团队把 Doris、ClickHouse、Elasticsearch 拉到同一压测基准上对比写入吞吐、查询延迟、存储压缩和全文检索。ClickHouse 最先被淘汰——它不支持 Unique Key 更新,而广告素材表需要高频主键更新,这是硬约束;剩下 ES 和 Doris 全面对比,Doris 在写入吞吐、查询性能、存储效率、运维简单度上全部胜出。迁移分三阶段:试点验证(关键词推广场景双管线校验)→ 核心迁移(广告素材数据迁入、ES 集群下线)→ 全量收官,自建统一分析引擎 Bleem(Doris 核心 + Alluxio 缓存层 + OneSQL 统一网关)。
结果
以下均为 VeloDB 官方渠道口径(2026-03 文章),未经独立第三方复现:关键词推广页平均延迟降 64%、创意推广页延迟降 90%;写入吞吐 3 倍,单表实时写入峰值 300 万行/秒/节点;存储效率比 ES 高 60%(分区策略+ZSTD 压缩),支撑万亿行单表;慢查询率从 35% 降到 5% 以下;统一可观测性让平均排障时间降 80%。
机制根因
决定性机制是"Unique Key 模型 + 倒排索引"的组合:广告素材表用 UNIQUE KEY(account_id, id) + 倒排索引,一张表同时承担 ES 的全文检索和高并发主键更新——这正是 ClickHouse(无行级 upsert 语义)和 ES(更新模型弱、单分片上限)的各自短板面。Doris 存算分离/耦合双模式支撑大表弹性扩展;万分区裁剪、数据倾斜处理、Stream Load 参数调优是落地时的工程关键。代价:迁移中 SeaTunnel 两阶段提交在 Spark 推测执行下出现数据重复,团队引入 ZooKeeper 分布式锁兜底——统一引擎不等于零运维,大规模写入一致性仍要自己解决。
教训
先淘汰不满足硬约束的选项(主键更新),再比性能,避免在错误候选上浪费压测;统一引擎的收益不只是延迟数字,更是端到端可观测性带来的排障效率;大规模迁移三阶段走、双管线并行校验数据一致性,不要一次切完。
来源
  1. VeloDB 官方博客《From ClickHouse + Elasticsearch to Apache Doris: How Kwai Unified Trillion-Scale Ad Analytics》(2026-03-26,厂商生态渠道,数字为 VeloDB/快手团队自述口径) https://medium.com/@VeloDB_poweredby_ApacheDoris/from-clickhouse-elasticsearch-to-apache-doris-how-kwai-unified-trillion-scale-ad-analytics-31528f41513d
  2. Apache Doris 官网博客《Practice and optimization of Apache Doris in Kwai》(含快手工程师关于 MySQL 协议的原话) https://github.com/apache/doris-website/blob/HEAD/blog/BestPractice_Kwai.md
  3. —

相关产品:Apache Doris、ClickHouse 相关能力:一个 Doris 干掉 ES+ClickHouse+HBase、Unique Key 模型的实时更新 最后核验:2026-10-02

美团:300+ 集群、数十 PB 的 Doris 统一服务层与版本治理 成功经验

多引擎收敛 服务层统一 超大规模集群 版本治理
场景
美团数据平台长期多引擎并存(Hadoop、Kylin、Druid 等,各管一摊)。四个倒逼选型的挑战:分析报表要秒级返回、部分面向业务的场景要亚秒;核心业务表数千亿行;交易/运营/用户/流量/商户各业务线查询模式、并发、时效要求差异大;BI 系统合并后底层要能扛统一分析。Doris 被定位在"数据服务层":实时链路 Kafka→Flink→Doris 支撑实时大盘与在线分析,离线链路 Hive/HDFS→Spark 清洗建模→同步到 Doris 对外服务。两个定义需求的典型负载:到店餐饮 BD 效能分析(数百维度、几十个聚合指标、要求精确去重,近似计数不可接受)、商户经营报表(面向商户的高并发点查,查询挡在商户等 dashboard 刷新的路径上)。(http://velodb.io/blog/how-meituan-consolidated-its-analytics-stack-on-apache-doris)
决策
选 Doris 做统一服务层收敛多引擎;随后把 Doris 没扛过的新负载不断搬上来,遇到问题自研解决并回馈社区:为外卖报表多表 JOIN 超时自研 Colocate Join;为流量/用户分析的精确去重做 Bitmap 系列优化;为"生产与查询抢资源"建 Spark on Doris 架构;为 300+ 集群的版本治理(0.1 到 2.1 的版本跨度)用跨集群复制 CCR 做不停服升级。
结果
以下为 VeloDB 文章口径(改编自美团技术专家在 Apache Doris 线上活动的分享),未经独立第三方复现:平台规模 300+ 集群、数十万 CPU 核、数十 PB 数据,最大单集群 10PB;Colocate Join 内测 join 查询平均 3 倍提升,外卖报表回到超时窗口内;Bitmap 优化后亿级基数下指标计算平均快 4-5 倍、单表查询 10 秒内返回;升级+治理完成后整体查询写入性能提升 20%-40%、极端场景 50%,全集群稳定性明显改善。
机制根因
Colocate Join 把参与 JOIN 的数据预先分布到同一节点,计算找数据而非数据找计算,消除 shuffle 开销;Bitmap 正交分桶控制数据分布基数,解决高基数精确去重的内存与速度问题;CCR 用 binlog 增量追赶把一次性迁移变成持续追赶,新老集群并行、DNS 一切换即完成 PB 级不停服升级。代价在治理侧:版本跨度带来语义差异、元数据膨胀(个别老集群副本数达千万级、影响 FE 恢复)、升级前必须先做元数据治理——规模上去后,难题从性能变成治理。
教训
统一服务层之后真正的挑战是治理(版本、元数据、集群健康),不是查询性能;PB 级集群不要停机重载升级,用增量追赶+双跑业务语义校验;把自研能力(Colocate Join、Bitmap 优化、CCR 回补)回馈社区,能把一次性投入变成长期公共资产。
来源
  1. VeloDB 官方博客《How Meituan consolidated its analytics stack on Apache Doris》(改编自美团技术专家在 Apache Doris 线上活动的分享,数字为美团团队自述口径) http://velodb.io/blog/how-meituan-consolidated-its-analytics-stack-on-apache-doris
  2. —

相关产品:Apache Doris 相关能力:一个 Doris 干掉 ES+ClickHouse+HBase 最后核验:2026-10-02

网易游戏:六引擎收敛到 Doris 统一湖仓,每天 1500 万查询(2026) 成功经验

六引擎收敛 湖仓一体 Bitmap 去重 游戏行业
场景
网易游戏数据平台:每天 1500 万查询、200+ 内部项目、PB 级存储。原架构 6 套系统:Hive+Spark 做批处理、Trino 做即席查询、Elasticsearch+HBase 做实时点查、ClickHouse 做分析。痛点:数据经过多套系统才到分析师手里、实时性差;Hive/Spark/Trino 的交互查询性能不足,HBase/ES/CK 对复杂 JOIN 支持有限;6 套系统要 6 套专人运维;每个新需求要分别写 Spark/Trino/HBase 作业加 ES DSL,分析师要学多套工具。(https://medium.com/@VeloDB_poweredby_ApacheDoris/netease-games-from-elasticsearch-hbase-and-clickhouse-to-a-unified-apache-doris-lakehouse-686362fa1bc1)
决策
两阶段收敛。阶段一:Doris 替换 ES、HBase、ClickHouse 做实时层(Doris 当时已是网易内部使用最广的 OLAP 引擎之一)。阶段二(从 Doris 2.1 起):再替换 Hive、Spark、Trino,建成以 Doris 为核心的统一湖仓,自研 SmartSQL 做内部查询路由(支持"Doris 查湖"和"Doris 统一湖仓"两种模式)。
结果
以下均为 VeloDB 官方渠道口径(2026-08 文章),未经独立第三方复现:现运行 20+ Doris 集群、数百节点,服务 200+ 项目、每天 1500 万查询、PB 级存储。宽表分析场景:Doris 与 ClickHouse 查询性能相当,但显著更易运维(降低运维人员技术门槛)。用户行为分析:14 亿记录数据集上做 Bitmap 优化后,峰值内存从 54GB 降到 4.2GB、查询时间从 20 秒降到 2 秒以内。联邦查询场景:Doris 跨源查询性能是 Presto 的 2-3 倍。
机制根因
Doris 的倒排索引+主键点查覆盖 ES/HBase 的实时检索需求,列存 MPP 覆盖 CK 的分析需求——"一个引擎同时扛检索和 OLAP"是收敛成立的前提;Bitmap 索引与物化视图加速用户行为分析(14 亿记录精确去重);Workload Group 资源隔离替代 Trino 的一长串资源限制参数,大查询不再拖垮集群。诚实备注:超大 ETL 作业仍回退到原 Hive/Spark/Trino 引擎池——不是所有负载都硬搬,这是务实做法。
教训
收敛分阶段走,先实时层后批处理层,不要一次掀桌子;SQL 方言兼容(生产 99%+)和 Hive UDF 兼容是迁移成本的决定项;保留回退路径(超大 ETL 留原引擎)比"全部迁移"的口号更可持续。
来源
  1. VeloDB 官方博客《NetEase Games: From Elasticsearch, HBase, and ClickHouse to a Unified Apache Doris Lakehouse》(2026-08-26,厂商生态渠道,数字为网易游戏团队自述口径) https://medium.com/@VeloDB_poweredby_ApacheDoris/netease-games-from-elasticsearch-hbase-and-clickhouse-to-a-unified-apache-doris-lakehouse-686362fa1bc1
  2. —

相关产品:Apache Doris、ClickHouse 相关能力:一个 Doris 干掉 ES+ClickHouse+HBase 最后核验:2026-10-02

腾讯音乐数据平台:ClickHouse 迁 Doris,部分列更新省存储 42%(2023) 成功经验

ClickHouse 迁移 部分列更新 语义层 工程师一手
场景
腾讯音乐数据平台工程师 Jun Zhang 与 Kai Dai 的一手复盘:8 亿 MAU 的曲库数据资产(歌曲/歌词/旋律/专辑/艺人),离线数仓 TDW 产出 800+ 标签、1300+ 指标、80+ 源表。原架构:宽表导入 ClickHouse 做分析、Elasticsearch 做搜索与人群圈选。痛点:CK 不支持部分列更新——任一数据源延迟都会拖慢整条宽表链路、损害时效性;全量灌宽表浪费存储;CK 存算耦合、组件强依赖,集群稳定性风险高;CK-ES 跨库联邦查询的连接问题繁琐耗时。(https://github.com/apache/doris-website/blob/HEAD/blog/Tencent-Data-Engineers-Why-We-Went-from-ClickHouse-to-Apache-Doris.md)
决策
Doris 的 Aggregate 模型支持实时部分列更新:Spark→Kafka→Flink 预聚合→Doris/ES;大宽表按更新频率拆成小表、用 Doris 多表 JOIN 与 ES 外表联邦查询替代"一个大宽表灌到底";引入语义层统一标签指标定义;列名用 ID 映射(如 song_name 存为 a4)规避标签频繁上下线带来的加列/删列开销。
结果
以下均为两位工程师自述口径(2023-03-07 文章),未经独立第三方复现:存储成本降 42%、开发成本降 40%;每日离线导入时间降 75%、CUMU compaction 评分从 600+ 降到 100;新标签上线 10 分钟后可查;人群圈选场景要求秒级响应。
机制根因
Aggregate 模型的部分列更新是 ClickHouse 机制性缺失的能力——各源表 ETL 节奏不一、只涉及部分标签指标时,不必等全量宽表;Doris 联邦查询(ES 外表自动映射 schema)减少数据搬运;FE/BE 双进程、无外部依赖的架构降低运维复杂度。诚实备注:Doris 1.1.3 不支持修改列名,团队用 MySQL 元数据表做"名→ID"映射绕行,直到 1.2.0 的 Light Schema Change 才解决——版本能力边界要写进方案。
教训
把"数据会变"(部分列更新)列为硬约束再选型,而不是事后补救;宽表按更新频率拆分比一股脑灌宽表更省存储、吞吐更高;追踪版本能力边界(列名修改、schema change 代价),避免方案建立在"下个版本会修"的假设上。
来源
  1. Apache Doris 官网博客《Tencent data engineer: why we went from ClickHouse to Apache Doris?》(2023-03-07,作者为腾讯音乐数据平台工程师 Jun Zhang & Kai Dai,一手生产复盘,数字为作者团队自述口径) https://github.com/apache/doris-website/blob/HEAD/blog/Tencent-Data-Engineers-Why-We-Went-from-ClickHouse-to-Apache-Doris.md
  2. —

相关产品:Apache Doris、ClickHouse 相关能力:Unique Key 模型的实时更新、MySQL 协议零学习成本接入 最后核验:2026-10-02

小米:Doris+Paimon 统一湖仓,查询延迟 60 秒到 10 秒(2026) 成功经验

湖仓一体 Paimon 物化视图 高并发
场景
小米 OLAP 平台:原多引擎(Presto、Druid、Doris)+ 多存储格式(Iceberg、Paimon、Doris、Druid),数据按分钟/小时/天存在不同系统、冗余且不一致;每个引擎独立建模、独立权限,治理成本高。先建成 Doris(查询引擎)+ Paimon(开放表格式)湖仓,再把 Doris 从"只查湖"升级为"实时数仓"——热数据进 Doris 内表,用物化视图、JOIN 能力与回写能力拿数仓级性能。(https://www.velodb.io/blog/unified-lakehouse-apache-doris-apache-paimon-xiaomi)
决策
统一计算引擎为 Doris+Spark(Doris 管实时交互分析、Spark 管离线批处理)、统一存储为 Paimon;冷热分层:冷/历史数据放 Paimon(低成本、开放格式),热数据与高频聚合进 Doris 内表。针对性优化三处:Paimon 聚合下推到 Doris C++ 引擎(绕过单线程 Java SDK 的 merge 瓶颈)、快照级增量物化视图、HDFS 读超时 60 秒→100 毫秒+数据缓存。
结果
以下均为 VeloDB 官方渠道口径(2026-03 文章),未经独立第三方复现:平均查询延迟 60 秒→10 秒(6 倍);聚合查询 40 秒→8 秒(5 倍);高并发场景查询延迟降到原来的 25%-75%,并发从 5 提到 80,并发吞吐是 Presto 的 5 倍;HDFS 长尾 P99 翻倍、整体性能提升 10%。上述优化已全部回馈 Apache Doris 社区。
机制根因
Doris 原生 Parquet Reader 直读 Paimon 数据文件 + 分布式 Hash 聚合,替代 Paimon Java SDK 单线程排序合并,这是 5 倍聚合加速的来源;快照级增量 MV 只读指定 snapshot 范围、避免全量重算;HDFS 快速失败重试(100ms 超时)+ 本地缓存解决长尾抖动。代价/边界:Doris 做纯查询引擎时,Paimon Merge-on-Read 表读取是已知短板——湖仓一体不是"只查湖",热数据必须进内表或缓存才能拿到数仓级性能。
教训
湖仓一体的正确姿势是"冷数据放湖、热数据进仓",而不是所有查询都直查湖;长尾延迟靠"超时+重试+缓存"三件套系统性解决;把优化回馈社区,小米的快照级增量 MV 已成为 Doris 公共能力。
来源
  1. VeloDB 官方博客《Unified Lakehouse with Apache Doris + Paimon: Xiaomi Achieves 6x Faster Performance》(2026-03,厂商生态渠道,数字为小米团队自述口径) https://www.velodb.io/blog/unified-lakehouse-apache-doris-apache-paimon-xiaomi
  2. —

相关产品:Apache Doris 相关能力:一个 Doris 干掉 ES+ClickHouse+HBase 最后核验:2026-10-02

Dropbox 的 MySQL 元数据帝国(2013–2016):Edgestore 与 Magic Pocket 成功经验

元数据与Blob分离 强一致 EB级存储 无聊技术
场景
Dropbox 的核心难题是元数据:谁拥有什么文件、什么权限、哪个版本——要求强一致、高可用、全球分布。早期靠重度分片的 MySQL 撑起全部元数据;随着业务膨胀,在 MySQL 上继续"打补丁加功能"的边际成本越来越高。(https://dropbox.tech/infrastructure/reintroducing-edgestore)
决策
两条线并行。元数据线:自研 Edgestore——强一致、读优化、水平扩展、地理分布的元数据存储,"与其继续在 MySQL 基础设施上打补丁,不如把数据库彻底抽象掉"(官方博客原话);数十个内外部产品共享同一 Edgestore 部署。Blob 线:自研 Magic Pocket 不可变块存储,块索引层继续用分片 MySQL(hash → cell/bucket/checksum)。(https://dropbox.tech/infrastructure/inside-the-magic-pocket)
结果
Magic Pocket 达到 EB 级规模(据 InfoQ 报道);Edgestore 成为数十个产品的统一元数据底座,一致性缓存、事件流、跨数据中心复制等硬骨头只啃一次。
机制根因
元数据与 blob 分离是关键一刀——blob 用不可变块 + SHA-256 内容寻址,天然去重、消灭一致性复杂度;索引层(block index)故意用"无聊"的分片 MySQL,因为团队对它的运维能力最有把握,"足够好且运维熟"胜过"理论上更优";Edgestore 则把真正难的东西(多租户隔离、一致性缓存、事件流、跨 DC 复制)做成平台能力,一次投入、处处复用。
教训
创新要放在刀刃上:索引/元数据层用你最熟的无聊技术,把自研火力集中在存储引擎和平台抽象层;当"在现有库上打补丁"的成本超过"抽象掉它"时,就是自研平台的时机——但前提是你已经用旧方案撑到了那个规模。
来源
  1. Dropbox 官方博客:Edgestore 介绍 https://dropbox.tech/infrastructure/reintroducing-edgestore
  2. Dropbox 官方博客:Magic Pocket 内幕 https://dropbox.tech/infrastructure/inside-the-magic-pocket

相关产品:MySQL 相关能力:简单 OLTP 下"最不折腾周末"的运维体感 最后核验:2026-10-01

FinQore:财务报告管线从 8 小时压到 8 分钟,Postgres 数据集逐步被替换(2025) 成功经验

财务报表自动化 ETL 管线 Postgres 替换 AI Agent 实时 RAG 60 倍加速
场景
FinQore 是面向 CFO 及其财务团队的收入智能(revenue intelligence)平台,要从客户的账单系统、ERP、CRM、产品系统等多源抽取财务、客户、产品数据,拼成按客户业务逻辑分段的"收入立方体"(revenue cube),实现月度/季度报告周期的自动化。原来跑在 Postgres 上的数据管线一次要跑 8 小时,财务团队想即时分析、探索、落地数据时只能干等。(https://motherduck.com/case-studies/finqore/)
决策
FinQore 把整条管线押注在 DuckDB + MotherDuck 上:用 MotherDuck 处理和统一多源数据,跑一条代码生成的专有管线,每天产出一份全公司唯一的财务可信数据源;前端全部用 MotherDuck,并"系统性地把原来从 Postgres 拉的数据集替换掉"。选型逻辑是开发体验一致:本地 DuckDB 开发调试,云端 MotherDuck 跑生产,同一引擎。
结果
联合创始人兼 CTO Jim O'Neill 原话:"Our data pipelines used to take eight hours. Now they're taking eight minutes"(管线从 8 小时降到 8 分钟,约 60 倍),并称"and I see a world where they take eight seconds"。在此基础上 FinQore 推出了指标浏览器和 AI 财务分析师 Qori——基于 MotherDuck + DuckDB 做实时 RAG(检索增强生成),让 agent 的回答引用真实、最新的财务数字而非模型幻觉。"8 小时→8 分钟"为 MotherDuck 官方案例口径,管线覆盖的数据量、并发规模未披露,引用时须注明口径。
机制根因
财务报告是典型的"多源抽取→统一变换→高频聚合"负载,瓶颈在引擎模型而非硬件:Postgres 是行式 OLTP 引擎,大范围扫描聚合时逐行开销大;DuckDB 列式向量化执行一次处理一批列,在这类大范围扫描聚合的场景下比行式逐行快约一个数量级(该场景的实测对比,非通用加速比)。进程内模型还省掉了"ETL 进数仓"的数据搬运链路。MotherDuck 则解决了纯 DuckDB 的短板:单机文件无法多用户协作、云端无 serverless 弹性——把同一个 DuckDB 引擎搬到云上,管线才能从笔记本走进生产调度。
教训
OLTP 库兼职 OLAP 的天花板往往比预期来得早,8 小时管线里的大头通常是"用错引擎"而非"数据太大";进程内 OLAP + 云端同引擎的组合,可以替代传统的重 ETL 链路,开发、测试、生产用同一套 SQL 与语义;AI agent 要可信地回答业务问题,底座必须是"快到能实时查"的分析引擎,RAG 的延迟预算直接决定了架构选型。
来源
  1. MotherDuck 官方案例《Financial Reporting Automation: 8 Hours to 8 Minutes》厂商口径 https://motherduck.com/case-studies/finqore/

相关产品:DuckDB、PostgreSQL(社区版) 相关能力:进程内 OLAP:pip install 即拥有的分析引擎 最后核验:2026-10-02

GoodShip:Postgres 频繁超时 → 亚秒级 AI 货运分析师,每租户独立 Duckling(2026) 成功经验

AI Agent 物流分析 多租户隔离 Postgres 超时 serverless 计费
场景
GoodShip 是货运编排、采购与定价的一体化平台,分析后端跑在 Postgres 上。客户增长后,复杂查询(晚交付记录 join 财务、承运商罚金、多年运营数据聚合)越来越慢直至超时,大历史查询直接无结果返回。较大的数据集约 400 万行、跨 3–4 年——按数仓标准不算大,但足以暴露 Postgres 跑分析负载的极限,用户体验持续恶化。(https://motherduck.com/case-studies/goodship-ai-transportation-analyst/)
决策
评估备选:ClickHouse 是有力竞争者,但查询方言偏离 Postgres SQL,长期维护负担重;Starburst、Apache Pinot 要自己管集群,"moving parts 太多"。最终选 MotherDuck:SQL 方言友好、serverless 基建、计费模型贴合"早上集中看数"的间歇型负载。团队基于 MotherDuck 的 remote MCP 不到一周搭出 Laney v1——业界第一个 AI 货运分析师,2026 年 1 月上线生产,随后把整个报表后端都切到 MotherDuck。
结果
Postgres 上 60 秒超时无结果的查询,经 MotherDuck 亚秒返回;hypertenancy 架构下每客户一个 service account、一份独立数据库切片,agent 生成的 SQL 在结构上无法访问其他客户的数据(对比 Postgres 里"只是一个 tenant_id 字段"的软隔离);serverless 按用计费,"早上看数、然后去解决问题"的间歇负载不再为空转集群付费。VP Engineering Eric Dillon 称客户反响"rapturous"(热烈)。以上均为 MotherDuck 官方案例口径。
机制根因
Agent 式分析是串行推理链:查一次、看结果、决定下一步,每步 30 秒延迟产出的不是"慢仪表盘"而是"不可用的 agent"——延迟在这里是可用性问题。DuckDB 列式引擎解决扫描聚合速度;hypertenancy 用"每租户独立 DuckDB 进程(Duckling)"的物理隔离替代 WHERE 子句的逻辑隔离,这对"SQL 由 AI 生成"的场景至关重要:隔离必须是结构上不可能越界,而非约定不越界。实时性需求(如标记争议、静音告警)则用 DuckDB 的 Postgres 扩展把 Postgres 实时数据与 MotherDuck 快照 union 起来。
教训
给 AI agent 选数据底座时,先算推理链的延迟预算,再谈功能;多租户 + agent 生成 SQL 的组合下,租户隔离要做到物理/结构级别,逻辑隔离挡不住不可预测的生成 SQL;间歇型负载别为闲时集群付费,serverless 计费与" bursts"型使用模式天然契合;迁移可以分两步走——先解决最痛的 agent 查询,再翻转整个报表后端。
来源
  1. MotherDuck 官方案例《GoodShip: Building an Analytics Agent for Global Logistics》厂商口径 https://motherduck.com/case-studies/goodship-ai-transportation-analyst/

相关产品:DuckDB、PostgreSQL(社区版)、ClickHouse 相关能力:单写者 + 无 Server:并发与多租户的天花板 最后核验:2026-10-02

Hugging Face:38 万数据集的 SQL 控制台由 DuckDB WASM 驱动,hf:// 直查免下载(2024–2026) 成功经验

AI 数据集 浏览器内分析 WASM hf:// 协议 零下载查询
场景
Hugging Face Hub 托管 38.4 万+数据集,从几千行到数亿行不等。ML 研究者最常见的诉求是"不下载全量数据就用 SQL 探索"——传统路径要么整库下载,要么搭 Spark/数仓,太重。(https://huggingface.co/blog/cfahlgren1/querying-datasets-with-duckdb-ui;https://duckdb.org/2026/09/25/hugging-face)
决策
DuckDB 与 Hugging Face 合作(2024 年 5 月随 DuckDB v0.10.3 发布),在 httpfs 扩展上增加 hf:// 协议,把数据集仓库映射成可读路径,查询直接读远端文件原地分析;HF Data Studio 的 SQL 控制台由 DuckDB WASM 驱动,完整 OLAP 引擎跑在用户浏览器里;DuckDB v1.2.1 起 CLI 自带本地 UI(duckdb --ui,由 MotherDuck 与 DuckDB Labs 合作开发),大查询切到本地跑,绕开浏览器资源限制。
结果
一行 SQL 直查云端数据集:select * from 'hf://datasets/glaiveai/reasoning-v1-20m@~parquet/default/train/*.parquet' limit 500,其中 @~parquet 走 HF 的 Parquet 转换,列式读取只扫需要的列;Data Studio 里点"Copy for DuckDB CLI"一键把查询搬到本地 UI。数据集越来越多以 Parquet 发布,而这正是 DuckDB 原生能读、无需全量物化进内存的格式。
机制根因
httpfs 的 range read 只拉取查询需要的行组,网络传输量与"查询的选择性"成正比而非与"文件大小"成正比;WASM 把完整 OLAP 引擎塞进浏览器,计算下推到用户侧,服务端只做文件托管——查询并发由用户设备分担,这是中心化数仓做不到的成本结构;Parquet 作为开放列式格式,是"免下载查询"得以成立的地基。
教训
开放列式格式(Parquet)+ 轻量可嵌入引擎,足以让数据平台把"查询"这件事外包给用户侧;AI 数据集这类读多写少、探索式访问的场景,server 模式是多余成本;协议层创新(hf://)有时比引擎优化更能改变用户体验——它消灭的是"下载"这个步骤本身。
来源
  1. Hugging Face 官方博客《Querying Hugging Face Datasets with the DuckDB UI》 https://huggingface.co/blog/cfahlgren1/querying-datasets-with-duckdb-ui
  2. DuckDB 官方博客《DuckDB and Hugging Face: Querying Datasets Directly》 https://duckdb.org/2026/09/25/hugging-face

相关产品:DuckDB 相关能力:被嵌入的分析引擎:BI 产品的"标配内核" 最后核验:2026-10-02

Layers:躲开上游调价暴涨,每租户一个 DuckDB 做多租户分析(2025) 成功经验

多租户 SaaS 成本优化 客户画像分析 110ms SLA Tinybird 迁移 零拷贝分析
场景
Layers 给零售品牌做站内搜索、推荐和用量分析,流量又大又抖:典型一天 1 亿请求,大促时逼近 10 亿。客户-facing 仪表盘要求查询落在 110ms 以内,否则拖慢店面体验;不同租户行为差异极大,小品牌涓涓细流、大零售商 firehose 级数据量,留存窗口需求也不同。团队最初用 Postgres + 流式管线 + serverless 数据 API 拼凑,Postgres 跑分析先到瓶颈,又搬到 Tinybird(serverless ClickHouse)。随后 Tinybird 调价——按 MotherDuck 官方案例 TL;DR 表的口径,"每租户预计成本涨 100 倍";同一页面的 Results 总结则写成"避免了预计 1000 倍的成本上涨",两处数字不一致(均为 MotherDuck 厂商口径),引用时须注明。
决策
Layers 暂停路线图重做架构,核心两条:第一,每租户独立 DuckDB 引擎(MotherDuck 的 hypertenancy),一个 SaaS 客户就是一个 mini 数仓,进程级隔离、按租户计量 CPU 秒数;第二,放弃"永远在线的流式摄入"心态,改走批式对象存储:Cloudflare Pipelines 每 5–15 分钟把压缩 Parquet 微批落到 R2,MotherDuck 对文件零拷贝就地查询,不经过 ETL 进专有存储。
结果
躲开了上游调价带来的成本暴涨;小租户边际成本降到"几分钱的零头"(fractions of a penny),得以新开免费档;仪表盘回到 110ms SLA(少了一次经过外部查询 API 的网络跳转);大零售商的长扫描不再跟小租户抢资源;留存窗口变成销售谈判筹码——免费档 5 天、企业版 180+ 天,按租户改生命周期规则即可,无需数据迁移。以上均为 MotherDuck 官方案例口径。
机制根因
DuckDB 轻到可以按需实例化,这是"每租户一个引擎"的前提——共享集群架构下大租户的重查询必然产生 noisy neighbor,而独立 DuckDB 进程天然隔离。对象存储范式解决成本:Parquet 落对象存储每 GB 每月几分钱,MotherDuck 直接读文件,历史数据"留着也无妨",留存从成本项变成可配置项。批式替代流式的前提是诚实面对 SLA:客户要的"实时"是 5–15 分钟新鲜度,不是毫秒级,架构不必为伪需求付流式税。
教训
多租户 SaaS 的分析成本必须能按租户归因计量,否则大租户在悄悄补贴小租户、定价无从谈起;vendor 的定价模型变更是真实的架构风险,开放格式(Parquet)+ 可移植引擎是最便宜的保险;先问清"实时"的真实定义再选架构,分钟级批和毫秒级流的成本可差数个数量级(架构量级差异,取决于数据量与实时性 SLA);AI 推荐/ML 训练可以直接复用同一套租户隔离的分析查询,不必另起炉灶。
来源
  1. MotherDuck 官方案例《Multi-Tenant Data Warehouse: Per-Customer Analytics》(厂商口径,注意 TL;DR 表与 Results 的 100x/1000x 口径差异) https://motherduck.com/case-studies/layers-multi-tenant-data-warehouse/
  2. —
  3. —

相关产品:DuckDB、ClickHouse、PostgreSQL(社区版) 相关能力:进程内 OLAP:pip install 即拥有的分析引擎、单写者 + 无 Server:并发与多租户的天花板 最后核验:2026-10-02

Rill:DuckDB 作为默认内嵌 OLAP 引擎,BI 项目开箱即有分析库(2024–2026) 成功经验

BI 内嵌引擎 默认 OLAP 运营智能仪表盘 零运维 开箱即用
场景
Rill 是代码优先的 BI/运营智能(operational intelligence)平台,主打低延迟、高性能、可下钻的仪表盘,支持告警与定时报告。要让每个项目开箱就有"快且可交互"的分析底座,不能要求用户先搭数仓、再导数据——默认 OLAP 引擎必须零运维、启动快、查询快。(https://github.com/rilldata/agent-skills/blob/HEAD/skills/rill-development/SKILL.md)
决策
把 DuckDB 定为默认内嵌 OLAP 引擎:rill.yaml 里不配置 olap_connector 时,Rill 自动初始化一个托管的 duckdb OLAP 数据库并作为默认连接器;模型(model)默认把表物化进默认 OLAP 连接器;managed: true 时 Rill 自动置备,用户不碰基建与凭证。重负载用户可显式换 ClickHouse、Druid、Pinot、StarRocks,或直连 Snowflake/BigQuery/Databricks 等外部 OLAP。
结果
Rill 官方 agent-skill 文档确认上述默认行为;Rill Cloud 对托管 duckdb 按实际 CPU/内存/磁盘用量计费。Rill 的"operational intelligence"定位(低延迟下钻、告警、定时报告)得以开箱即用:从 YAML + SQL 代码到可交互仪表盘,中间不需要用户做任何数据库运维。
机制根因
DuckDB 进程内、无依赖、启动快,适合"每个项目一个库"的托管模式——这正是传统 server 式 OLAP 做不到的粒度;列式向量化保证仪表盘下钻交互的延迟;Rill 的驱动针对各引擎特性做专门优化,而 DuckDB 是默认路径,意味着它的"默认体验"决定了产品的第一印象。managed duckdb 也是 Rill 仅有的两种可自动置备 OLAP 之一(另一种是 ClickHouse)。
教训
BI/数据产品的引擎选型逻辑里,"默认路径必须零运维"优先于峰值性能;DuckDB 的价值不只是快,而是"把 OLAP 从服务变成库",让上层产品敢把它当默认项——这是 SQLite 当年走过的路;可替换架构(默认 DuckDB、重负载换 ClickHouse/数仓)比"一个引擎打天下"更诚实,也更能留住从小到大的用户。
来源
  1. Rill 官方仓库文档(agent-skills / rill-development) https://github.com/rilldata/agent-skills/blob/HEAD/skills/rill-development/SKILL.md
  2. Rill 示例仓库连接器文档("DuckDB is Rill's default embedded OLAP database") https://github.com/rilldata/rill-examples

相关产品:DuckDB、ClickHouse、StarRocks、Snowflake 相关能力:被嵌入的分析引擎:BI 产品的"标配内核" 最后核验:2026-10-02

UDisc:dbt 任务从 6 小时压到 30 分钟,飞盘 App 的全量球场统计上线(2024) 成功经验

dbt 迁移 用户统计仪表盘 MongoDB 分析短板 中小团队选型 Hex 生态
场景
UDisc 是飞盘高尔夫第一大 App(覆盖全球 16,000+ 球场,占据约 90% 市场份额),交易库用 MongoDB。年度使用报告靠手工脚本拼凑;给各地志愿者大使做的球场统计仪表盘第一版只敢放 30 天数据——数据再多就会拖慢生产库。随着疫情期间飞盘运动爆发、数据量猛涨,"只靠 MongoDB 做临时分析查询"越来越撑不住。(https://motherduck.com/case-studies/udisc-motherduck-sports-management/)
决策
团队把主流方案试了个遍:ClickHouse、Snowflake、Databricks、BigQuery、Postgres,"对我们这种体量来说都太贵、太复杂"。2024 年春选定 MotherDuck,两个触因:一是看到仪表盘前端 Hex 自己在用 DuckDB,二是 MotherDuck 底座就是开源 DuckDB 引擎。作为员工持股的精益创业团队,他们要的是"简单且便宜"。
结果
POC 对比——同样一个典型查询,MotherDuck 5 秒出结果,Postgres 跑 2 分钟还没跑完;同一份充分优化过的 dbt 任务,Postgres 上 6 小时(还不算稍改查询就要重做的索引工作),MotherDuck 上 30 分钟(12 倍)。上线后大使们几秒钟就能打开某球场的全生命周期历史+全部统计图表——"这在以前根本不可能"。年度使用报告从"好几个 1 小时脚本"变成"几秒钟出全年统计"。以上均为 MotherDuck 官方案例口径。
机制根因
文档库/行式库做大聚合是模型错配:MongoDB 的聚合管线为事务文档设计,扫全量做统计时没有列式裁剪与向量化;Postgres 同理,行式存储在大范围聚合下逐行开销占主导。DuckDB 列式存储只读需要的列、向量化批量算,这类聚合查询通常快得多(取决于扫描占比,列式裁剪与向量化是主因)。关键洞察是"数据量不大≠不需要列式引擎"——UDisc 自认"数据库整体不算大",但查询模式是 OLAP,引擎模型对了,小数据也能差出数量级(该迁移的实测对比,非通用加速比)。
教训
OLTP/文档库兼职 OLAP 的天花板来得比数据量天花板早得多,"只放 30 天数据保生产库"是典型的预警信号;中小团队选型第一性原理是"简单+便宜",重型数仓的复杂度税对小团队是净负担;dbt + DuckDB 让本地开发与云端生产跑同一引擎,dev/prod 一致性是 MotherDuck 这类方案的隐藏价值;生态信号(Hex 自己用 DuckDB)有时比基准测试更能说明问题。
来源
  1. MotherDuck 官方案例《Customer-Facing Analytics: From Minutes to Seconds》厂商口径 https://motherduck.com/case-studies/udisc-motherduck-sports-management/
  2. MotherDuck dbt 集成页客户证言 https://motherduck.com/ecosystem/dbt/

相关产品:DuckDB、MongoDB、PostgreSQL(社区版) 相关能力:进程内 OLAP:pip install 即拥有的分析引擎 最后核验:2026-10-02

Amazon:2004 年圣诞宕机催生 Dynamo,购物车成为 DynamoDB 的起点(2004–2012) 成功经验

起源故事 键值存储 高可用设计 电商大促
场景
2004 年 12 月 12 日,Amazon 全站还跑在关系型数据库上,一次大型机架集群故障让全站在一年中最忙的一天宕机。事后复盘发现,Amazon 当时 70% 的存储访问本质是键值操作——"给我我的购物车、给我这个、给我那个,一次按一个属性取值"。更糟的是多活运维:Vogels 回忆,团队曾主动拔掉一个数据中心的电源做演练,结果"所有故障都出在关系型数据库上",再把数据中心接回生产"是一场噩梦"。购物车这类场景丢数据=丢订单,可用性是硬指标,而传统复制技术"选择一致性而非可用性",模型错配。(https://siliconangle.com/2021/06/07/digging-covers-aws-timestream-database-amazon-cto-werner-vogels/)
决策
Amazon 内部立项 Dynamo:去中心化、无主节点的键值存储,用一致性哈希做分区复制、向量时钟做版本管理、quorum 读写、gossip 做成员感知与故障检测,把"一致性/可用性/成本/性能"的权衡旋钮交还给应用层(购物车选高可用+最终一致,冲突由应用合并)。2007 年 10 月以 SOSP 论文形式公开发表,发表前已在生产环境支撑多个核心服务。
结果
SOSP 2007 论文披露的生产数据:购物车服务单日处理数千万请求、带来超 300 万次结账,会话状态服务同时承载数十万活跃会话,扛过假日购物季极端峰值"没有任何宕机"。2012 年 1 月 18 日,DynamoDB 作为全托管服务正式发布(GeekWire 报道),发布时内部已有 Cloud Drive、IMDb、Kindle、广告平台在用,首批外部客户包括 SmugMug 和 Elsevier。以上单日请求/结账数字出自论文一手生产数据;"70% 键值""首个服务是购物车"为 Vogels 2021 年口述回忆。
机制根因
第一层是访问模式与存储模型的匹配:购物车、会话、畅销榜都是主键点查,不需要关系模型的复杂查询能力,为用不上的 JOIN 和 ACID 付出"昂贵硬件+资深 DBA"的代价是浪费;且关系型复制在分区故障时优先保一致性,直接违反"永远可写"的业务要求。第二层是产品化教训:Dynamo 虽好,但每个团队自己运维 Dynamo 集群的复杂度成了内部推广障碍——Vogels 在 2012 年发布时承认,内部服务方抱怨"要自己成为 Dynamo 专家、自己做一致性/性能/可靠性的权衡";于是 DynamoDB 的核心产品决策是"服务化":全托管、按表声明吞吐量,运维复杂度由 AWS 吞掉。技术验证在前(2007),服务化在后(2012),顺序不能反。
教训
从访问模式反推存储模型:70% 是 KV 就别硬上关系型,为用不上的功能交税是架构原罪;可用性需求决定一致性取舍,而不是反过来——先问"丢了这条数据损失多少钱",再定一致性级别;内部自研技术的最大采用障碍往往不是性能而是运维复杂度,"托管化"是技术走向产品的关键一跃;一篇生产系统论文的价值在于"先在真实流量里跑过",Dynamo 论文发表前已支撑核心服务,这是它区别于纯学术工作的根本。
来源
  1. Werner Vogels 2007 年博客《Amazon's Dynamo》(含 SOSP 2007 论文全文,一手生产数据) https://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
  2. SiliconANGLE 2021 年 Vogels 专访(2004 宕机、70% 键值、首个服务是购物车,当事人回忆口径) https://siliconangle.com/2021/06/07/digging-covers-aws-timestream-database-amazon-cto-werner-vogels/
  3. GeekWire《Amazon launches 'DynamoDB' cloud database service》(2012-01-18,发布日期与早期客户) https://www.geekwire.com/2012/amazon-launches-dynamodb-cloud-database-service/

相关产品:Amazon DynamoDB 相关能力:Serverless 零运维:流量不可预测时"先跑起来"的最短路径 最后核验:2026-10-02

Cognito Forms:双平台实测后弃选 DynamoDB——按预测付费不适合可变负载(约 2014–2015) 失败教训

PoC 选型评估 弃选 DynamoDB KV 选型 计费模型
场景
Cognito Forms(在线表单 SaaS)创立之初做数据库选型。先定大方向:SQL vs NoSQL——按其调研口径,NoSQL 比企业级 SQL 便宜约 $5,000/月/TB,且 NoSQL 可按负载分区。定下 NoSQL 后,把候选收敛到 Amazon DynamoDB 与 Microsoft Azure Table Storage。
决策
列出两家的 pros/cons 对照表后,团队把应用同时在双平台搭建并跑负载测试。DynamoDB 的问题:单次 scan/query 结果集限 1MB,查大结果要手动分页重查;predictive pricing——按预测的吞吐量付费而非实际用量,可变负载下要么超付要么被限流;高负载下需持续监控、手动调 throughput。Azure Table Storage:按实际用量付费,超额数据"无缝接受";PaaS 形态省运维;.NET 技术栈无缝集成。
结果
弃选 DynamoDB,选 Azure Table Storage。按 Cognito Forms 自述口径,负载测试结论是"DynamoDB 高负载下需持续监控调 throughput,Azure 无缝接受超额数据"。代价是接受 Azure 当时的短板:美国仅 4 个数据中心、自动扩缩容备份等功能仍在 beta。
机制根因
这是一个"计费模型即架构约束"的案例。DynamoDB 的 provisioned throughput 把容量规划前置——对负载可预测的大厂这是成本优化器,对负载不可预测的初创公司这是税:要么为峰值超付,要么在峰值时被限流后再手动调参。Azure 的按量付费把规划后置,匹配了初创公司的不确定性。选型时"谁便宜"取决于负载曲线的形状,而不取决于单价表。
教训
KV 选型先看计费模型再看性能——predictive pricing 与可变负载是天然互斥;"1MB scan 上限"这类 API 配额要在 PoC 里实测对业务查询模式的影响;小团队选 PaaS 形态,本质是买"不用雇 DBA"的期权。诚实注记:该文未标注发布日期,据"美国仅 4 个数据中心""autoscaling backups 仍在 beta"等内容推断约 2014–2015 年;DynamoDB 此后推出 on-demand 按量计费模式,本案例的计费结论已过期,仅保留"计费模型要进评估项"的方法论价值。
来源
  1. Cognito Forms 官方博客《Why We Chose Azure Table Storage over Amazon DynamoDB》(未标注日期,内容推断约 2014–2015) https://www.cognitoforms.com/blog/21/why-we-chose-azure-table-storage-over-amazon-dynamodb
  2. —

相关产品:Amazon DynamoDB 相关能力:预置吞吐计费与可变负载的错配 最后核验:2026-10-02

SmugMug:从 MySQL 迁到 DynamoDB,一年内搬完 Flickr 的数百 PB(2018–2019) 成功经验

照片平台 MySQL 迁移 规模扩展 收购整合
场景
SmugMug(照片分享平台)的在线元数据长期跑在传统 MySQL 上,随着数据量和流量增长,查询响应时间在规模下变得不可预测。团队先尝试把 MySQL 改造成键值用法(key-value access pattern),但依然搞不定规模下的可预测延迟。2018 年 SmugMug 收购 Flickr 后,又面临一个硬任务:把 Flickr 从 Yahoo 的数据中心整体迁到 AWS 云上——数百 PB 数据、数百亿张照片、1 亿以上用户,迁移窗口只有约 1 年。(https://aws.amazon.com/blogs/database/motivations-for-migration-to-amazon-dynamodb/)
决策
SmugMug 把照片平台的元数据从 MySQL 迁到 DynamoDB;随后借助 DynamoDB 的弹性,把 Flickr 的工作负载从 Yahoo 数据中心迁入 AWS。选型逻辑很直接:照片元数据的访问模式是按 ID 点查,与 DynamoDB 的分区键模型契合(点查模式是该契合的前提,扫描/复杂查询为主的 workload 不适用此结论);收购整合的时间窗口容不下"自建分片集群再调优"的长周期。
结果
AWS 官方数据库博客(2023)口径:迁移后 SmugMug 获得"与存储量无关的可预测查询响应时间";Flickr 迁移在 1 年内完成,数百 PB、数百亿张照片、1 亿+用户搬上 DynamoDB 及其他 AWS 服务——"如果你在 Flickr 上看一张照片,你就是在和 DynamoDB 交互"。以上数字均为 AWS 厂商口径,未找到 SmugMug 工程博客披露的对应数字,也无第三方独立复现,引用须注明口径。迁移前后的延迟分布、成本变化未找到公开数据。
机制根因
MySQL 的 B-tree + 缓存体系在数据量增长时延迟分布变宽(p99 长尾恶化),而 DynamoDB 的"按分区键哈希做数据放置+请求路由"让延迟与数据量解耦:表多大,点查都是一次分区定位。SmugMug 先"把 MySQL 当 KV 用"的中间态很有说服力——问题不在 SQL 语言本身,而在存储引擎的扩展模型:单机引擎靠纵向扩展和缓存续命,分布式分区引擎靠加分区接近线性扩展(取决于分区键均匀度与一致性配置)。收购整合场景放大了 DynamoDB 的价值:迁移窗口按月算,没有时间留给分片键设计评审和压测调优,"开箱即用的弹性"是买时间。
教训
当延迟的可预测性(p99/p999 分布)比功能丰富度更重要时,就该换存储引擎,而不是在原引擎上继续打补丁;"把关系型数据库当 KV 用"的中间态是危险信号,说明访问模式和引擎模型已经分叉,越晚承认迁移成本越高;收购后的技术栈整合是 DynamoDB 这类免运维弹性服务的典型高价值场景——时间窗口比单价更重要;厂商口径的迁移规模数字必须标注,不把"数百 PB"当成可复现的工程指标。
来源
  1. AWS 官方数据库博客《Motivations for migration to Amazon DynamoDB》(2023,SmugMug/Flickr 章节,厂商口径) https://aws.amazon.com/blogs/database/motivations-for-migration-to-amazon-dynamodb/
  2. GeekWire《Amazon launches 'DynamoDB' cloud database service》(2012-01-18,SmugMug 为 DynamoDB 首批公开客户之一) https://www.geekwire.com/2012/amazon-launches-dynamodb-cloud-database-service/

相关产品:Amazon DynamoDB、MySQL 相关能力:Serverless 零运维:流量不可预测时"先跑起来"的最短路径 最后核验:2026-10-02

Snapchat:故事收件箱从 GCP 迁到 DynamoDB,除夕峰值零人工干预(约 2022–2023) 成功经验

社交应用 突发流量 跨云迁移 故事流
场景
Snapchat 的一批关键存储用例跑在 Google Cloud Platform 上,其中"故事收件箱"(story inboxes,故事帖子的集合)是核心但难搞的功能:要支撑数百万写/秒,GCP 上的存储与吞吐成本高企。团队还有一层战略诉求:把云供应商从单一 GCP 向外扩展。社交应用的流量天然突发——除夕夜是全年最大峰值,平时为峰值预置的容量等于全年交税。(https://aws.amazon.com/blogs/database/motivations-for-migration-to-amazon-dynamodb/)
决策
把故事收件箱等关键存储从 GCP 迁到 DynamoDB,目标是在扛住数百万写/秒的同时显著降本,并实现多云供应商布局。选型逻辑:故事流是写密集、突发、按用户/故事 ID 点查的 KV 负载,不需要复杂查询,DynamoDB 的自动分区与弹性伸缩正好对准"峰值不可预测"这个痛点。
结果
AWS 官方数据库博客(2023)口径:Snapchat 把 100% 用户迁到 DynamoDB;除夕夜峰值流量"无需任何人工干预"扛过;"省掉了 GCP 上绝大部分存储与吞吐成本,每年节省数百万美元"。另据 AWS Data Roadshow 2023 宣讲材料引 Snap 基础设施工程负责人 Dave Killian:"这已是 Snapchat 最稳定的系统之一",相比老系统每年省掉数百万美元的过度预置成本。以上均为 AWS 方面口径,未找到 Snap 工程博客披露的对应数字与迁移时间线,确切迁移年份未找到公开数据,标题年份为按 AWS 材料发布时间的约数。
机制根因
故事收件箱的写入是"追加帖子到用户收件箱"的 KV 写,读是按 ID 点查——访问模式简单,但写入速率在节假日呈脉冲式。传统方案要为脉冲峰值预置全年容量,闲置部分就是纯成本;DynamoDB 的分区自动分裂+按需/自动伸缩把"为除夕夜买单"变成"为实际流量买单"。零人工干预过峰值的技术底座是:分区是 DynamoDB 内部管理的物理单元,热点时自动分裂、请求路由自动跟随,不需要 DBA 半夜起床加节点或改分片键。这是"弹性"作为成本项的典型案例:省掉的不是机器单价,而是为峰值预置的闲置容量。
教训
突发流量场景下,把"为峰值预置的闲置容量"计入 TCO 再做选型,弹性本身就是钱;跨云迁移的真实动因往往是成本+多云战略,不只是技术优劣,写案例时不要把商业动因洗成纯技术叙事;社交/内容型产品的故事流、收件箱、时间线是 DynamoDB 的经典甜点区——写密集、KV 点查、峰值脉冲,三者占其二就值得评估;厂商宣讲材料里引用的客户原话(如"最稳定的系统之一")可以引用,但必须标注这是 AWS 转述的口径。
来源
  1. AWS 官方数据库博客《Motivations for migration to Amazon DynamoDB》(2023,Snapchat 章节:数百万写/秒、除夕零干预、每年省数百万美元,厂商口径) https://aws.amazon.com/blogs/database/motivations-for-migration-to-amazon-dynamodb/
  2. AWS Data Roadshow 2023 宣讲 deck《Amazon DynamoDB - Use Cases and Cost Optimization》(Snap 章节,Dave Killian 原话转述,厂商材料) https://www.slideshare.net/slideshow/d1s10amazon-dynamodb-use-cases-and-cost-optimizationpdf/258850807

相关产品:Amazon DynamoDB 相关能力:Serverless 零运维:流量不可预测时"先跑起来"的最短路径 最后核验:2026-10-02

CARE Risk Solutions:177 小时的 Oracle 报表在 EDB 上跑进 90 小时 成功经验

去 O 金融 报表性能 ISV
场景
CARE Risk Solutions(面向银行/金融/保险的风险管理 ISV),其客户跑在 Oracle Exadata 上,遭遇性能与扩展瓶颈:某大型公共部门银行的监管盈利报告涉及数亿条记录、数百个分支机构与总账科目,Oracle Exadata 每次跑近 177 小时、有时根本跑不出来,导致银行反复错过监管报送期限;2TB 临时表空间仍不够用,Oracle 技术支持数月无法解决。(https://enterprisedb.com/resources/customer-story/care-risk-solutions-accelerates-performance-growth-edb)
决策
全产品线从 Oracle 迁到 EDB(Postgres Advanced Server 12 + Postgres Enterprise Manager + 备份恢复工具 + Failover Manager),由 EDB 合作伙伴 Chemtrols Infotech 负责迁移方法论与实施;迁移前先用"最痛的那个 workload"做同等负载内部验证。
结果
EDB 官方口径(具名客户技术与创新总监 Amarjeet Tiwari 自述):事务处理提升 30%、报表生成时间降低 49%(177 小时→约 90 小时,仅做迁移与总账科目合并、无其他改动)、全产品组合迁移仅用 90 天、迁移后签下 3 家此前"大到不敢接"的新客户。
机制根因
瓶颈在数据库层(临时表空间撑爆),换库即换执行引擎;EDB 自动化迁移工具链承担了大部分迁移工作量,90 天完成全产品组合迁移并通过多客户数据集测试。
教训
先拿最痛的 workload 做同等负载验证再全量迁移;性能问题会直接转化为商业天花板(接不了大客户),换库的 ROI 不只看 license,还要看它打开的市场空间。
来源
  1. EDB 官方客户故事《CARE Risk Solutions Accelerates Performance and Growth with EDB》 https://enterprisedb.com/resources/customer-story/care-risk-solutions-accelerates-performance-growth-edb

相关产品:EDB Postgres / EDB Postgres Advanced Server(EPAS)、Oracle Database(甲骨文)、PostgreSQL(社区版) 相关能力:EPAS 的 Oracle PL/SQL 兼容 —— 去 O 路上改动最小的 PG 最后核验:2026-10-02

FBI:用 EDB Postgres Advanced Server 做 Oracle 迁移 成功经验

去 O 政务 许可成本 零重写
场景
美国联邦调查局(FBI)需将案件管理、背景审查等关键应用从"笨重的 Oracle 基础设施"迁往 AWS 云,同时保护政府最敏感的数据;Oracle 高昂且僵化的许可费让迁移"贵到不可行",且未来的数据库成本也将高企。(https://mktgsite.enterprisedb.com/sites/default/files/2025-06/FBI_case_study_v6.pdf)
决策
选用 EDB Postgres Advanced Server(EPAS),利用其原生 Oracle 兼容性实施迁移——"Postgres 看起来、用起来就像 Oracle",应用无需重写代码。
结果
EDB 官方口径:迁移过程"简单且具成本效益"、最小化业务中断、零数据丢失;降低供应商锁定,获得跟随新技术演进的灵活性。以上均为 EDB 单方口径(客户成功故事 PDF),无具名技术细节与独立第三方验证。
机制根因
EPAS 的 Oracle 兼容层让应用代码零重写成为可能,消除了去 O 迁移中最大的人力成本项;订阅制替代 Oracle 按 CPU/用户数的刚性许可,从根本上改变成本结构。
教训
许可费用不仅是"贵",还能直接卡死现代化项目——FBI 案例里 Oracle 许可差点让迁移本身无法立项;兼容性是"不重写"承诺的兑现关键,选型时要对着自己的代码做 PoC 验证,而不是采信宣传数字。
来源
  1. EDB 官方客户成功故事 PDF《FBI Protects High-Stakes, Highly Sensitive Data with Oracle Compatibility and EDB Postgres AI》 https://mktgsite.enterprisedb.com/sites/default/files/2025-06/FBI_case_study_v6.pdf

相关产品:EDB Postgres / EDB Postgres Advanced Server(EPAS)、Oracle Database(甲骨文)、PostgreSQL(社区版) 相关能力:EPAS 的 Oracle PL/SQL 兼容 —— 去 O 路上改动最小的 PG 最后核验:2026-10-02

Lone Wolf:Oracle 许可从 100 万美元砍到 10 万,EPAS 救了公司一命 成功经验

去 O 成本敏感 ISV 许可
场景
Lone Wolf Technologies(房地产数据 ISV,服务约 2 万家经纪公司、30 个加盟品牌、150 万经纪人),其数据密集的 BrokerMetrics 分析工具被 Oracle 许可费压得喘不过气。(http://enterprisedb.com/blog/empowering-isvs-thrive-how-edb-postgres-ai-creates-new-opportunities)
决策
迁到 EDB Postgres Advanced Server(EPAS);过渡期团队同时向 Oracle 和 EDB 双写摄入数据;EDB 称这是"最顺滑的 Oracle 逃生通道",接口与程序可原样运行、只省掉许可费。
结果
具名客户工程总监 Vladimir Sanchez 自述(EDB 官方博客刊登):数据库许可成本从约 100 万美元降到约 10 万美元(−90%);一次 Oracle 侧灾难性故障中,靠着并行摄入到 EDB 的那份数据逃过一劫——"要不是 EPAS,我的团队同时向 Oracle 和 EDB 摄入数据,我们就倒闭了。EDB 把公司从灾难里救了出来。"
机制根因
EPAS 让 Oracle 接口/程序"原样运行",去 O 不用付重写税,这是许可成本能砍 90% 的前提;双写摄入本质上是迁移期的廉价保险,故障时成了救命稻草。
教训
许可成本会从"贵"变成"生死线";迁移过渡期的双写看似浪费,实则是对抗源端单点故障的期权;"最顺滑的逃生通道"这类评价来自真实逃生经历才有分量,选型时多问"谁真的跑过"。
来源
  1. EDB 官方博客《ISVs Empowered by EDB Postgres AI - Creating New Opportunities》(Lone Wolf 章节,具名引述 Vladimir Sanchez) http://enterprisedb.com/blog/empowering-isvs-thrive-how-edb-postgres-ai-creates-new-opportunities

相关产品:EDB Postgres / EDB Postgres Advanced Server(EPAS)、Oracle Database(甲骨文)、PostgreSQL(社区版) 相关能力:EPAS 的 Oracle PL/SQL 兼容 —— 去 O 路上改动最小的 PG、Isabel Group 的 TCO 实证 —— 去 O 的"省钱"有人算过账 最后核验:2026-10-02

Mastercard 在 EDB Postgres 上实现支付零停机 成功经验

高可用 零停机 支付 多数据中心
场景
Mastercard 支付网关(2014 年收购获得,随附 Postgres);公司级最低可用性要求 99.999%;两大痛点:切换到灾备站点的耗时过长,以及 vacuum full、reindex 等服务器维护任务的执行方式。本案例由 Mastercard Lead BizOps Engineer 在 EDB Postgres Vision 2020 上分享。(https://www.enterprisedb.com/blog/why-mastercards-secret-zero-downtime-postgres?lang=ja)
决策
采用 EDB 的 xDB 多主复制(xDB MMR,基于 Postgres 9.4 逻辑复制)替代二进制流复制做灾备;利用 xDB 的数据过滤能力做跨洲数据迁移以满足个人信息数据属地合规要求,并在目标端用触发器对写入数据叠加业务逻辑。
结果
切换到灾备站点"不仅更快,而且可靠地更快";真正做到"零停机";xDB 被用作实时数据迁移工具,跨洲迁移策略非常成功。以上为具名客户自述、经 EDB 官方博客刊登,无独立第三方验证。
机制根因
逻辑复制相对二进制流复制的核心差异在于可过滤数据子集、目标端可配置函数与触发器在写入时再加工数据;xDB MMR 让多数据中心并发处理支付并保持站点同步成为可能(需少量应用改造,以及围绕数据冲突的大量测试)。
教训
对支付网关这种"每秒无数笔交易"的系统,缩短 failover 时间是经济必需而非锦上添花;逻辑复制"可过滤、可加工"的特性让同一套机制同时解决灾备与数据主权合规两件事;多主复制的数据冲突处理必须前置大量测试,不能只看功能有无。
来源
  1. EDB 官方博客《Why Mastercard's Secret to Zero Downtime is PostgreSQL》(作者为 Mastercard Lead BizOps Engineer) https://www.enterprisedb.com/blog/why-mastercards-secret-zero-downtime-postgres?lang=ja
  2. Postgres Vision 2020 演讲视频 https://www.youtube.com/embed/rG64KSwBPdA

相关产品:EDB Postgres / EDB Postgres Advanced Server(EPAS)、PostgreSQL(社区版)、Oracle Database(甲骨文) 相关能力:— 最后核验:2026-10-02

新韩 EZ 财险:Oracle 迁 EDB,半年回本、年运维成本降超 50% 成功经验

去 O 保险 零停机 成本敏感
场景
韩国 Shinhan EZ General Insurance,想把现有 Oracle DBMS 换成省钱且稳定、可扩展、高可用、开发者友好的替代品。(https://www.enterprisedb.com:443/resources/customer-story/shinhan-ez-general-insurance-migrates-seamlessly-oracle-edb-postgresr-ai)
决策
采用 EDB Postgres Advanced Server 实施迁移,EDB 提供持续的全球支持服务保障数据库平稳运行。
结果
EDB 官方口径:零停机完成稳定迁移;6 个月收回投资成本;年度运维成本降低超 50%。均为 EDB 单方口径,无独立第三方验证,技术细节未公开。
机制根因
(公开信息有限)EPAS 的 Oracle 兼容降低迁移改写量,是"零停机+快速回本"的前提;订阅制替代 Oracle 许可是运维成本下降的主因。
教训
保险这类强监管行业也敢把核心 DBMS 从 Oracle 换到 PG,关键看两点:迁移期零停机、回本周期可量化(6 个月);但本案例公开信息过少,选型时应要求厂商提供同等规模保险客户的可验证细节,不宜只看 headline 数字。
来源
  1. EDB 官方客户故事《Shinhan EZ General Insurance Migrates Seamlessly from Oracle to EDB Postgres AI》 https://www.enterprisedb.com:443/resources/customer-story/shinhan-ez-general-insurance-migrates-seamlessly-oracle-edb-postgresr-ai

相关产品:EDB Postgres / EDB Postgres Advanced Server(EPAS)、Oracle Database(甲骨文)、PostgreSQL(社区版) 相关能力:EPAS 的 Oracle PL/SQL 兼容 —— 去 O 路上改动最小的 PG、Isabel Group 的 TCO 实证 —— 去 O 的"省钱"有人算过账 最后核验:2026-10-02

欧洲流媒体商:AWS Postgres 两次故障后迁到 EDB 全托管云服务 成功经验

云迁移 高可用 流媒体 成本敏感
场景
欧洲某匿名流媒体技术商(云游戏/博彩超低延迟串流,签有 SLA),早期把知识库类负载放在 AWS Postgres 上;短期内遭遇两次 AWS 环境故障:第一次 AWS 高级支持较快解决,第二次恰逢一次"本应 3 分钟"的 Postgres 升级,结果停机 3 小时以上;AWS 给出的排障方案是把云基础设施翻四倍;SLA 赔付达数万欧元,外加用户与品牌损失。(https://www.Enterprisedb.com/resources/customer-story/streaming-provider-gets-back-in-the-game-with-continuous-uptime-from-edb-biganimal-on-aws)
决策
重新选型后迁到全托管的 EDB Postgres AI Cloud Service(原 BigAnimal,跑在 AWS 上),用 EDB Migration Toolkit + Migration Portal 自动化迁移;看中的是 EDB 作为"懂 Postgres 的运营方"的排障能力与白手套支持。
结果
EDB 官方口径:高延迟与反复 outage 被消除;Postgres 成本降低 30%(且无需翻四倍基础设施);DBA 获得底层访问权限与深度洞察。客户匿名,均为 EDB 单方口径,无独立第三方验证。
机制根因
托管 PG 的问题不在 PG 内核而在运营能力——升级窗口失控、排障只能靠"加机器"是云厂商通用支持的典型短板;EDB 这类"懂 PG 的运营方"卖的是故障处理能力,不是实例规格。
教训
选托管数据库是在选"出事时谁来修";把"升级本应 3 分钟、实则 3 小时"写进选型 checklist,比看功能矩阵更能避坑;匿名案例的数字(−30%)引用时要打折听。
来源
  1. EDB 官方客户故事《Streaming Provider Gets Back in the Game with Continuous Uptime from EDB Postgres AI Cloud Service (formerly BigAnimal) on AWS》 https://www.Enterprisedb.com/resources/customer-story/streaming-provider-gets-back-in-the-game-with-continuous-uptime-from-edb-biganimal-on-aws

相关产品:EDB Postgres / EDB Postgres Advanced Server(EPAS)、PostgreSQL(社区版) 相关能力:— 最后核验:2026-10-02

美国无线运营商:100TB Oracle Exadata 两周迁到 EDB 成功经验

去 O 电信 百 TB 迁移 成本敏感
场景
美国某大型区域性无线运营商(匿名),公司级开源化首个试点:把 100TB 关键业务应用从 Oracle Exadata 迁出;该应用存储无线设备的地理空间信息,以及设备与用户信息(区域活动模式、数据用量、语音留言等)。(https://www.enterprisedb.com/blog/us-wireless-carrier-migrates-100tb-oracle-database-edb-postgres-first-open-source-initiative)
决策
迁到 EDB Postgres Platform(作为记录系统数据库)+ Cloudera(Hadoop)承接归档与分析;利用 EDB 为 Postgres 开发的分区、异构数据库链路(heterogeneous database links)等 Oracle 迁移增强特性;用 EDB Data Adaptors 让 PG 与 Cloudera 数据双向互通、对 DBA 呈现为 Postgres 表。
结果
EDB 官方口径:应用运行成本降低"数百万美元";迁移两周完成(由 EDB 主导项目管理以确保快速成功);分析能力相比原方案增强。均为 EDB 单方口径,客户匿名,无独立第三方验证。
机制根因
分区与异构 DB Link 是 Oracle 重度用户迁移时的关键兼容抓手;EDB Data Adaptors 让结构化(PG)与非结构化(Hadoop)数据对 DBA 呈现为"一张表",避免应用大改;"记录系统"与"分析归档"拆分到 PG+Hadoop 各归其位,比单一 RDBMS 扛所有负载更便宜。
教训
100TB 级 Oracle Exadata 迁出可以是"两周级"工程,但前提是厂商级迁移方法论与工具链全程护航;迁移不只是换库,更是把不同访问模式拆到各自合适的架构上。
来源
  1. EDB 官方博客《U.S. Wireless Carrier Migrates 100TB Oracle Database to EDB Postgres in First Open Source Initiative》 https://www.enterprisedb.com/blog/us-wireless-carrier-migrates-100tb-oracle-database-edb-postgres-first-open-source-initiative

相关产品:EDB Postgres / EDB Postgres Advanced Server(EPAS)、Oracle Database(甲骨文)、PostgreSQL(社区版) 相关能力:EPAS 的 Oracle PL/SQL 兼容 —— 去 O 路上改动最小的 PG 最后核验:2026-10-02

Jepsen 独立测试 etcd 3.4.3:KV 严格可串行化全过,分布式锁却"从根本上不安全"(2020) 失败教训

选型评估 独立测试 分布式锁 线性一致性 CNCF
场景
etcd 是 Kubernetes 等系统的元数据存储与协调原语,常被同时用作 KV 存储和分布式锁。2020 年 1 月 Jepsen 测试 etcd 3.4.3(5 节点 Debian 集群),验证 KV 操作、分布式锁与 watch 的安全属性。本次由 CNCF(Linux 基金会下属中立基金会,etcd 托管方)资助,非厂商付费。
决策
用 Knossos 线性一致性检查器验证 register/set/append 多键事务;故障注入包括网络分区(单节点隔离、多数/少数分裂、非传递分区)、进程暂停/崩溃、针对性杀主、数百秒时钟偏移、动态成员变更;另设 lock 与 watch 专项工作负载。
结果
KV 操作默认严格可串行化(strict serializable),在全部故障下均成立——Jepsen 罕见的正面结论;watch 按序交付每个变更。但 etcd lock 从根本上不安全:健康集群、无故障时多客户端可同时持有同一把锁;"等待锁后未重查租约有效性"的实现 bug 加剧了风险;用 etcd 锁保护内存集合更新时,2 秒租约下可稳定复现约 18% 的确认更新丢失(Jepsen 报告原文口径)。etcd 官方发布 companion blog 回应,锁租约检查 bug 在 master 修复,并修订了 API guarantees 文档(删去"sequential 是分布式系统最强一致性"等错误表述)。
机制根因
KV 与锁的安全属性来自完全不同的机制:KV 走 Raft 全序状态机,天然严格可串行化;锁则依赖租约(lease)+ 客户端心跳,在异步系统里"故障检测"本质不可靠——按 Kleppmann 的论述,锁服务为保活必须在持有者"疑似"死亡时强制释放锁,而疑似死亡不等于真死,互斥性就破了。这是理论天花板,不是修个 bug 能解决的;实现 bug 只是让破窗来得更快。
教训
选型时把"KV 存储"和"分布式锁"当两个产品评估——etcd 前者满分、后者不及格;需要互斥必须配合 fencing token 之类机制;任何分布式锁宣称都要先问"持有者假死时怎么办"。诚实注记:3.4.3 是 2020 年版本,etcd 已演进到 3.5/3.6,但"异步系统里分布式锁的根本不安全性"是理论结论,不随版本过期;租约检查 bug 的修复状态请按当前版本核验。
来源
  1. Jepsen《Jepsen: etcd 3.4.3》(2020-01-30,CNCF 资助
  2. 报告明确"This work was funded by The Cloud Native Computing Foundation") https://jepsen.io/analyses/etcd-3.4.3
  3. etcd 官方 companion blog 回应(见该报告内链)

相关产品:etcd 相关能力:Raft KV 的严格可串行化与分布式锁的能力边界 最后核验:2026-10-02

K3s v1.19.1:放弃实验性 dqlite,嵌入式 etcd 成为官方 HA 数据存储(2020) 成功经验

高可用 边缘计算 架构选型 云原生
场景
K3s 是 Rancher 面向边缘与资源受限环境的轻量 Kubernetes 发行版,单二进制、默认内嵌 SQLite。SQLite 只支持单 server;多 server 高可用此前只能外接 MySQL/PostgreSQL/外部 etcd,或使用实验性的 dqlite(分布式 SQLite)。边缘场景(零售门店、工厂车间)往往没有专职运维,外接数据库的运维成本不可接受,而 dqlite 生态几乎为零。
决策
K3s v1.19.1(2020 年 9 月)把实验性 dqlite 替换为嵌入式 etcd 作为集群化数据存储方案:首个 server 用 `--cluster-init` 初始化,后续 server 加入形成 Raft 多数派(内嵌组件版本为 etcd v3.4.13-k3s1)。官方 release notes 原话:"we've made this change in order to leverage the existing effort and knowledge that has gone into operating Kubernetes with etcd"——直接复用社区已有的 etcd 运维知识,而非另起一套;附带收益是顺手获得 etcd 快照/恢复能力。对 dqlite 存量集群明确为 breaking change,不提供升级路径。
结果
嵌入式 etcd 在 v1.19.5+k3s1 转为正式支持,成为 K3s 官方文档推荐的生产级 HA 路径("Embedded etcd (Raft consensus): Suitable for production. Requires 3 or 5 server nodes");dqlite 实验终止。此后 K3s 的 HA 数据面与上游 Kubernetes 同构,etcd 排障经验(调优、备份、恢复)在两个生态间可直接复用。
机制根因
选型逻辑是"生态复用 > 技术尝鲜"。etcd 已是 Kubernetes 控制面的事实标准存储,运维知识、工具链(etcdctl、快照)、人才池都是现成的;dqlite 虽轻但生态为零,K3s 团队要自己承担全部运维知识的生产成本。嵌入式 etcd 让 K3s 的 HA 数据面与上游同构,问题可互相借鉴——这是用"标准件"替代"自研件"的胜利。
教训
基础设施选型时,"社区已验证的运维知识存量"是硬资产;为省体积引入生态孤岛反而抬高长期 TCO;与上游同构的数据面让排障经验可复用,边缘场景更应如此——现场没人能帮你调一个没人用过的分布式存储。
来源
  1. K3s 官方 release notes v1.19.1+k3s1("Etcd is now K3s's embedded clustered database solution. This replaces the experimental Dqlite support.") https://github.com/k3s-io/k3s/releases/tag/v1.19.1%2Bk3s1

相关产品:etcd 相关能力:Kubernetes 控制面的"唯一真相源":Raft 强一致 + MVCC watch 最后核验:2026-10-02

kOps 生产集群 etcd 配额耗尽:60 节点集群控制面冻结实录(2025) 失败教训

运维事故 容灾 配额 资源泄漏
场景
某 kOps 管理的生产 Kubernetes 集群(60+ 节点、2000+ pod)。值班期间 Slack 先报 cert-manager 宕机,随后 kubectl 无响应、ArgoCD 与内部工具相继变黑;业务流量尚正常,但控制面已瘫痪。master 节点在 LB 健康检查中全部 unhealthy,重启 master 无效。
决策
排查发现 kube-apiserver 被 OOMKilled,先把 master 机型从 c5.4xlarge 升到 c5.9xlarge(kOps 命令行),但集群仍不健康——事前没有任何内存压力信号,内存并非真因。继续深挖控制面,在 etcd 日志里看到 "etcdserver: mvcc: database space exceeded":etcd 逻辑配额(2.2GB)被打满,触发 NOSPACE alarm 后全集群拒绝一切写。
结果
按 etcd 官方维护指南做 compact + defrag,从 2.2GB 配额中释放约 800MB,集群自行恢复;次日重启了 coredns、Prometheus 等与 apiserver 失联的 pod。根因是 logging-operator 命名空间里数千个无用的 Secret(`default-logging-fluentd-configcheck-app-*`)把 revision 历史撑爆——膨胀的是 revision 历史,不是有效数据。
机制根因
etcd 默认永久保留 MVCC revision 历史;高 churn(此处是 operator 失控批量创建 Secret)让 bbolt 文件膨胀到 quota 上限;NOSPACE 是集群级写冻结——kubectl apply/create 全拒,但读不受影响。compact 只标记旧 revision 可回收、defrag 才真正归还空间,两步缺一不可;且这是逻辑配额耗尽,不是物理磁盘满,加磁盘没用。
教训
给 Secret/ConfigMap 等临时资源设 retention/清理策略,operator 失控创建资源是真实风险;监控 `etcd_mvcc_db_total_size_in_bytes` 相对 quota 的水位,而非只看物理磁盘;OOM 式的表面症状会误导排查方向,控制面失联时优先查 etcd 配额与 leader 状态;kOps 这类"半托管"方案同样需要 etcd 运维手册,不能假设有人替你管。
来源
  1. Medium 生产实录《Kubernetes ETCD Out of Space on kOps: A Real-Life Incident and Recovery》(2025-08-29) https://medium.com/@caue._/kubernetes-etcd-out-of-space-on-kops-a-real-life-incident-and-recovery-a1857f3e0998

相关产品:etcd 相关能力:MVCC 修订历史无上限:"database space exceeded"让全集群写冻结 最后核验:2026-10-02

Kubernetes 1.6 宣布支持 5000 节点:"由 CoreOS 的新版 etcd v3 驱动"(2017) 成功经验

超大规模 扩展 架构选型 云原生
场景
2017 年初,Kubernetes 社区要把可扩展性 SLO 从 2000 节点推到 5000 节点(15 万 pod),支撑搜索、游戏等超大规模负载。1.5 时代 apiserver 后端还是 etcd v2(HTTP+JSON API、无 MVCC、无高效 watch),成为扩展瓶颈。
决策
Kubernetes 1.6 把 apiserver 默认存储后端升级到 etcd v3(CoreOS 新版),官方发布公告原话:"This 150% increase in total cluster size, powered by a new version of etcd v3 by CoreOS"。从 1.5 升级的集群需规划数据迁移窗口——存储后端的代际切换被当作 release headline 而非脚注。
结果
1.6 官宣支持 5000 节点/15 万 pod 集群,成为当年扩展性里程碑的公开背书;此后 etcd 一直是 Kubernetes 控制面的唯一真相源,v3 的 MVCC/watch 语义支撑了 controller list-watch 模式与后续全部扩展性工作。
机制根因
etcd v3 的 MVCC 让 watch 可以带 revision 断点续传、range 查询可高效批量,apiserver 的 watch 缓存与 controller resync 模式才得以成立;gRPC 二进制多路复用替代 v2 的 HTTP/JSON,大幅降低 apiserver↔etcd 的协议开销。这是"存储语义升级解锁上层架构"的典型——瓶颈不在 etcd 本身的吞吐,而在 v2 的 API 语义表达力不够。
教训
控制面存储的语义(MVCC/watch)决定整个编排系统的扩展天花板;基础设施的代际升级值得为"语义"而非只为"性能数字"买单;官方把第三方组件写进发布公告头条,说明 etcd 已是 Kubernetes 扩展性故事的一等公民——选型时看它被谁依赖,比看 benchmark 更说明问题。
来源
  1. Kubernetes 官方博客《Kubernetes 1.6: Multi-user, Multi-workloads at Scale》 https://kubernetes.io/blog/2017/03/kubernetes-1-6-multi-user-multi-workloads-at-scale/

相关产品:etcd 相关能力:Kubernetes 控制面的"唯一真相源":Raft 强一致 + MVCC watch 最后核验:2026-10-02

CoreOS etcd-operator 归档:在 Kubernetes 里再套一层 operator 管 etcd 走不通(2020) 失败教训

运维 云原生 架构选型 控制器模式
场景
CoreOS 2016 年推出 etcd-operator——最早的主流 operator 范式项目之一,用 CRD(EtcdCluster)在 Kubernetes 内自动管理 etcd 集群的创建/扩缩容/故障转移/滚动升级/备份恢复,一度被视为"operator 模式"的样板工程,star 达 1.8k。
决策
2020 年 3 月,coreos/etcd-operator 仓库被官方归档为只读,README 声明:"This project is no longer actively developed or maintained. The project exists here for historical reference."(本项目不再积极开发与维护,仅作历史参考。)其 helm chart 随后废弃,依赖它的下游部署模式(如 CoreDNS 外部 DNS 方案中依赖 etcd-operator chart 的那一种)被迫改道。
结果
社区共识收敛为:etcd 跑静态 Pod(kubeadm/kOps 部署)或直接用托管控制面,而非"在 Kubernetes 里用 operator 套娃管 etcd";etcd 社区另起 etcd-operator Working Group 重新思考可用性问题,而非复活该项目。
机制根因
etcd 是"先有鸡"的组件——operator 自身跑在 Kubernetes 上,而 Kubernetes 的控制面又依赖 etcd;用 k8s 原语去运维 k8s 的根存储,形成循环依赖,故障域纠缠(控制面抖动时 operator 自身也可能失联)。Raft 成员变更的正确性对时机与顺序极敏感,operator 的"声明式调谐"与 Raft 的"过程式成员协议"语义错配,边界情况极易写错——而这里的"写错"直接等价于丢数据。
教训
不要在被管理系统的上层再套一层同构的自动化去管它的根依赖;operator 模式适合无状态或可重建的工作负载,对"一致性状态机"要极度谨慎;选型时看项目的维护状态——归档本身就是信号,1.8k star 也救不了一个语义错配的设计。
来源
  1. coreos/etcd-operator 官方 README(Project status: archived) https://github.com/coreos/etcd-operator/blob/HEAD/README.md

相关产品:etcd 相关能力:Kubernetes 控制面的"唯一真相源":Raft 强一致 + MVCC watch 最后核验:2026-10-02

etcd 引入 Antithesis 自治测试:830 小时模拟 4.5 年,挖出影响全稳定版的关键 watch bug(2025) 成功经验

数据一致性 正确性测试 运维 云原生
场景
etcd 是 Kubernetes 的主数据存储,一致性是第一优先级。v3.5 发布后暴露了若干正确性问题,维护者为此开发了基于属性的 robustness 测试框架(多类型流量回放 + 随机故障注入 + 线性一致性检查 + watch 语义校验)。但原框架"像蒙眼扔飞镖"——bug 靠运气发现且难以复现。
决策
etcd 团队把既有 robustness 测试搬上 Antithesis 确定性仿真平台做"自治测试":整个 etcd 集群跑在确定性 hypervisor 里,平台完全控制网络行为、线程调度、系统时钟等一切非确定性来源;改用声明式属性断言("数据一致性永不被违反""watch 事件永不丢失")作为要主动打破的目标,自动搜索能违反属性的故障序列。测试覆盖 3 节点与单节点集群,故障类型包括网络延迟/拥塞/分区、线程暂停、进程 kill、时钟抖动、CPU 限流;同时用含已知 bug 的旧版本验证方法有效性,再测 3.4/3.5/3.6 稳定版与 main 分支。
结果
830 个 wall-clock 小时模拟出约 4.5 年的使用量;找回全部已知 bug("棕色 M&M"回归集),并在 main 分支发现若干新问题——其中一个"存在于所有稳定版本"的关键 watch bug 是此前测试从未发现的;还暴露了团队自研线性一致性检查器模型自身的缺陷。v3.6 发布公告同步披露了该流程中发现并修复的三个数据不一致 bug:负载下崩溃的数据不一致(v3.5.0 引入,v3.5.3 修复,issue/13766)、单节点 durability API 保证被破坏(历史遗留,v3.4.21/v3.5.5 修复,issue/14370)、defrag 期间崩溃的 revision 不一致(v3.5.0 引入,v3.5.6 修复)。以上均为官方口径。
机制根因
分布式一致性 bug 往往需要"故障的精确组合序列"才能触发,传统随机故障注入命中概率极低;确定性仿真把"发现 bug"变成可复现、可系统搜索的优化问题。属性式断言(不变式)比场景式断言更能覆盖未知的故障交互——你要找的不是"某个场景",而是"任何违反不变式的路径"。
教训
对一致性攸关的基础设施,测试预算应投向"可复现的系统性搜索"而非更多的随机用例;确定性仿真让每一次 bug 发现都可精确重放,这是传统混沌工程给不了的;把已知 bug 做成回归集持续验证测试方法本身有效——先证明你的测试能抓到已知的 bug,再相信它能抓到未知的。
来源
  1. etcd 官方博客《Autonomous Testing of etcd's Robustness》 https://etcd.io/blog/2025/autonomus_testing_with_antithesis/
  2. Kubernetes 官方博客《Announcing etcd v3.6.0》(Critical bug fixes 章节) https://Kubernetes.io/blog/2025/05/15/announcing-etcd-3.6/

相关产品:etcd 相关能力:Kubernetes 控制面的"唯一真相源":Raft 强一致 + MVCC watch 最后核验:2026-10-02

一块跑了 7 年的磁盘拖垮控制面:etcd WAL fsync p99 达 500ms 的复盘(2025) 失败教训

磁盘 IO 延迟 运维 硬件故障
场景
某裸金属自建 Kubernetes 集群触发 kube-prometheus-stack 的 KubeAPIErrorBudgetBurn 告警,可用性掉到 90.9%,错误预算快速耗尽。初步排查 CPU/内存/PID 压力/网络/kubelet 全部正常;etcd `endpoint health` 返回 healthy(15.7ms)——极具迷惑性。
决策
作者绕开 health 检查,直看 etcd 日志与 Prometheus 指标:etcd 大量 "apply request took too long"(took 409ms,期望 100ms),连只读 range 都要等 Raft 达成一致(400ms);WAL fsync p99 在 300–500ms 之间(健康线应 <10ms);CoreDNS 本地健康检查 >1s、metrics-server 报 Handler timeout——均为 apiserver 等 etcd 的继发症状。`df` 确认 etcd 与 Longhorn 等共享 /dev/sda;`smartctl -t long` 发现 Command_Timeout=85(>0 即硬件故障信号)、Power_On_Hours=62247(7.1 年连续运行,寿命剩余 9%)。
结果
更换故障磁盘后 fsync p99 回到 10ms 以下,错误预算燃烧停止。事后补了三条基线:对 `etcd_disk_wal_fsync_duration_seconds` p99 告警(50ms 告警、100ms paging,300ms 即事故);监控 etcd 节点磁盘 IO 饱和度(与 Longhorn 等 IO 大户混部时 IO 利用率持续 >50% 即告警);用 smartctl_exporter 把 Command_Timeout 做成指标,>0 立刻告警。作者同时指出:把 etcd 迁到独立磁盘可滚动完成,无需停机。
机制根因
etcd 写路径 fsync-bound,leader 的存活绑定在"能否及时 fsync"上;磁盘物理命令超时 → fsync 停滞 → Raft 心跳 missed → 短暂丢 leader → apiserver 请求超时 → 全控制面抖动。`endpoint health` 只反映"此刻能否响应",对渐进式磁盘退化完全失明——health 为绿而 p99 已 500ms 是本案最贵的教训。
教训
别把 etcd endpoint health 当磁盘健康信号;WAL fsync p99 才是 etcd 磁盘的真实体温计(<10ms 健康、50ms 告警、100ms paging);etcd 必须独占磁盘,勿与 Longhorn 等 IO 大户混部;裸金属集群应把 SMART 指标纳入监控——"Kubernetes 把硬件抽象得太好,好到让人忘了硬件存在"。
来源
  1. DEV 社区生产复盘《Diagnosing KubeAPIErrorBudgetBurn: When a 7-Year-Old Disk Takes Down Your Control Plane》 https://dev.to/kashishtwts/diagnosing-kubeapierrorbudgetburn-when-a-7-year-old-disk-takes-down-your-control-plane-3md6

相关产品:etcd 相关能力:写吞吐天花板 + fsync 偏执:"慢盘 = 丢 leader = 控制面抖动" 最后核验:2026-10-02

Figma 单 Postgres → 垂直分区 → 逻辑分片(2020–2024):扩展是阶梯不是跳跃 成功经验

渐进式扩展 垂直分区 零停机 小团队
场景
实时协同设计场景,数据库 4 年增长近 100 倍;databases 团队小而精,无法承担一次到位的分布式重构。(http://figma.com/blog/how-figmas-databases-team-lived-to-tell-the-scale/)
决策
不换库,分三阶段推进:①垂直分区,按领域(files 库、users 库……)拆成十几个库,快速买到 runway;②量化每种瓶颈(CPU/IO/表大小/写入行数),预测每个分片的 runway;③自研 colos:Postgres 视图做逻辑分片 + Go 查询代理,9 个月、零停机、每步可回滚。
结果
2020 年的 AWS 最大单机 PG → 2022 年底十几个垂直分区 → 逻辑分片;100 倍增长下未发生全局事故。VACUUM 曾引发可靠性事件,倒逼出分片。
机制根因
垂直分区是"按领域拆",复杂度远低于水平分片,先拿 2–3 年 runway;视图 + 代理实现"逻辑先行、物理随后",应用层无感;先量化瓶颈再动手,避免过早分片。
教训
PG 规模化的真实天花板常常不是吞吐,而是 VACUUM/长事务这类运维债——要提前监控、提前建模;扩展路线每一步都应先有可测量的瓶颈模型(runway),按需升级阶梯,而不是一步跳到终局架构。

相关产品:PostgreSQL(社区版) 相关能力:进程模型连接天花板 + VACUUM 运维税 最后核验:2026-10-01

FriendFeed 在 MySQL 上实现无模式存储(2009) 成功经验

无模式 索引演进 在线变更
场景
2009 年 FriendFeed 高速迭代,最大的敌人是 schema 变更:2.5 亿行的大表加索引、改列,ALTER 锁表动辄数小时到数天,新功能上线节奏被数据库拖死。(Bret Taylor 2009 年博客,经存档;AWS James Hamilton 评论)
决策
不把 schema 暴露给 MySQL:实体存成一张分片表的 MEDIUMBLOB(zlib 压缩的 Python dict);索引拆成独立的"两列小表"(属性值→实体 ID),由离线索引构建进程持续维护;查询时先查索引表拿 ID,再回原表取实体,应用层做残余过滤。
结果
据 Bret Taylor 原文,加新属性、建新索引从"以周计"缩短到"以天计",且不再需要主从切换等高危运维操作;该模式后来被 Uber Schemaless 等发扬光大。
机制根因
关系 schema 的真正成本不在"建模"而在"演进"——在 2009 年的 MySQL(5.0/5.1 时代),大表 ALTER 往往意味着锁表重写物理存储,表越大越贵。注意这是历史条件:MySQL 8.x 的 online DDL 已支持 INSTANT/INPLACE 等低代价操作,部分变更只改元数据并允许并发 DML;本案例的"ALTER=重写"论断不可直接套用于现代 MySQL。FriendFeed 把"存储"和"索引"解耦:存储层只保证按主键取实体(MySQL 最稳的能力),索引变成可随意创建/删除的派生数据(最终一致,由后台 Cleaner 进程修复)。代价是放弃数据库端 JOIN 与二级索引一致性(索引与实体非原子更新,应用层必须容忍短暂不一致并做残余过滤),以及把查询优化器的活儿搬到应用层自己干。
教训
迭代速度被 ALTER 卡住时有两条路:搞在线 DDL 工具链(gh-ost),或干脆不让数据库知道 schema。后者适合"读多写少、查询模式简单、迭代极快"的场景;查询一复杂就别硬套。

相关产品:MySQL 相关能力:— 最后核验:2026-10-01

GitHub:不换库,自研 gh-ost 把在线 DDL 做成工具链 成功经验

零停机 schema 变更 运维工具链 MySQL 生态
场景
代码托管平台,MySQL 巨型表,schema 变更频繁;传统 ALTER TABLE 会锁表,对 7×24 服务不可接受(https://github.blog/2016-08-01-gh-ost-github-s-online-migration-tool-for-mysql/)
决策
不换库,而是把"在线 DDL"做成工具链:自研 gh-ost。
结果
gh-ost 开源后成为 MySQL 生态标准的在线改表工具之一,被大量公司采用。
机制根因
无触发器设计——通过读 binlog 追增量、影子表 + 原子切换完成迁移,避免了触发器在主库上的写放大与风险;把"改表不停机"从数据库内核能力变成了可版本化、可审计、可回滚的外部工具。
教训
"不换"的机制条件:痛点集中在运维操作面(schema 变更停机),可以用工具链补齐,而数据模型本身没有错。换库是重构数据模型,工具链是补齐操作能力——先判断痛点在哪一层,再决定动哪一层。把运维痛点做成产品,收益会外溢到整个生态。

相关产品:MySQL 相关能力:在线 DDL / 零停机 schema 变更工具链(gh-ost + pt-osc) 最后核验:2026-10-01

Infisical:MongoDB 迁往 PostgreSQL 失败教训

文档模型 递归/关系结构 迁移工程 零停机
场景
密钥管理 SaaS Infisical,核心是文件夹/密钥的递归树形结构,要求零停机迁移;早期选用 MongoDB 存嵌套文档。(https://medium.com/@tony.infisical/the-great-migration-from-mongodb-to-postgresql-fa3978bc143b,CEO 自述单一信源)
决策
迁往 PostgreSQL:数十种数据结构重写、数百个查询重写,用 LevelDB 做旧→新 ID 映射,逐表迁移实现零停机。
结果
迁移完成,核心树形查询改用递归 CTE;代价是数十种数据结构、数百个查询全部重写。
机制根因
递归树在文档模型里难表达、难高效查询,"灵活"反噬为查询税;关系模型 + 递归 CTE 才是树形结构的自然归宿;迁移工程本身(ID 映射、逐表双跑)是巨大成本,当初选型时未计入。
教训
当关系/递归结构成为核心而非点缀时,文档模型的灵活就是查询税;选型权重应给"数据模型与核心结构的匹配度",并把未来迁移工程的成本提前计入决策。

相关产品:PostgreSQL(社区版)、MongoDB 相关能力:MVCC + 查询优化器 + 事务性 DDL —— 复杂分析直接跑在 OLTP 主库上 最后核验:2026-10-01

Instagram:不换库,应用层分片撑过爆发增长 成功经验

高并发写入 水平扩展 应用层分片 ID 设计
场景
照片分享应用,2012 年达到每秒 25 张照片、每秒 90 个赞,单机 PostgreSQL 已经到顶。团队认真评估过 NoSQL 方案,但照片、点赞、关注这类数据的关系结构很规整(https://web.archive.org/web/20210112134155/https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c)
决策
不换数据模型,保留 PostgreSQL 与 SQL 语义,在应用层实现分片;把分片号嵌入 64 位自增 ID(41 位时间戳 + 13 位分片号 + 10 位序列),ID 天然可排序且生成无需跨节点协调。
结果
支撑了被 Facebook 收购后的爆发式增长;这套 ID 方案后来成为分布式 ID 设计的经典范式。
机制根因
瓶颈只是单机容量,不是数据模型——查询模式与关系模型依然契合。分片号内嵌在 ID 里,路由在应用层一次算出,彻底避免了分布式协调;事务与 SQL 语义完整保留,应用层几乎无感。
教训
"不换"的机制条件有三:瓶颈只是容量而非模型错配、查询模式与关系模型契合、跨分片查询可以避免。满足时,"分片现有库"比"换模型"便宜一个数量级。ID 设计是分片架构的第一公民——分片键必须在第一天就想好,事后补救的成本远高于事前设计。

相关产品:PostgreSQL(社区版) 相关能力:— 最后核验:2026-10-01

LinkedIn 自研 Espresso 替换 Oracle(2012–2018):特性组合倒逼自研 成功经验

多地域/全球化 文档模型 强一致 二级索引
场景
LinkedIn 的社交图谱与会员数据横跨多地域,要求文档灵活性、实时索引、事务与在线 schema 演进同时成立——当时市面上没有现成产品能给出这个特性组合。(https://brandtg.github.io/assets/pdf/p1135-qiao.pdf;https://www.slideshare.net/DavidMax2/david-max-saturn-2018-migrating-from-oracle-to-espresso-97200529)
决策
自研分布式文档库 Espresso,逐步替换 Oracle,而非在现有产品上做妥协。
结果
截至 2017 年 8 月:约 100 个集群、约 420TB 的 SoT 数据、峰值约 200 万 qps;系统设计发表于 SIGMOD 论文。(迁移规模数字来自 2018 年迁移幻灯片,为 B 级转述口径)
机制根因
层级文档模型(灵活与结构兼得)、timeline 一致性(多地可读写的折中方案)、实时局部二级索引、层级内事务、on-the-fly schema 演进——五个特性组合起来,当时任何现成产品都给不出。
教训
当选型需求的本质是"特性组合"而非单一指标时,硬套现成产品的适配成本会超过自研成本;但自研的门槛是一个 LinkedIn 级别的 infra 团队,且必须先有论文级的设计再动手,否则只是把选型债换成自研债。

相关产品:Oracle Database(甲骨文) 相关能力:出走潮 —— Amazon 下线 Oracle 与"每两周停机 10 分钟做 schema 变更" 最后核验:2026-10-01

DBS 银行:东南亚最大银行的"去闭源"之路 成功经验

去闭源 成本优化 金融合规
场景
DBS(新加坡发展银行,东南亚最大银行;MariaDB 官网口径:总资产约 3330 亿美元、月均近 300 万笔金融交易)长期依赖闭源专有数据库,技术团队想推动开源议程:无 CPU license 费用、弹性扩展不带来成本膨胀、满足金融监管的合规要求(静态数据加密、用户审计)。(https://mariadb.com/resources/customer-stories/dbs/)
决策
保守起步:先在一个非关键应用上试点 MariaDB;成功后扩展到 3 个应用(含支付服务模块这一关键组件);约两年内 30 多个应用在 MariaDB 上生产上线,包括公司银行最复杂的系统;2017 年 8 月对公银行与综合支付引擎作为首批关键业务上线;用 MaxScale 的 CDC 模块把 OLTP 数据实时同步到 Hadoop 做实时洞察。(https://mariadb.com/resources/customer-stories/dbs/)
结果
MariaDB 官方口径:成本节约 30–70%(按应用和负载而定),无 CPU 费用所以横向扩展不再自动推高成本;DBS 后续把超 50% 的关键应用部署到 MariaDB(MariaDB 官网客户故事页口径,2023 年 OpenWorks 演讲);DBS 技术运营执行董事 Joan Tay Kim Choo 在独立媒体 diginomica 采访中称 MariaDB 平台"非常非常稳健、零故障"。以上数字均为厂商/客户单方口径,无第三方独立审计。(https://mariadb.com/resources/customer-stories/dbs-bank-oracle-to-mariadb/;https://diginomica.com/nimble-services-happier-customers-how-dbs-bank-is-transforming-it-with-devops-and-open-source)
机制根因
专有数据库的成本结构是"横向扩展=成本线性膨胀"(CPU license 计费);MariaDB 开源且无 CPU 费用,扩展只付硬件和运维;MaxScale 代理把读写分离、CDC 从应用层解耦,Hadoop 实时流不侵入 OLTP 主链路;静态加密+审计插件直接满足银行合规。
教训
高监管行业做开源替换,渐进式验证(非关键试点→支付模块→公司银行核心)比"大爆炸"替换风险低得多;DBS 还内部办了两场 DBS/MariaDB 技术大会做布道——组织认同比技术验证更难拿下。另注意:本案例的成本数字全部来自厂商侧,严谨选型时应要求客户侧可验证的 TCO 对账。

相关产品:MariaDB、Oracle Database(甲骨文) 相关能力:治理红利 —— "真正开放的 MySQL"、授权 FUD —— "换到通用云要双倍 license"是人为商业壁垒 最后核验:2026-10-02

LeadDesk:400 万通电话/周的多租户分片 成功经验

多租户 分片扩展 MaxScale
场景
芬兰呼叫中心软件商 LeadDesk:平台每周处理 400 万+通电话、10 万订单,数据量达 20TB;原有 LAMP 技术栈的多租户数据库环境已跟不上业务增长。(https://www.techmonitor.ai/technology/data/mariadb-steps-in-to-field-leaddesks-calls-4603083/feed)
决策
采用 MariaDB + MaxScale 代理做分片(sharding):MaxScale 把数据库操作与应用层解耦,应用仍走 MySQL 协议、分片路由由代理层承担,数据库变更无需停机、下线应用。
结果
合作宣布时口径(非事后复盘):LeadDesk CEO Olli Nokso-Koivisto 称"用 MariaDB MaxScale 做分片,扩展在技术上没有上限",且快速上线、无需改造应用。以上为厂商合作宣布阶段的表述,无第三方事后验证。
机制根因
MaxScale 作为数据库代理承担分片路由,存量 LAMP 应用零改造是关键——迁移成本主要在数据重分布而非应用重写;多租户场景下按租户/时间分片,20TB 数据分散到多节点。
教训
MySQL 系做分片不一定要上 Vitess 或自研中间件:MaxScale 这类协议层代理对"存量 LAMP 应用 + 多租户"是改动最小的横向扩展路径;但要注意这是厂商方案宣布口径,生产口碑样本少,选型时应要求同规模的真实生产参照。

相关产品:MariaDB、MySQL 相关能力:— 最后核验:2026-10-02

MariaDB plc 的过山车:6.72 亿美元估值到 3730 万美元被私有化 失败教训

厂商风险 开源商业化 云战略反复
场景
MariaDB 公司(MariaDB plc;注意与 MariaDB 基金会区分:GPLv2 内核由基金会托管,公司围绕它做 BSL/专有产品):2022 年 12 月经 SPAC(Angel Pond)借壳在纽交所上市,估值 6.72 亿美元;随后股价崩盘——2023 年 4 月裁员并发布"持续经营"警告,10 月拿到 2650 万美元贷款的同时再裁 28%(约 84 人)并砍掉 SkySQL 云 DBaaS、Xpand 分布式引擎等战略产品线,12 月把 SkySQL 分拆为独立公司;2024 年 2 月 K1 Investment Management 出价每股 0.55 美元(总价约 3730 万美元),9 月完成收购、退市,CEO 换为 Rohit de Souza。(https://www.theregister.com/software/2024/09/10/private-equity-firm-completes-mariadb-buyout/273959?td=keepreading)
决策
公司层面收缩回核心企业版 Server,砍掉云 DBaaS 与分布式产品线;接受私募股权收购、私有化求生。
结果
公开市场估值蒸发约 94%(6.72 亿→3730 万美元);SkySQL 老用户面对产品线终结与被迫迁移;尾声:2025 年 3 月 K1 治下的 MariaDB 宣布重建 DBaaS(CEO 承认当年 SkySQL"与超大规模云厂商正面竞争是疯狂的",经济模型不成立),而分拆出去的 SkySQL Inc. 则在 2024 年 12 月拿到 660 万美元种子轮继续独立运营。以上均为公开报道数字。(https://www.theregister.com/software/2025/03/12/mariadb-reboots-dbaas-plans-with-open-source-at-the-core/1042458)
机制根因
开源流行度不等于商业化能力——SPAC 上市过早、云 DBaaS 与 hyperscaler 正面竞争导致 SkySQL 经济模型不成立(CEO de Souza 原话:产品没真正 ready、靠向云厂商包量转售,企业大客户自己谈的折扣永远更好);核心矛盾是社区版免费 + 云厂商托管分流,企业版订阅撑不起上市公司的增长故事。
教训
选开源数据库要看"公司"和"项目"两层风险:内核有基金会托管(GPLv2 不会消失)是安全垫,但商业支持、云托管、roadmap 投入会随公司财务剧烈波动;SkySQL 用户的教训是把生产跑在厂商专有云服务上,等于把命运押在厂商的资产负债表上。这也正是"治理红利"卡片的现实注脚:基金会托管的 GPLv2 内核熬过了 plc 的崩盘。

相关产品:MariaDB 相关能力:治理红利 —— "真正开放的 MySQL" 最后核验:2026-10-02

ServiceNow 出走:Xanadu 版本换上 Postgres 系 RaptorDB 失败教训

厂商替换 性能天花板 SaaS
场景
2024 年 9 月 ServiceNow 发布 Xanadu 版本:平台后端从用了多年的 MariaDB,切换到自研的 RaptorDB——基于 Postgres 开源内核 + 收购来的专有技术。时任产品工程高级副总裁 Robert Krohn 向 The Register 证实这是"一件大事"。(https://www.theregister.com/software/2024/09/10/servicenow-moves-its-backend-off-mariadb-to-postgres/1197077?td=keepreading)
决策
不做 MariaDB 原地升级,而是引入 Postgres 系新库;同时首次推出数据库分档:Pro 档(付费,更高性能)与标准档;迁移走 guided 流程,官方口径称对谨慎的管理员来说"无缝嵌入、不耗时"。
结果
ServiceNow 官方口径:Pro 档下整体事务时间 −53%、报表/分析/列表拉取快 27 倍、跨工作流事务吞吐 3 倍;顺带把数据库变成新的增收层(此前 SaaS 从不按数据库性能分档收费)。以上数字均为厂商单方口径,无独立验证。
机制根因
客户数据量与性能诉求持续增长后,MariaDB/MySQL 系在复杂查询与分析加速上的天花板显现;Postgres 系的优化器与可扩展性给了 ServiceNow 做"专有增强 + 分档收费"的技术支点;MySQL 协议生态的护城河,挡不住"27 倍"量级的性能差距叙事。
教训
旗舰客户不是永久的——2018 年"database of choice"的 8.5 万库规模,6 年后成了出走案例。对 MySQL 系选型者的启示:把未来全部押在单一协议生态上,要有"头部 SaaS 会为性能切换内核"的预案;评估厂商时除了看功能,更要看"离开成本"和"可替代性"。
来源
  1. The Register 2024-09-10《ServiceNow moves its backend off MariaDB to Postgres》 https://www.theregister.com/software/2024/09/10/servicenow-moves-its-backend-off-mariadb-to-postgres/1197077?td=keepreading

相关产品:MariaDB、PostgreSQL(社区版) 相关能力:MVCC + 查询优化器 + 事务性 DDL —— 复杂分析直接跑在 OLTP 主库上 最后核验:2026-10-02

ServiceNow 巅峰:8.5 万个 MariaDB 库、每小时 250 亿查询 成功经验

SaaS 多租户 超大规模 高可用
场景
ServiceNow 的 Now Platform(多租户 SaaS,每个客户运行独立实例):2018 年 MariaDB 公司口径——平台运行至多 85,000 个 MariaDB 数据库,每小时服务超 250 亿查询,存储数十 PB 数据;ServiceNow 运维总监 Tim Yim 在 MariaDB M|18 用户大会主题演讲中称 MariaDB TX 为其"database of choice"。(https://www.storagenewsletter.com/2018/03/05/servicenow-cloud-automation-platform-handles-25-billion-queries-per-hour/;https://www.private-equitynews.com/news/investment-facilitates-innovation-furthering-mariadb-as-the-leading-enterprise-open-source-database/)
决策
多实例架构 + MariaDB TX 承载高可用(每层冗余、追求近乎完美的可用性);与 MariaDB 共建产品 roadmap(实时 DDL 等),ServiceNow Ventures 参与 MariaDB C 轮融资、其开发运维 SVP Pat Casey 进入 MariaDB 董事会。
结果
厂商口径下达到 85k 库/250 亿 qph 的规模,支撑全球 2000 强中 40% 企业的工单流;合作期内联合交付实时 DDL(MariaDB TX 3.0)。以上数字全部来自 MariaDB 公司 2018 年通稿,无独立第三方验证。
机制根因
SaaS 多实例模型天然适配"海量中小库":MariaDB 单实例轻量 + MySQL 协议生态,让每个租户库独立、数据隔离、可按客户节奏升级;集中式大库(Oracle RAC 这类)在"实例海"场景反而是成本与运维负担。
教训
MariaDB 在"海量小库"场景的 scale-out 靠的是实例数量而非单库规模;这类旗舰客户的成功高度依赖厂商共建(roadmap 输入、联合开发)——而这恰恰是后来故事反转的伏笔(参见关联反例 mariadb-servicenow-leaves:2024 年 ServiceNow 切换到 Postgres 系 RaptorDB)。

相关产品:MariaDB 相关能力:— 最后核验:2026-10-02

Wikipedia 迁入 MariaDB:世界最大百科的 2013 年"信任投票" 成功经验

开源治理 大规模迁移 读密集
场景
2013 年的 Wikipedia:英文、德文维基百科及 Wikidata 的全部生产数据库,从 Facebook 分叉的 MySQL 5.1(r3753)迁移到 MariaDB 5.5。仅英文维基百科的数据库日峰值就达约 5 万 qps,其中 80%(约 4 万 qps)由两台从库承担;最常见查询类型中位执行时间约 0.2ms、p95 约 50ms。(https://diff.wikimedia.org/2013/04/22/wikipedia-adopts-mariadb/)
决策
不选 Oracle MySQL 5.5 而选 MariaDB 5.5:MariaDB 的优化器增强、Percona XtraDB 的特性集(如 buffer pool LRU 列表持久化,避免新服务器昂贵的预热),叠加 MySQL 5.5 的功能;同等重要的是治理——Wikimedia 作为自由文化运动支持者,偏好无"双重许可代码库"的自由软件项目,并公开支持 MariaDB 基金会作为非营利托管方。
结果
先做生产级 A/B 验证:取一台英文维基生产从库下线,升级到 MariaDB 5.5.30 后逐步加回负载,与仍在跑 Facebook fork 的机器同权重对比。最常见查询类型的 p95 从 56ms 降到 43ms、平均从 15.4ms 降到 12.7ms;多数查询类型快 4–15%,少数慢 5%,无异常;之后逐台滚动升级并轮换主库,全程无缝。上述数字均来自 Wikimedia 官方博客原文。(https://diff.wikimedia.org/2013/04/22/wikipedia-adopts-mariadb/)
机制根因
MariaDB 5.5 = MySQL 5.5 功能超集 + XtraDB + 优化器改进,相当于把 Facebook fork 已验证的 InnoDB 增强路线装进可长期维护的社区发行版;Wikimedia 的决策权重里"谁拥有未来"(治理)与"跑得更快"(性能)并列,而 Oracle MySQL 在治理项上直接出局。
教训
大规模 MySQL 系迁移成功的关键不是基准测试分数而是迁移方法:生产环境外跑 MariaDB 从库做兼容性测试、用 pt-upgrade 回放生产读查询对比两边响应、用 tcpdump + pt-query-digest 做 A/B 性能验证、逐台灰度。另外升级暴露了 MediaWiki 代码里依赖"unsigned 整数溢出回绕"的隐性行为——新版严格语义下会报错,升级前必须做应用兼容性测试。
来源
  1. Wikimedia 官方博客,站点架构师 Asher Feldman《Wikipedia Adopts MariaDB》 https://diff.wikimedia.org/2013/04/22/wikipedia-adopts-mariadb/

相关产品:MariaDB、MySQL 相关能力:治理红利 —— "真正开放的 MySQL" 最后核验:2026-10-02

Shopee:短视频向量检索引擎——从 Milvus 1.x+Mishards 到 2.x 的架构升级 (2023) 成功经验

短视频 视频召回 视频去重 版权匹配 版本迁移 存算分离
场景
Shopee 为对抗 TikTok 等短视频平台、上线了多媒体理解(MMU)业务:Shopee Video 短视频功能及独立短视频 App。视频、图像、音频、文本等海量非结构化数据涌入,传统数据库难以处理;内部还并存着视频召回、视频去重、视频推荐等多套用不同技术栈打造的系统,都重度依赖向量检索能力。Shopee 需要一个能无缝嵌入这些异构系统、随数据量增长快速扩容的统一向量检索引擎。
决策
MMU 团队调研了多种开源向量搜索引擎后选定 Milvus 作为向量检索引擎的地基,从零搭建检索系统。第一阶段用 Milvus 1.x(1.1 + Mishards 分布式方案);随着业务与数据量增长,再升级到 Milvus 2.x。
结果
支撑了 1 亿以上 embedding 向量的存储与检索厂商口径。1.x 阶段 Mishards 的默认分片策略偶发 segment 在只读节点间分布不均导致延迟,团队用"多套 Mishards 集群共享数据库与 S3 存储桶"的方式缓解。升级到 2.x 后,稳定性、可扩展性与多副本能力带来变革:实时检索延迟降低、可用性提高,日志与监控成本下降,系统架构与运维得以简化。视频召回系统以 Milvus 为基石做 Top-K 候选召回再经排序算法精排;版权匹配系统把已发布视频特征全部向量化入库,新上传视频做相似度匹配(预处理、特征提取、结果排序、复检四个模块)识别盗版;去重系统用 Top-K 相似检索加批量检索、聚类与指纹分配消除重复内容。
机制根因
Mishards 是 Milvus 1.x 时代的分片中间件:把上游请求拆成子模块分发到各服务再聚合结果,本身不是原生的分布式协调层,分片策略不均就会出现"部分只读节点过载、部分空闲"的倾斜。2.x 的云原生存算分离架构加多副本,让 Top-K 召回可以直接走分布式接口,不再需要外挂缓存与"多套集群共享存储"的拼装方案——架构升级消灭的是一整类运维补丁。
教训
1.x+Mishards 是"能用、但部署维护成本高"的过渡方案(原文明确承认"incurred significant deployment and maintenance costs"),版本演进可以带来架构级红利,但是否值得承担迁移成本,要看业务是否真的撞到了旧架构的天花板。Shopee 的判断标准很务实:延迟与可用性成为瓶颈时才升级,而不是追新。
来源
  1. Zilliz 客户故事《Shopee Elevates Its Multimedia Business with Milvus》(由 Shopee MMU 团队撰写、授权转载
  2. 100M+ 向量、Mishards 分片不均、2.x 升级收益) https://zilliz.com/customers/shopee

相关产品:Milvus 相关能力:十亿级分布式向量检索(存算分离 + 分片的云原生架构)、自托管运维复杂度——"defusing a bomb",全场最高 最后核验:2026-10-02

Trend Micro:APK 病毒检测——从 MySQL 到 Faiss 再到 Milvus 的选型三级跳 (2023) 成功经验

病毒检测 APK 安全 选型对比 MySQL 迁移 实时威胁检测 监控
场景
Trend Micro 移动安全团队负责从 Google Play 等外部渠道爬取 APK(Android 安装包),用自研算法检测携带病毒的 APK。样本库膨胀到千万级、日增几十万后,原有方案撑不住了:既要毫秒级相似检索做实时威胁判定,又要跟上每天几十万新增样本的入库速度。
决策
三级跳。第一级 MySQL:项目早期用关系型数据库做 APK 相似搜索,数据量小的时候 SQL 查询够用;数据量到千万级、日增几十万后查询延迟飙升、高并发下出现瓶颈。第二级 Faiss:Facebook 2017 年开源的相似搜索算法库,速度快、索引选项多(IndexFlatL2、IndexFlatIP、HNSW、IVF),但本质是"裸算法库"——无数据管理、无高可用、无监控、非分布式,生产环境要自己造存储层与运维体系。第三级 Milvus:用 C++ 实现的完整向量检索引擎,集成了 Faiss/NMSLIB/Annoy 等主流索引库,兼有直观 API(可按场景选索引类型)、高可用与分布式架构、Prometheus+Grafana 原生监控。团队还做了横向基准对比厂商口径:ES 600ms@100 万向量/128 维,ES+阿里云 900ms@2000 万,Milvus 27ms@10 亿以上,SPTAG 记为"Not good",ES+nmslib+faiss 插件方案 90ms@1.5 亿——Milvus 在延迟与规模两项同时胜出。
结果
ThashSearch 服务上线数月,端到端查询平均延迟稳定在 95 毫秒以内厂商口径;300 万 192 维向量约 10 秒入库厂商口径,跟上了每日几十万新增样本的节奏。高级研究工程师 Wei Huang 评价:"Milvus delivers unparalleled performance and flexibility... make it an indispensable tool in our APK security efforts." 团队还在规划用 Milvus 的字符串类型 ID 干掉现有的 Redis 缓存层以简化架构。
机制根因
MySQL 做相似搜索是"用关系模型干向量活":B-Tree 索引对高维最近邻毫无帮助,数据量上去后只能靠全表暴力比对,延迟与并发双崩。Faiss 解决了"算得快",但生产系统还需要"管得住"(数据管理、副本、监控、水平扩展)——Milvus 的价值正在于把 Faiss 级别的索引库装进了一个分布式数据库的壳里。这是"库 vs 数据库"的经典分野:算法库不管数据生命周期,数据库才管。
教训
向量选型至少要过四问:数据管理(谁管向量的增删与持久化)、高可用与监控(挂了谁知道、谁接管)、分布式扩展(数据量翻 10 倍怎么办)、索引灵活性(不同特征向量能否选不同索引)。"检索快"只是必要条件,Trend Micro 在 Faiss 上栽的跟头就是只看了速度。
来源
  1. Zilliz 客户故事《Trend Micro: Leveraging Milvus for Advanced APK Security》(MySQL→Faiss→Milvus 三级跳、基准对比表、<95ms 延迟、3M 向量 10 秒入库) https://zilliz.com/customers/trend-micro

相关产品:Milvus 相关能力:索引动物园——按数据冷热与硬件选索引、十亿级分布式向量检索(存算分离 + 分片的云原生架构) 最后核验:2026-10-02

唯品会:推荐系统从 Elasticsearch 迁到 Milvus,10 倍加速与一线运维教训 (2024) 成功经验

电商推荐 Elasticsearch 迁移 读写分离 Java 客户端 索引预热 压测调参
场景
唯品会用户超 5200 万、年订单 2.7 亿厂商口径,推荐系统是电商命脉。旧系统用 Elasticsearch 做向量检索:Top-K 检索平均 300ms,叠加后续处理阶段后最终响应长达秒级;共享索引织成"复杂迷宫",构建与维护成本飙升;即便尝试用 hashing 插件抢救 ES 也未达预期。团队需要一套更快、更便宜维护的向量检索栈。
决策
评估后选 Milvus 重建推荐系统,看中的是分布式部署、多语言 SDK、读写分离——"outshone Elasticsearch and other vector search technologies"(原文)。架构:深度学习模型把商品特征转成向量,经 MySQL + ETL 工具写入 Milvus;用户的查询与购买偏好同样向量化,在 Milvus 中做 ANN 相似检索取 Top-K;采用读写分离部署策略。
结果
向量查询耗时降到 30ms 以内,相对 ES 方案整体 10 倍加速厂商口径;数据更新与召回链路的三个核心服务(用户向量获取、Milvus 检索、调度合并)响应延迟均为 10ms;推荐系统维护成本下降。
机制根因
ES 的 Top-K 高延迟源于其倒排索引基因——为文本检索设计的架构做向量 ANN 是"跨界打工";共享索引则让不同业务的向量数据互相干扰,调参与维护成本指数上升。Milvus 的读写分离让读多写少的推荐场景下读节点可独立扩展,分布式架构让计算与存储随业务量各自伸缩。
教训
本案最有价值的是原文坦承的四个运维坑(这也是 Milvus 自托管复杂度的真实注脚):1)Milvus Java 客户端没有原生重连机制(连接常驻召回服务内存中),唯品会自建了连接池并在客户端与服务端之间加心跳检测保活;2)新 collection 预热不足会导致偶发慢查询,对策是对新 collection 做模拟查询预热;3)检索性能与精度是一对 trade-off,必须按业务场景做压测、设合理的阈值;4)静态数据场景下,先全量导入数据、后建索引更高效。选型时只看 benchmark 数字的人,往往会在这四个坑里挨个摔一遍。
来源
  1. Zilliz 博客《Milvus Made VIPSHOP's Ecommerce Recommender 10x Faster》(52M 用户/270M 订单、ES 300ms→Milvus <30ms、四个运维教训

相关产品:Milvus、MySQL 相关能力:十亿级分布式向量检索(存算分离 + 分片的云原生架构)、自托管运维复杂度——"defusing a bomb",全场最高 最后核验:2026-10-02

小米:手机浏览器 AI 新闻推荐的向量召回层 (2021) 成功经验

新闻推荐 召回排序 BERT 实时增量更新 移动端
场景
小米为预装在手机上的自带浏览器做差异化:在每季度 4000 万台以上的出货量厂商口径面前,浏览器需要一套 AI 新闻推荐引擎,根据用户搜索历史与兴趣推荐相似内容。新闻推荐的核心矛盾是"相关性 vs 时效性":文章库每时每刻都在新增,推荐必须基于用户行为与最新内容实时产出。
决策
推荐系统拆成三段:向量化、ID 映射、近似最近邻(ANN)服务。向量化用基于 BERT 的 SimBert 模型(12 层、hidden size 768;中文 L-12_H-768_A-12 持续训练,训练任务为 metric learning + UniLM,在单张 TITAN RTX 上训练了 117 万步,Adam 优化器、学习率 2e-6、batch size 128);ANN 检索层选用 Milvus 做核心数据管理平台;ID 映射负责取回点击量、浏览量等业务指标。
结果
系统采用"T-1 天全量更新 + T 天增量更新"的数据策略:定期删除旧数据、插入 T-1 天的处理后数据,新产生的数据实时入库;入库后即做相似度检索,召回结果再按点击率等指标排序后推送给用户。小米选择 Milvus 的理由原文是"fast, reliable, and requires minimal configuration and maintenance"厂商口径;其分布式版本"极大降低了自建检索层的工作量"(原文)。
机制根因
新闻推荐是"高频更新 + 实时检索"的双重要求:向量库必须同时擅长快速写入新向量和毫秒级 ANN 检索。Milvus 的动态向量数据管理让"边更新边查"成为可能,而召回与排序的分离(向量库只管 Top-K 召回,点击率等业务指标管精排)是推荐系统的标准分工——不要指望向量库替你做业务排序。
教训
推荐系统的召回层与排序层要用不同的技术选型:ANN 检索解决"从百万级文章库里快速捞出几千篇候选",点击率、时效性等解决"哪篇放最前"。把两层混在一起(比如在向量库里硬算业务权重)是常见的反模式。
来源
  1. Zilliz 博客《Making with Milvus: AI-Powered News Recommendation Inside Xiaomi's Mobile Browser》(SimBert 训练细节、T-1 全量/T 增量更新策略、选型理由) https://zilliz.com/blog/Making-with-Milvus-AI-Powered-News-Recommendation-Inside-Xiaomi-Mobile-Browser?__hstc=175614333.2f15aec075439bbbb84313a0cbcedd10.1714089600068.1714089600069.1714089600070.1&;__hssc=175614333.1.1714089600071&__hsfp=892594048

相关产品:Milvus 相关能力:— 最后核验:2026-10-02

Momentic:PostgreSQL+Redis 缓存层迁往 ClickHouse 失败教训

快速迭代/小团队 实时分析/OLAP 架构简化 物化视图
场景
AI 测试 SaaS Momentic 的缓存层,每天 120 亿次缓存操作;小团队维护 PostgreSQL(存缓存)+ Redis(热层)两层架构。(https://momentic.ai/blog/postgres-to-clickhouse-migration,公司博客单一信源)
决策
下线 Redis 整层,把缓存搬到 ClickHouse:UPDATE 改写为 INSERT + ReplacingMergeTree 后台去重,用物化视图维护 commit 时间戳;迁移按"双写 → 双读 + 一致性校验 → 切读 → 下线旧库"推进。
结果
Redis 整层被删除,架构少一层;UPDATE 语义由"追加插入、后台去重"实现。数字与细节来自公司博客单一信源,无第三方验证。
机制根因
缓存 workload 是高频 UPDATE,落在 PG MVCC 上就是写放大 + 表膨胀;ClickHouse 的 ReplacingMergeTree 把"更新"变成"追加插入",范式正好匹配高频覆写缓存,物化视图则承担派生状态的维护。但代价要说全:ReplacingMergeTree 的去重要等后台 merge 触发,非常规查询可能读到同一键的多版本(需 FINAL 或版本列过滤,FINAL 有查询代价);并发覆盖、删除与读后写一致性都要单独设计——它不等于传统 OLTP 的 UPDATE 语义。
教训
用分析型 DB 承担缓存/事件存储时,关键范式转换是把 UPDATE 改写成 INSERT,而不是硬扛原语义;双写双读校验是低风险迁移的标准模板;对 Momentic 这种容忍短暂多版本、读多写少的缓存场景,少一层确实少一份运维税——但需要强一致读后写的场景别硬套,省掉的层会以一致性设计成本的形式回来。

相关产品:PostgreSQL(社区版)、Redis / Valkey、ClickHouse 相关能力:MVCC + 查询优化器 + 事务性 DDL —— 复杂分析直接跑在 OLTP 主库上、物化视图 + 表引擎的 DDL 管道哲学 最后核验:2026-10-01

Etsy:在 Treasury 功能上试水 MongoDB 失败,迁回 MySQL 分片——"再运维一种生产数据库是巨大的时间浪费"(2012) 失败教训

回迁 NoSQL 回摆 多栈运维税 功能级回迁
场景
2010 年左右,Etsy 为新功能 Treasury(精选橱窗)试水 MongoDB,工程师 Dan McKinley 当时还在 Etsy 官方工程博客 Code As Craft 上写过选型时的思考。结果他自己的总结是"an abject failure"(彻头彻尾的失败):同事 Ryan Young 最终把整个功能 port 回了 MySQL 分片——而在此期间,Etsy 的 MySQL 分片体系已经成熟。对 Treasury 功能本身而言这是 MongoDB→MySQL 单向;放在 Etsy 公司层面,是 MySQL→试水 MongoDB→迁回 MySQL 的完整回摆。
决策
没有"调优再战",直接迁回。Dan 的原话是复盘全文的核心:"adding another kind of production database was a huge waste of time"(再引入一种生产数据库是巨大的时间浪费)。他列的账单很具体:日志、监控、慢查询优化、init 脚本、绘图、复制、分片策略、rebalance 策略、备份、恢复——"probably like 50 other things",每一种数据库都要做一遍;实践中团队只会认真做其中一套,另一套就成了"贫民窟"(ghetto)。而 2010 年的他们"几乎是全世界第一批"在生产环境啃下 MongoDB 这套运维清单的人。
结果
Treasury 功能迁回 MySQL 分片后稳定运行(作者口径)。值得注意的是 Dan 的诚实注记:失败原因"大概不是你想象的那些"——关于 MongoDB 默认不安全、单机 durability、数据丢失传言,"none of that ever affected us"(没有一条真正影响到我们)。他也不反对别人从零开始用 MongoDB。真正的杀手是"第二种数据库"本身。
机制根因
"多栈运维税"是隐性、线性、不可外包的成本。MongoDB 的无 schema 红利(开发快)是显性的、前置的;运维清单(备份恢复、分片、监控、慢查询)是隐性的、后置的,且与第一种数据库"完全不复用"。Dan 的判断句是全文转折点:"There is no panacea for your scaling problem. You still have to think about how to store your data so that you can get it out of the database."(扩展性问题没有灵丹妙药,你终究要想清楚数据怎么存才取得出来。)当 MySQL 分片在这期间成熟到"足够好",MongoDB 相对 MySQL 的差异化就不值得再付一份运维税——"for most purposes, it's pretty hard to make the case that MySQL and Mongo are really sufficiently different."
教训
引入第二种数据库前先算"双份运维清单":不是 license 或性能对比,而是日志/监控/备份/分片/on-call 全部乘以二;新功能试水新数据库时设"回迁止损线"——Etsy 的止损动作是等人(Ryan Young)而不是等技术成熟;"足够好"的存量栈是新技术的隐形天花板:MySQL 分片成熟之日,就是 MongoDB 试水价值归零之时;复盘时区分"技术本身的问题"和"引入第二种技术的问题",两者对策完全不同。
来源
  1. Dan McKinley(Etsy 工程师)个人博客《Why MongoDB Never Worked Out at Etsy》(2012
  2. 实名复盘,含"abject failure"、Ryan Young 迁回、"huge waste of time"清单等细节
  3. 采用侧有其当年在 Etsy 官方工程博客 Code As Craft 的发文佐证,但弃用复盘仅此单来源,未找到第二独立来源,证据等级 medium) https://mcfunley.com/why-mongodb-never-worked-out-at-etsy
  4. —

相关产品:MongoDB、MySQL 相关能力:简单 OLTP 下"最不折腾周末"的运维体感 最后核验:2026-10-02

卫报:240 万篇文章 10 个月用户无感知——从 MongoDB 迁回关系型 PostgreSQL(2018) 失败教训

回迁 NoSQL 回摆 自建运维税 全托管 JSONB 迁移
场景
英国《卫报》的自研 CMS 系统 Composer(记者写稿工具),是其线上全部内容(文章、直播帖、图集、视频)的"唯一事实源",约 230 万条内容。2010 年代初,卫报为摆脱 Oracle 系旧架构(2000 年代 Vignette CMS + Oracle;2005–2009 年 J2EE 单体 + Oracle,300 多张表、1 万行 Hibernate XML 配置),由首席软件架构师 Mat Wall 主导选型 MongoDB(见其 QCon London 2011 演讲《Why I chose MongoDB for guardian.co.uk》,内有"Can we migrate from Oracle to NoSQL?"一页)。2015 年 7 月一场热浪导致自有机房故障后,卫报加速上 AWS,为 MongoDB 购买了 OpsManager 与官方支持合同。但 AWS 上两次严重停机(每次至少 1 小时全站无法发稿)、OpsManager 1→2 升级极其耗时、每年至少 2 个月工程时间耗在数据库管理上,加上昂贵的年度支持费,团队决定弃用 MongoDB。严格说是 A→B→C(Oracle→MongoDB→PostgreSQL),"回迁"发生在范式层面:从 NoSQL 回到关系型。
决策
先等 DynamoDB(当时 DynamoDB 不支持静态加密,卫报等了约 9 个月仍未果,放弃),最终选 AWS RDS 上的 PostgreSQL。关键决策点是 JSONB 列类型:可以用最小的数据模型改动把文档结构搬过去,未来还保留转向更关系化模型的选择权;加上"PostgreSQL 足够成熟,几乎每个问题在 Stack Overflow 上都有答案"。迁移策略是"双跑 + 代理 diff":2017 年 7 月底开始写全新的 APIV2(Scala + doobie,PostgreSQL 后端);2018 年 1 月在预生产环境 CODE 做完整迁移演练;写 Scala 代理把线上流量同时发给新旧两个 API 并记录响应差异;用 GoReplay 做流量回放验证;最后通过 DNS CNAME 一次切换,客户端无感。
结果
10 个月、240 万篇文章(作者口径;文首另记为约 230 万条内容条目)迁移完成,所有 Mongo 相关基础设施关闭:Mongo 实例从 OpsManager 解绑并终止。切换瞬间一次点击、没有出故障。但诚实记录:迁移期间代理本身导致过两次各约 2 分钟的生产抖动(作者原话,团队评估后决定不修代理、把时间花在迁移本身)。此前困扰他们的两类停机(Mongo 侧)在 RDS 上不再出现——代价是把数据库管理交给了 AWS 全托管。
机制根因
压垮 MongoDB 的不是性能,是"自建运维税"。Composer 是写重型应用(记者每停一下键盘就写一次库),但并发只有几百用户——"not exactly high performance computing",MongoDB 的扩展性优势在这里用不上;反而每次停机都发生在最要命的时刻(无法发稿),而 OpsManager 承诺的"无忧数据库管理"没有兑现:光是升级 OpsManager 本身就需要专家知识,"one-click upgrade"因 MongoDB 版本间认证 schema 变更而落空。团队的原话是全文题眼:"Database management is important and hard – and we'd rather not be doing it ourselves."(数据库管理重要且艰难——而我们宁愿不自己干。)当数据库的差异化价值为零、运维成本全是税时,全托管的关系型数据库就是理性终点;JSONB 则让"文档模型"不再是留在文档库里的理由。
教训
NoSQL 的"免运维"承诺要按"出事时谁来修"来验算:支持合同在两次停机中都没帮上忙,最后是靠团队自己(一次靠一位在阿布扎比沙漠边缘接起电话的同事);评估替代方案时把"等待上游功能"设止损线(卫报给 DynamoDB 加密功能设了约 9 个月,超时即换);迁移期间为临时组件(代理)投入的修复时间要封顶——它是注定要删的代码;JSONB 这类"关系库里的文档能力"是回迁的润滑剂:数据模型不用重写,回迁阻力小很多。
来源
  1. Guardian Engineering 官方工程博客《Bye bye Mongo, Hello Postgres》(2018-11-30
  2. 链条、停机、OpsManager、"we'd rather not be doing it ourselves"、10 个月 / 240 万篇、两次 2 分钟抖动等均为作者口径,未找到第三方独立复现) https://theguardian.engineering/blog/info-2018-nov-30-bye-bye-mongo-hello-postgres
  3. Oracle→MongoDB 旧链条见 Mat Wall(Lead Software Architect, guardian.co.uk)QCon London 2011 演讲稿《Why I chose MongoDB for guardian.co.uk》 https://qconlondon.com/london-2011/qconlondon.com/dl/qcon-london-2011/slides/MatthewWall_WhyIChoseMongoDBForGuardianCoUk.pdf

相关产品:Oracle Database(甲骨文)、MongoDB、PostgreSQL(社区版) 相关能力:JSONB —— 文档能力"反杀"专用文档库 最后核验:2026-10-02

Jepsen 独立测试 MongoDB 4.2.6:最强读写关注下仍违反快照隔离(2020) 失败教训

选型评估 独立测试 多文档事务 快照隔离 读写关注
场景
MongoDB 4.2 引入多文档事务后宣称"full ACID transactions"、"among the strongest data consistency guarantees"。2020 年 5 月 Jepsen 独立测试 MongoDB 4.2.6(2 分片×3 节点复制集 + configsvr,共 9 节点),用 Elle 事务一致性检查器验证多文档事务是否真能提供快照隔离。本次为 Jepsen 独立发起、无偿测试。
决策
测试设计对照多档读写关注——从默认到最强(read concern `snapshot` + write concern `majority`),并注入隔离主节点的网络分区,观察事务在故障与正常运行两种状态下的行为。
结果
即使在最强读写关注下仍违反快照隔离:read skew(读偏斜)、循环信息流、重复写、读到"自己未来的写"(retrocausal 异常)。更关键的是事务会把库/集合级设置的读写关注**降级**为 `local`/`w:1`,导致丢确认写、脏读;`snapshot` 读关注必须配 `majority` 写关注才有效,连只读事务也不例外。无故障正常运行时约 10% 事务出现异常(1461/13914,Jepsen 报告原文口径)。MongoDB 在报告发布 11 天后确认事务重试机制存在 bug,补丁排入 4.2.8。
机制根因
问题不止于单个实现 bug,更在于默认配置哲学。MongoDB 长期为保性能采用弱默认值(写关注默认 w:1),而事务作为新功能继承了这套"降级"逻辑——事务内直接忽略库/集合级的读写关注设置。用户以为"我开了 snapshot 就是快照隔离",实际还要逐事务再配 write concern `majority`。这是对"默认安全"预期的系统性违背:安全不是默认项,而是需要逐事务手动开启的选项。
教训
评估文档库事务能力时,不要看营销页的"ACID"字样,要看默认配置下的实际行为;关键事务逐条显式设置读写关注;任何"full ACID"宣称都值得用独立测试报告交叉验证。诚实注记:这是 4.2.6(2020 年 5 月)的结论,事务重试 bug 已在 4.2.8 修复;但"事务降级读写关注"是文档化的设计选择,选型时需按当前版本重新核验,不能默认已改。
来源
  1. Jepsen《Jepsen: MongoDB 4.2.6》(2020-05-15,独立测试、无偿
  2. 报告明确"This work was performed independently, without compensation") https://jepsen.io/analyses/mongodb-4.2.6
  3. MongoDB 确认事务重试 bug、补丁排入 4.2.8(该报告 2020-05-26 更新注记)同上

相关产品:MongoDB 相关能力:多文档事务的快照隔离与读写关注语义 最后核验:2026-10-02

Jepsen 独立测试 MySQL 8.0.34:默认 REPEATABLE READ 名不副实,RDS 版连串行化都保不住(2023) 失败教训

选型评估 独立测试 隔离级别 InnoDB RDS
场景
MySQL InnoDB 的默认隔离级别是 REPEATABLE READ。2023 年 12 月 Jepsen 独立复核 Kleppmann 2014 年 Hermitage 项目的结论,用 Elle 事务一致性检查器验证 MySQL 8.0.34 四档隔离级别的真实语义,并顺带测试了 AWS RDS Multi-AZ DB Cluster。本次为 Jepsen 独立发起、无偿测试(Peter Alvaro 与 Kyle Kingsbury 合著)。
决策
对照 Adya 形式化定义(PL-2.99)与 ANSI SQL 标准,测试对象包括单节点 InnoDB、binlog 一主多从,以及 AWS RDS MySQL 集群。
结果
默认的 REPEATABLE READ 不满足 PL-2.99(ANSI RR),甚至违反快照隔离与单调原子视图(MAV):G2-item、G-single(read skew)、lost update、内部一致性违反——Jepsen 原文口径为"略强于 Read Committed 而已"。附带发现:AWS RDS MySQL 集群频繁违反可串行化(主库执行成功的 CREATE DATABASE,从库一小时不恢复,复制脆弱)。截至报告页面,未见 Oracle 官方回应(查证为无);Jepsen 建议 AWS 修改 RDS 默认配置或在文档中明确说明限制。
机制根因
隔离级别同名不同义是行业通病——Jepsen 指出,在其测过的库里只有 SQL Server 的 RR 对应 PL-2.99,PostgreSQL 的 RR 实际是快照隔离。MySQL 的 RR 是"基于首次读的快照 + 写时可见性例外"的混合语义,文档里那句"DML 语句不一定读快照"就是裂缝所在。RDS 的问题则出在托管层的复制实现,而非 InnoDB 本身——选型时"MySQL"和"RDS 上的 MySQL"是两个不同的评估对象,不能默认等同。
教训
不要依赖隔离级别名称做正确性假设,关键路径用显式 `SELECT ... FOR UPDATE` 加锁;评估云托管版本时要把"托管层的复制语义"单独列为评估项;同名隔离级别跨库对比前先对齐语义定义。
来源
  1. Jepsen《Jepsen: MySQL 8.0.34》(2023-12-19,独立测试、无偿
  2. 报告明确"This work was performed independently without compensation") http://jepsen.io/analyses/mysql-8.0.34

相关产品:MySQL 相关能力:InnoDB 隔离级别的真实语义与文档裂缝 最后核验:2026-10-02

Netflix 逃离 Oracle:每两周停一次机的 schema 变更 失败教训

多地域/全球化 云原生 零停机 schema 变更 高可用
场景
2011 年前后 Netflix 全面上 AWS,全球流媒体 7×24 运行,会员与播放状态等核心数据跑在 Oracle 单库上。时任云架构副总裁 Adrian Cockcroft 事后列出三个致命点:Oracle 每两周至少一次 10 分钟停机做 schema 变更,全球服务无法接受;集中式主库是单点,而 Netflix 的可用性模型要求任何单点都不能拖垮服务;Oracle 为高端物理机设计,在虚拟化云主机上性能与弹性都差。(https://www.infoworld.com/article/2171162/big-movies-big-data-netflix-embraces-nosql-in-the-cloud.html)(https://www.slideshare.net/adrianco/migrating-netflix-from-oracle-to-global-Cassandra)——当事人原话经媒体转述。
决策
早期用 Oracle 单库承载核心数据;2011–2013 年间经 SimpleDB 过渡,最终迁往 Cassandra。
结果
到 2013 年约 95% 数据在 Cassandra 上,Oracle 被彻底移除(Netflix 自述,单方口径)。
机制根因
传统 RDBMS 把 DDL 当作需要锁表窗口的操作,而全球流媒体没有"维护窗口"——这是商业模型与运维模型的双重错配;Cassandra 无主架构为廉价节点设计,节点随意增减,与云弹性同构;集中式主库与"一切皆可失败"的云原生可用性模型根本冲突。
教训
当数据库成为可用性单点、且无法在弹性硬件上水平扩展时,集中式 RDBMS 不适合云原生全球服务;schema 演进的停机成本必须计入选型总账,不能只看功能矩阵。

相关产品:Oracle Database(甲骨文)、Apache Cassandra / ScyllaDB 相关能力:出走潮 —— Amazon 下线 Oracle 与"每两周停机 10 分钟做 schema 变更" 最后核验:2026-10-01

Notion 的 Postgres 分片之路(2021–2023):480 逻辑分片扛住 2000 亿 blocks 成功经验

水平分片 应用层路由 零停机 租户隔离
场景
Notion 万物皆 block,一个 block 就是 Postgres 里的一行。2021 年初已有 200 亿+ block 行挤在单 Postgres 实例上,数据量每 6–12 个月翻一番;官方博客称之后增长到 2000 亿+ blocks、数百 TB(压缩后)。(https://www.notion.com/blog/building-and-scaling-notions-data-lake)
决策
不拆微服务、不换库,2021 年对 Postgres 做水平分片:32 个物理实例 × 15 个逻辑分片 = 480 逻辑分片;2023 年扩到 96 物理 × 5 逻辑,逻辑总数保持 480。分片键选 workspace_id(一个 workspace 的数据永远在同一分片),逻辑分片用 Postgres schema 实现,应用层做路由,PgBouncer 管连接。(https://www.notion.com/blog/sharding-postgres-at-notion)
结果
据官方博客,480 逻辑分片承载 2000 亿+ blocks、数百 TB 数据;2021→2023 两次物理扩容均未重分片、未停机;单 workspace 查询天然落在单个分片,跨分片 join 基本消失。
机制根因
分片键 = 主导查询模式(用户一次只查一个 workspace),同租户数据共置,消灭了分片架构最痛的跨分片 join;逻辑分片与物理实例解耦,480 是高度可合成数(可被 2、3、4、5、6、8、10…整除),物理扩容只是搬运逻辑分片,无需重算路由;"单体应用 + 分片数据"的组合保住了开发效率,只把复杂度放在真正需要的地方。
教训
分片键必须等于你的主导访问模式,而不是数据的某种"自然"属性;逻辑分片数选高度可合成数,为未来物理扩容留好算术空间;分片是最后手段——先吃尽垂直扩展和读副本,Notion 也是单实例撑到 200 亿行才动手。
来源
  1. Notion 官方博客:Postgres 分片实战 https://www.notion.com/blog/sharding-postgres-at-notion
  2. Notion 官方博客:数据湖建设(含 2000 亿 blocks 与两次扩容) https://www.notion.com/blog/building-and-scaling-notions-data-lake

相关产品:PostgreSQL(社区版) 相关能力:— 最后核验:2026-10-01

Nubank 选择 Datomic 不可变数据库(2016–):把审计合规变成免费属性 成功经验

金融级审计 时间一等公民 HTAP 强一致
场景
巴西数字银行,Clojure 微服务架构;金融审计要求"任意时刻的状态可查",传统 RDBMS 要靠额外审计表与回放工具才能满足。(https://sarah-hall-0rmi.squarespace.com/s/Datomic-Nubank.pdf;https://aws.amazon.com/blogs/mt/leveraging-immutable-infrastructure-nubank/)
决策
核心账务直接采用 Datomic(不可变事实数据库),而非传统 RDBMS。
结果
支撑 Nubank 从初创成长为拉美最大数字银行;历史回放能力多次用于微服务拆分与从 bug 中恢复。(技术分享 PDF 为第三方托管副本,证据降级至 B+)
机制根因
时间一等公民——事实不可变、只追加,任意时点查询免费获得,审计合规从成本变成副产品;读写分离——读在应用端(peer library 缓存),写经 transactor 串行,保证可序列化 ACID,OLAP 不打扰 OLTP,无需 ETL 做实时分析;历史回放——拆分服务时按时间重放事务,保住账目完整;存储后端可换——PII 数据用 RDS Postgres + EBS 加密,非 PII 用 DynamoDB。
教训
审计要求本质上是"历史状态可查",不可变 + 时间一等公民把它变成数据模型的免费属性;但代价是小众生态与 Clojure 绑定——选型时要把"生态存活期"和"架构收益"放在同一张天平上称,不要只看模型优雅。

相关产品:无 相关能力:— 最后核验:2026-10-01

百丽时尚迁移OceanBase踩坑复盘:唯一键语义、OMS大字段与执行计划三连Bug(2025) 失败教训

迁移踩坑 数据一致性 执行计划 版本缺陷
场景
同一项目(百丽财务系统MyCat→OceanBase)的另一面:迁移跑通了,但在数据校验与SQL治理阶段连踩四个坑。源端是约束宽松的MyCat分片:历史脏数据(ID重复)、唯一键只在分区内生效;目标端是全局约束的OceanBase;中间还隔着OMS→Kafka的异构链路。任何一处语义理解偏差都会变成丢数,而丢数在财务系统是不可接受的。
决策
团队没有"一遍过"的幻想,建了三道防线:自研crc32分块校验工具做全量比对;流量回放(全量日志→CSV→双端对比)抓兼容与性能问题;上线前用Kafka把数据反向同步回MyCat/Oracle,保留回切预案。
结果
数据校验抓出4个问题:MyCat历史遗留ID重复;唯一键"分区级vs全局"约束范围差异导致丢数;OMS主键Hash分区+下游唯一键在并发消费时丢数;OMS 4.2.5.2之前版本>4K的LOB字段前镜像缺失,下游被置空(4.2.5.2已修复)。SQL治理抓出执行计划三连Bug:local rescan规则误裁剪走高代价hash join(V4.2.5.3之前版本,4.2.5.3修复)、tablegroup空分区导致手动均衡任务卡住(V4.2.5.3,4.2.5.4修复)、含复制表的SQL无法复用执行计划(V4.2.5.4,4.2.5.5修复)。另发现OceanBase离线DDL会直接锁表,团队自研"提交工单前先在测试环境跑一遍,看Table ID是否变化"来识别Online/Offline。
机制根因
坑的共性是"语义搬家":MyCat的唯一键、分区、Binlog都是分片局部的,OceanBase是全局的——约束从分区级变全局级,旧脏数据立刻现形;Kafka按主键Hash分区后,不同分区的并发写入叠加下游唯一键,消费顺序一乱就丢数,这是把"有序"假设从单库搬到分布式消息队列必然要付的代价。执行计划三连Bug是另一类:优化器在新版本快速迭代中引入的回归,说明"追最新版"本身就是一种风险敞口。DDL锁表暴露的是运维心智差异:MySQL系习惯pt-osc式的Online DDL,而OceanBase离线DDL直接锁表,必须前置识别。
教训
分布式迁移最大的风险不在数据库内核,在数据链路的语义差异——画链路图时把"唯一键范围、分区语义、消费顺序"三项显式标出来;校验工具必须自研或深度定制,通用工具覆盖不了异构语义差;生产环境优先选经过多个补丁验证的版本而非最新版;DDL上线前先在测试环境验证Online/Offline,把Table ID变化检查做进发布工单。
来源
  1. 卢文豪(百丽时尚数据库负责人)《分库分表MyCat架构迁移OceanBase|百丽核心财务系统迁移经验总结与问题汇总》,CSDN博客(页面未明示发表日期,据平台元数据最后更新约2025年11月) https://blog.csdn.net/2501_92049521/article/details/154294879
  2. —
  3. —

相关产品:OceanBase、MySQL 相关能力:— 最后核验:2026-10-02

百丽时尚:MyCat分库分表迁OceanBase,成本核算从10小时压到20分钟(2025) 成功经验

分库分表下线 成本优化 性能提升 零售财务
场景
百丽时尚是中国头部鞋服集团(20+品牌、8000+线下门店、覆盖300+城市),科技中心统筹零售、库存、财务等核心系统。其财务系统长期跑在MyCat分库分表架构上(按大区分片、一主两从,主机房北京),演进中暴露三类问题:大区合并/调整要跨库搬数据,脚本复杂、回滚窗口小;MyCat只做基础路由,复杂SQL与分布式事务支持弱,财务模块被迫把分片表改成全局表,数据冗余、维护成本上升;扩容要重划大区再全量迁移,性能瓶颈只能靠垂直升配。(百丽时尚数据库负责人卢文豪署名复盘,CSDN)
决策
科技中心把选型锁定在原生分布式数据库,提两项硬诉求:高可用、零数据丢失;在线弹性扩展,不停服不搬数据。多轮评估后选定OceanBase,迁移分三步走:先梳理全链路数据流转(上游Otter同步、下游Binlog入仓与Oracle报表),再用自研crc32分块比对工具做数据校验,最后用流量回放(全量日志→CSV→双端对比)做SQL兼容与性能治理。
结果
成本核算跑批从MyCat下的10小时压到20分钟,约30倍;存储从20.3TB压到1.3TB,降96.7%(作者称一半功劳是OceanBase高压缩,一半是MyCat冗余数据被整合释放);服务器从37台减到10台,硬件成本从207万元降到84万元,降59.4%。约4.5万个SQL ID回放后只发现1个不兼容(SQL末尾"--"注释在OceanBase报错)。以上数字均为百丽DBA负责人单方披露,无第三方独立复现。
机制根因
MyCat是"中间件+MySQL分片"的拼接架构,分布式能力(事务、复杂查询、扩缩容)都不在数据库内核里,瓶颈只能靠业务层妥协绕行(改全局表、分区内收敛),绕一次留一笔技术债。OceanBase把分片、事务、压缩收进同一个分布式内核:Paxos多副本让RPO=0成为架构免费项;单机分布式一体化使扩容不再触发数据重分布;编码+两层压缩把存储压到1/20以下。代价是下游链路重构:MyCat时代下游吃Binlog,OceanBase无原生Binlog,只能走租户级单线程的Binlog Service(高峰有瓶颈)或OMS→Kafka(需自研Kafka到Oracle的同步工具)。
教训
分库分表中间件的账要在"合区、扩容、复杂SQL"三件事上一次性结算,规模越大越痛;迁移前先画全数据流转图,下游消费链路才是真实工作量;流量回放比抽样测试便宜且覆盖全;MySQL协议兼容在OLTP场景基本可用(4.5万SQL仅1坑),但执行计划、分区裁剪这类语义层差异仍需逐条治理。
来源
  1. 卢文豪(百丽时尚数据库负责人)《分库分表MyCat架构迁移OceanBase|百丽核心财务系统迁移经验总结与问题汇总》,CSDN博客(页面未明示发表日期,据平台元数据最后更新约2025年11月) https://blog.csdn.net/2501_92049521/article/details/154294879
  2. —
  3. —

相关产品:OceanBase、MySQL 相关能力:数据编码 + 两层压缩带来的迁移降本、MySQL / Oracle 双模式兼容 最后核验:2026-10-02

常熟农商行:从2018年试点到两地三中心,交易处理能力提升46倍(2018–2022) 成功经验

两地三中心 容灾 农商行 核心改造
场景
江苏常熟农商行2018年开始引入OceanBase,是较早试水的农商行。当时诉求很实际:传统集中式数据库在数据容量(装不下)和高并发(放不下)上同时见顶,而农商行"开门红"这类营销大促又有明显的脉冲流量。路线是先边缘后核心:业务中台、手机银行、大零售营销等近30个应用系统逐步上线,先跑起来再说。(《中国经营报》2022-08-15报道)
决策
2020年起,该行借助OceanBase做两地三中心改造,把容灾能力从"机房级"提升到"数据中心级"。这是关键一跃:从"用分布式数据库跑业务"到"用分布式数据库做容灾底座",意味着把最核心的可用性命脉交了出去。
结果
据该行金融科技总部科技运营中心负责人唐明向《中国经营报》透露:每秒交易处理能力提升46倍,批量代发处理量每分钟超20万笔,日终批处理缩短到10分钟以内。数字为银行方负责人受访口径、经《中国经营报》报道,无第三方独立复现;46倍的对比基线(相对何种架构)原文未明确,引用时需注意。
机制根因
两地三中心在传统架构下靠存储层复制+应用层切换,RPO/RTO都依赖人工编排,演练一次伤筋动骨。OceanBase的Paxos多副本把"三中心"做成了数据库原生语义:多数派提交即RPO=0,副本自动接管把RTO压到秒级,容灾从"演练项目"变成"日常属性"。46倍TPS提升的另一半来自架构简化:原来"集中式DB+外挂缓存/分片"的链路被单集群替代,省掉了跨系统协调。农商行先边缘后核心的渐进路线,本质是用时间换信任——近30个系统先跑两年,容灾改造才敢动手。
教训
容灾选型先看"容灾是不是数据库的原生语义",外挂式容灾的RTO永远受制于最慢的人工环节;中小银行的稳妥路线是"边缘先行、核心跟进",用两三年生产运行换决策信心;看"提升N倍"类数字先问基线是什么——46倍的含金量取决于分母,选型时盯住"批量代发20万笔/分钟、日终10分钟"这类绝对值工程指标。
来源
  1. 《中国经营报》记者李晖《新技术与金融的双向奔赴》(2022-08-15
  2. 含唐明受访口径的46倍、20万笔/分钟、日终10分钟数字) http://dianzibao.cb.com.cn/images/2022-08/15/09/2468B01C.pdf

相关产品:OceanBase 相关能力:— 最后核验:2026-10-02

GCash:菲律宾最大电子钱包数百库零宕机迁移,存储降70%(2026) 成功经验

出海 零宕机迁移 降本 高并发
场景
GCash是菲律宾最大电子钱包,用户覆盖菲律宾约一半人口。原架构是MySQL集群:连接数有限,高并发时频繁不稳定——电子钱包的脉冲式流量(全民转账/发红包)下,连接池先被打满,接着雪崩。数百个MySQL库还要逐个运维,版本、备份、扩容都是N倍工作量。(新浪财经转述"星海情报局"2026-09报道)
决策
换OceanBase。迁移策略是零宕机无缝迁移:数百个数据库逐个切换,业务无感知。技术负责人John证实,迁移后系统在每秒处理数百万笔交易的同时保持稳定。
结果
存储需求降低约70%,资源成本降低超40%。数百个库完成零宕机迁移。以上数字为媒体转述GCash技术负责人John的口径,无独立第三方复现;迁移耗时、切换窗口细节未披露。
机制根因
MySQL集群的天花板是"连接数×单机写入"的乘积,钱包类脉冲流量的特征是瞬间并发远超均值数十倍,连接池模型在这种方差下最先崩。OceanBase的多租户+分布式架构同时解了两个结:计算上多节点分摊连接与写入,脉冲被摊薄;存储上行列混存编码+两层压缩把约70%存储直接省掉——省存储不只是省钱,更是把"数百个库"的备份、扩容窗口同步缩小。数百库零宕机迁移可行的前提是MySQL协议兼容:应用层连接串几乎不用改,才能一个库一个库地灰度切换。
教训
脉冲型业务选型的第一指标是"方差承载力"而非均值TPS;存储压缩在钱包场景是双重收益——降本+缩短运维窗口;数百库迁移不要追求"大爆炸"切换,协议兼容带来的灰度能力比迁移工具更重要;"零宕机"是结果,手段是"应用不用改+逐个切",选型时就要验证这两条。
来源
  1. 新浪财经转述"星海情报局"《千万东南亚人的日常交易:谁在改写亚太数据库的竞争坐标系?》(2026-09-07
  2. 存储、成本数字均为媒体转述GCash技术负责人John的口径) https://finance.sina.cn/stock/jdts/2026-09-07/detail-iniqymaa6344446.d.html

相关产品:OceanBase、MySQL 相关能力:数据编码 + 两层压缩带来的迁移降本 最后核验:2026-10-02

TNGD:马来西亚最大电子钱包换掉底层数据库,同等硬件吞吐提升40%(2026) 成功经验

出海 高并发 强一致 数字支付
场景
TNGD(Touch 'n Go eWallet)是马来西亚最大电子钱包,2600万用户,承载着马来西亚85%成年人口的日常支付(媒体口径)。导火索是一次全国性刺激计划:数百万用户几乎同时涌入,流量激增、响应变慢,"日常运行良好的架构开始吃力"。技术负责人事后说,那是团队第一次意识到"当前的设计、架构和技术平台远远低于目标预期"。需求很明确:扛住极端峰值的高并发、每笔交易强一致、零宕机。(新浪财经转述"星海情报局"2026-09报道)
决策
摆在桌上的候选包括亚马逊Aurora、谷歌Spanner等"更熟悉"的全球厂商,TNGD最终选了OceanBase。选型逻辑是场景同构:TNGD的问题(极高并发+强一致+零宕机)正是OceanBase在支付宝双十一里打磨了十年的拿手场景。TNGD技术团队事后用"零额外学习成本"形容迁移的顺滑。
结果
同等硬件规格下吞吐提升40%,系统在4万笔/秒压力测试下零宕机升级。TNGD高管Leslie Lip称:"OceanBase不仅仅是一个数据库,而是一个能够随着公司野心一起成长的技术平台。"以上数字与引言均为媒体转述口径,无独立第三方复现;迁移耗时、迁移前后延迟对比等数字未披露。
机制根因
全国性刺激计划是典型的"热点+洪峰"叠加:连接数、热点账户行锁、写放大三重挤压。传统路线要么靠中间件分片(把一致性推给业务层),要么靠单机升配(天花板明显)。OceanBase的分布式多写+Paxos强一致把"峰值吸收"做进内核:多节点分摊写入、多数派提交保证强一致、在线扩缩容应对脉冲。40%提升的另一半来自少了一层中间件——分片逻辑下沉进数据库后,省掉了路由层的网络与协调开销。
教训
选型先找"场景同构"的验证场:TNGD选OceanBase不是看功能列表,而是看双十一这种同构极端场景的十年实战记录;"零额外学习成本"的另一面是团队已有MySQL心智,兼容性把迁移成本压到最低;出海选型里"全球大厂更熟悉"不等于"更合适",峰值形态匹配度才是第一优先级。
来源
  1. 新浪财经转述"星海情报局"《千万东南亚人的日常交易:谁在改写亚太数据库的竞争坐标系?》(2026-09-07
  2. 吞吐、压测数字与高管引言均为媒体转述口径) https://finance.sina.cn/stock/jdts/2026-09-07/detail-iniqymaa6344446.d.html

相关产品:OceanBase、Amazon Aurora、Google Spanner 相关能力:— 最后核验:2026-10-02

Pinterest 的 MySQL 分片:从 NoSQL 废墟退回成熟技术(2012) 成功经验

水平分片 ID 设计 成熟技术 去 NoSQL
场景
2011 年 Pinterest 爆发式增长,基础设施全线过载。团队试了 Cassandra、Membase、MongoDB 等多个 NoSQL,"全部以灾难性方式挂掉"(Marty Weiner 原文);MySQL 读备库则带来成堆的缓存与复制延迟 bug。(Pinterest 工程博客,2015)
决策
退回 MySQL,做应用层分片:8 台 EC2 起步,每台主主复制做热备,生产只读写主库("永远不要在生产环境读写备库");4096 个虚拟分片,配置放 ZooKeeper;64 位 ID 编码分片信息(16 位分片 ID + 10 位类型 + 36 位本地 ID),任何服务解析 ID 即可路由,无需查路由表;对象存 JSON blob,关系用单向映射表,JOIN 搬到应用层。
结果
2012 年初上线,至博客发表时(2015)稳定运行 3.5 年,作者称"可能会永远跑下去";支撑当时 500 亿+ Pin;三年里只做过一次 ALTER。
机制根因
Pinterest 的选择逻辑是"故障模式优先":NoSQL 的故障是"丢数据、脑裂"(不可接受),MySQL 单机故障是"可预测、可修复"(主主切换+备库)。分片把 MySQL 的故障域切小,而 ID 编码分片信息消灭了路由这一单点依赖——这是整个设计最精妙处:路由信息内嵌在数据标识里,分片配置只在扩容时变化。代价是放弃跨分片 JOIN、外键与二级索引一致性,以及分片键一旦选定几乎不可更改(靠"整片搬迁"而非"逐行重分布"来扩容)。
教训
选型时先问"它坏的时候是什么死法",再问"它快不快"。2011 年 NoSQL 的运维成熟度撑不起 Pinterest 的增长,而"无聊但可靠"的 MySQL + 精心设计的 ID,分片后稳定跑了十年。过早追新技术的税,最终都是用数据丢失来交。

相关产品:MySQL 相关能力:— 最后核验:2026-10-01

富友支付:高并发交易上 PolarDB,数据库整体成本大降、性能明显提升 成功经验

支付交易 高并发 成本优化
场景
富友支付是持牌第三方支付机构,高并发交易与海量数据给数据库带来三重压力:性能瓶颈、扩展性差、运维复杂。
决策
做云原生架构升级,引入云原生数据库 PolarDB(MySQL 版)。
结果
官方客户案例口径:数据库整体成本大幅下降,性能明显提升。(阿里云官网产品页客户案例栏,属厂商渠道口径;未披露具体数字与对比基线,引用时须注明。)
机制根因
支付交易是典型的"高并发写入叠加读写混合"负载:PolarDB 存算分离下只读节点可接近线性扩展(取决于复制延迟与读一致性要求),分担查询压力,主节点专注写入;分钟级弹性应对营销活动、节假日的交易洪峰,避免按峰值常年持有资源。
教训
支付机构选型云原生数据库,TCO 核算要把"弹性节省下来的峰值预留"算进去,而不只对比单价;官方案例未给数字时,诚实标注"未披露"比转述模糊表述更有价值。
来源
  1. 阿里云官网 PolarDB 产品页客户案例栏 https://www.aliyun.com/product/polardb

相关产品:PolarDB 相关能力:共享存储一写多读 —— 阿里云版的"日志即数据库" 最后核验:2026-10-02

MiniMax:AI 独角兽用 PolarDB Limitless 扛住 2.36 亿用户的潮汐流量 成功经验

AI 数据底座 弹性扩缩容 成本优化
场景
MiniMax(稀宇科技)是全球领先的 AI 公司,自研全模态大模型,旗下有海螺 AI、星野等产品。星野等 C 端陪伴应用带来海量多模态数据与明显的潮汐流量:高峰期对话写入暴涨、低谷期迅速回落,按峰值常年持有数据库资源的成本极高。
决策
基于阿里云 PolarDB Limitless 构建智能数据底座,承载核心业务数据。
结果
官方客户案例口径:千亿级对话表性能提升 3 倍、秒级弹性扩缩容、存储成本下降 75%,支撑 2.36 亿用户高效服务。(以上数字来自阿里云官网客户案例栏,属厂商渠道口径,未披露测试方法;2.36 亿用户数与 MiniMax 港股公告"截至 2025 年 12 月 31 日累计服务逾 2.36 亿名用户"一致。)
机制根因
Limitless 是 PolarDB 存算分离架构的弹性扩展形态:存储层统一、计算节点可按需秒级扩缩,潮汐流量来时加节点、退潮时释放,成本只为实际使用的算力买单;共享存储也避免了传统分库分表每次扩容都要做的数据重分布。
教训
AI 陪伴/对话类业务的数据库选型,第一优先级不是峰值 TPS,而是"弹性速度 × 成本曲线":写放大严重的对话表叠加潮汐流量,存算分离加秒级弹性的收益远大于单纯堆实例规格;但"性能提升 3 倍"类数字是厂商口径,引用时必须标注来源并说明测试条件缺失。
来源
  1. 阿里云官网 PolarDB 产品页客户案例栏 https://www.aliyun.com/product/polardb
  2. MiniMax 用户规模:港股公告(经 MarsBit 转述)https://www.binance.com/zh-CN/square/post/297186043230833

相关产品:PolarDB 相关能力:共享存储一写多读 —— 阿里云版的"日志即数据库" 最后核验:2026-10-02

欧派家居:从 Oracle 迁到 PolarDB,部分 SQL 比 Oracle 快 3 到 5 倍 成功经验

去 O 迁移 家居零售 成本优化
场景
欧派家居的系统架构对 Oracle 生态高度依赖:存储过程、PL/SQL 写法深入业务代码,Oracle 许可与运维成本随业务扩张不断走高。
决策
上云并迁移到 PolarDB(PostgreSQL 版,高度兼容 Oracle 语法),用其多读架构与云计算算力替换 Oracle。
结果
官方客户案例口径:享受云计算的高效算力,部分 SQL 执行速度比 Oracle 快 3 至 5 倍,整体业务效率大幅提升。(阿里云官网产品页客户案例栏,属厂商渠道口径;"部分 SQL"未说明占比与类型,引用时须注明。)
机制根因
PolarDB-PG 的 Oracle 兼容模式降低了 PL/SQL 改写成本;一写多读架构把原来压在 Oracle 单机上的报表、查询类负载分流到只读节点,主库只跑交易——很多"比 Oracle 快"的案例本质是架构红利,而非单机引擎碾压。
教训
去 O 选型的真实账本有三栏:许可成本、改造成本、架构红利;"部分 SQL 快 3 到 5 倍"这类表述必须追问是哪部分、占比多少,否则无法作为选型依据。
来源
  1. 阿里云官网 PolarDB 产品页客户案例栏 https://www.aliyun.com/product/polardb

相关产品:PolarDB、Oracle Database(甲骨文) 相关能力:— 最后核验:2026-10-02

数云:天猫 CRM 服务商用 PolarDB,把双十一升配从 8 小时压到 20 分钟 成功经验

大促弹性 多租户 SaaS 高并发
场景
杭州数云信息技术有限公司(数云)是面向电商的 CRM SaaS 服务商,多租户部署在公有云上,上百个 PolarDB 实例,单实例数据量 2 到 3TB。双十一期间单集群订单量超 4 亿,数据库要扛住交易洪峰又不能提前数月锁定昂贵规格。
决策
核心业务从传统 MySQL 迁移到 PolarDB,利用其分钟级弹性升配应对大促。
结果
据阿里云官方案例库(2022 年 5 月版,数云自述):传统 MySQL 升配最大实例需要 6 到 8 小时,而 PolarDB 节点升配只需 10 到 20 分钟、增加节点只需 5 到 8 分钟,20 分钟内即可完成 10TB 级数据集群的升配;32 并发以上的 OLTP 写能力达到普通 MySQL 的 2 到 3 倍;单实例最大支持 100TB 存储。(官方渠道口径及客户证言;压测条件未披露。)
机制根因
PolarDB 的计算与存储分离:升配只换计算节点规格,数据不动(不像传统 MySQL 升配要迁移数据文件);只读节点走存储层物理复制,分钟级拉起;大促前一两天做弹性升级、大促后降配,成本只为洪峰那几天买单。
教训
大促型业务选数据库,"升配速度"和"加节点速度"是跟 TPS 同等重要的硬指标:传统方案 6 到 8 小时的升配窗口逼着你提前数月买峰值规格,分钟级弹性把容量规划从"猜峰值"变成"看板调参";客户证言里"双十一前一两天做弹性升级,双十一期间 IOPS 很稳定,连接数只用到当前规格的一半"正是这种工作流的写照。
来源
  1. 阿里云案例库(互联网行业,文档版本 20220513)"数云:PolarDB 助力数云轻松应对双十一" https://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/download%2Fpdf%2F156904%2F%25E4%25BA%2592%25E8%2581%2594%25E7%25BD%2591_cn_zh-CN.pdf

相关产品:PolarDB、MySQL 相关能力:共享存储一写多读 —— 阿里云版的"日志即数据库" 最后核验:2026-10-02

心动网络:爆款手游用 PolarDB,支撑百万级玩家同时在线 成功经验

游戏出海 高并发 高可用
场景
心动网络(中国互联网百强企业,前身为 VeryCD)业务覆盖游戏研发运营与 TapTap 游戏社区全球化运营。游戏出海需要在国内、东南亚、欧美统一部署;活动峰值时需支撑 100 万级玩家同时在线;游戏版本发布、服务端软硬件故障重启时,需要数据库快速恢复读取能力。
决策
采用 PolarDB 云原生数据库方案(一主一读集群)构建全部业务系统。
结果
据阿里云官方案例库(2022 年 5 月版):PolarDB 为千万级用户在线手游保驾护航;所有实例一主一读,性能为 MySQL 的 3 倍;100% 兼容 MySQL 5.6/8.0 及生态工具,业务无缝迁移;主实例故障时 30 到 60 秒内完成切换,数据三副本一致性存储。(官方渠道口径;"3 倍性能"未披露测试条件。)
机制根因
存算分离加一写多读:读流量由只读节点分担,服务端重启后"惊群式"的数据加载被只读节点吸收,主库不被打垮;三副本物理复制保证 RPO 为 0,故障切换只做主备角色切换而非数据重放,所以能压到 30 到 60 秒。
教训
游戏开服、合服、版本发布这类"脉冲式"负载,数据库选型的关键指标是"故障与重启后的恢复速度",而不只是稳态 TPS;MySQL 兼容度决定迁移成本,心动的"无缝迁移"建立在 100% 协议兼容之上,换引擎前先做 SQL 兼容性扫描。
来源
  1. 阿里云案例库(互联网行业,文档版本 20220513)"心动网络:PolarDB 助力心动网络打造爆款手游" https://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/download%2Fpdf%2F156904%2F%25E4%25BA%2592%25E8%2581%2594%25E7%25BD%2591_cn_zh-CN.pdf

相关产品:PolarDB、MySQL 相关能力:共享存储一写多读 —— 阿里云版的"日志即数据库" 最后核验:2026-10-02

小鹏汽车:PolarDB for PostgreSQL 扛起智驾业务每日 TB 级大表更新 成功经验

智能驾驶 大表优化 HTAP
场景
小鹏汽车智能辅助驾驶业务每天产生 TB 级数据:车辆回传的感知、轨迹数据汇入大表,既要支撑每天 7000 万行级别的数据更新,又要做秒级分析查询。社区版 PostgreSQL 在大表上的查询与并发更新慢,成为瓶颈。
决策
采用 PolarDB PostgreSQL 版,用其大表优化与弹性跨机并行查询(ePQ)能力承载智驾数据。
结果
官方客户案例口径:在小鹏智能辅助驾驶业务上实现每日 TB 级大数据表的 7000 万行更新和大数据表秒级分析查询。(阿里云官网产品页客户案例栏,属厂商渠道口径;未披露硬件规格与对比基线。)
机制根因
ePQ 把单机 PG 难以并行的大表扫描与聚合拆到多计算节点并行执行;行列混存与大表优化降低 TB 级宽表的更新与查询代价——同一份数据既做事务更新又做实时分析,是 HTAP 能力的直接体现。
教训
智驾、IoT 这类"每天 TB 级写入叠加即席分析"的负载,选型时要把"大表更新吞吐"和"分析查询延迟"放在同一张表里评估,纯 OLTP 或纯 OLAP 产品都会瘸腿;厂商案例数字缺基线时,只转述、不演绎。
来源
  1. 阿里云官网 PolarDB 产品页客户案例栏 https://www.aliyun.com/product/polardb

相关产品:PolarDB 相关能力:— 最后核验:2026-10-02

韵达快递:客户管家跑在 PolarDB 分布式版上,QPS 峰值近 10 万 成功经验

物流 分布式数据库 高并发
场景
韵达快递的"客户管家"是其核心业务场景之一:快递网点、客户服务的在线业务对数据库的并发与延迟都很敏感,大促期间流量洪峰明显。
决策
把客户管家作为首个核心业务场景,运行在 PolarDB 分布式版上。
结果
官方客户案例口径:自上线以来数据库运行平稳,整体 QPS 峰值接近 10 万,SQL 响应时间稳定在 5 毫秒以内,很好地支撑了整个管家平台的平稳运行。(阿里云官网产品页客户案例栏,属厂商渠道口径;未披露数据规模与节点数。)
机制根因
分布式版通过分片把写入压力打散到多节点,QPS 随节点数近似线性增长(取决于分片键均匀度与跨分片查询比例);SQL 层做分布式优化与路由下推,压住跨分片查询的延迟——这是"接近 10 万 QPS"与"5 毫秒响应"同时成立的前提。
教训
物流、电商这类核心交易链路上分布式数据库,验收指标要同时看吞吐(QPS 峰值)与尾延迟(响应时间),只谈其一都是耍流氓;首个核心业务上分布式版之前,先做分片键设计评审,避免上线后跨分片查询拖垮延迟。
来源
  1. 阿里云官网 PolarDB 产品页客户案例栏 https://www.aliyun.com/product/polardb

相关产品:PolarDB 相关能力:— 最后核验:2026-10-02

Flipkart:信任与安全团队用 Qdrant 把欺诈检出从 9 小时压到 1 分钟 成功经验

实时风控 多模态相似检索 HBase 替代 高维向量
场景
Flipkart 信任与安全团队负责平台反欺诈,需要在客户与商家提交的数据(尤其是图片)上做大规模相似检索,识别重复退货、虚假商家索赔等模式。旧方案是 HBase + 局部敏感哈希(LSH):能跑批处理,但跟不上实时反欺诈节奏——在历史数据里找相似图片最慢要 9 小时;且生产模型的向量维度高达 2048,高维索引压力大。
决策
多个开源向量数据库做 POC 后选 Qdrant:官方 Debian 包契合 Flipkart 内部基础设施(部署灵活性);高效的 HNSW 索引能同时处理读写;支持高维向量。随后建成多租户相似检索服务,覆盖实时图片相似度欺诈检出、非结构化地址聚类(改善最后一公里配送路由)、内部 GenAI 的 RAG 检索层。
结果
从批处理转向实时检索后,欺诈检出时间从 9 小时降到 1 分钟以内(Flipkart 工程师 Sourabh Sarkar 口述,经 Qdrant 官方博客发布,厂商渠道口径);"过去批处理要几小时的事,现在一分钟内搞定——这对在欺诈影响客户之前拦截至关重要"(同上)。团队正把 K8s 部署的 Qdrant 标准化为全公司各团队的 embedding 存储。
机制根因
LSH + HBase 的近似检索是"离线批"的基因,无法满足"写入即查"的实时风控;Qdrant 的 HNSW 支持读写并发,图片上传后立即可被相似检索命中;2048 维高维向量下 HNSW 的内存/索引效率是 POC 胜出的硬指标。多租户服务把一次选型复用到欺诈、地址聚类、RAG 三个场景,摊薄了引入新组件的成本。
教训
风控类场景的选型第一指标是"从事件发生到可检出的时间",不是向量基准的 QPS;高维向量(2000+ 维)一定要在 POC 里用真实模型维度压测,很多库在 768 维的漂亮数字到 2048 维会变脸;能复用到多团队的组件才值得引入——Flipkart 把一次选型做成平台服务,是中小团队也该学的"选型摊销"思路。
来源
  1. Qdrant 官方博客《Building real-time multimodal similarity search in Flipkart Trust & Safety with Qdrant》(厂商渠道口径,具名工程师 Sourabh Sarkar,SDE-III,Trust & Safety at Flipkart) https://qdrant.tech/blog/case-study-flipkart/

相关产品:Qdrant 相关能力:1M–100M 区间的性价比之王——Rust 单机的高 QPS 与低延迟 最后核验:2026-10-02

Garden:专利情报创业公司的 filterable HNSW 选型——语料从 2000 万扩到 2 亿+ 成功经验

可过滤 HNSW 标量量化 两次迁移 成本下降 10 倍
场景
Garden 是纽约专利情报创业公司,用大规模 AI 分析全球专利语料(2 亿+ 专利)加 TB 级真实世界数据。单件专利可达上百页、携带约 2000 个元数据字段(管辖区、授权日、专利族 ID、权利要求依赖等);每件专利切成语义块后产生"数亿"向量。工程需求:向量检索必须支持外科手术级过滤(国家×日期范围×技术标签的任意组合)。
决策
经历了两次迁移。第一版用全托管向量服务:几十 GB 数据每月约 $5000,且没有原生 filterable HNSW,被迫为每个"国家×日期×技术标签"组合建独立索引,还看不到基础设施内部,排障又慢又贵。第二版迁到自托管开源替代:省了钱,但两人团队要自己 on-call、工作时间升级,且过滤能力的老问题还在。看到 Qdrant 的 filterable HNSW 博客后第三次迁移:可过滤 HNSW 是决定因素,Qdrant Cloud 的托管 Rust 底座解决了 24×7 运维;8-bit 标量量化让热向量驻内存、冷向量落盘;周末一次脚本化 ETL 就把 GCS 里的向量灌进 Qdrant Cloud。
结果
可检索专利语料从约 2000 万扩到 2 亿+;管理向量量从千万级到数亿级;典型查询延迟从 250–400ms 降到 p95 <100ms;每 GB 存储成本降约 10 倍;还孵化出全新收入线——高置信度侵权分析产品(客户点一次按钮,几分钟内拿到权利要求图表级分析)。以上数字来自 Qdrant 官方博客整理的 KPI 对照表,厂商渠道口径,引用须注明。
机制根因
没有 filterable HNSW 时,"过滤"只能靠建 N 个预过滤索引实现——组合爆炸是成本与复杂度的根源;in-graph 过滤下推把过滤做进 HNSW 遍历,一份索引服务任意过滤组合,索引数从"组合数"降到 1;标量量化(8-bit)+ 冷热分层让读多、突发的工作负载在有限内存下跑出 <100ms p95。两次失败的迁移恰好证明:托管省心和过滤能力缺一不可。
教训
过滤密集型场景选型,先问"过滤条件有多少种组合"——答案是"很多"时,没有原生 filterable ANN 的库直接出局;小团队别为省托管费自己 on-call,两次迁移的学费证明"源代码透明 + 托管运维"是可以兼得的;周末能完成的迁移(ETL 脚本只改几行)说明 ingestion API 贴近开源惯例是迁移摩擦力的决定因素。
来源
  1. Qdrant 官方博客《How Garden Scaled Patent Intelligence with Qdrant》(厂商渠道口径,含联合创始人 Justin Mack 引言与 KPI 对照表) https://qdrant.tech/blog/case-study-garden-intel/

相关产品:Qdrant 相关能力:过滤 + 混合检索的工程完成度——payload 索引、in-graph 过滤下推、稀疏/稠密 RRF 服务端融合 最后核验:2026-10-02

HubSpot:20 亿+向量的 VaaS 平台,Breeze AI 选型 Qdrant 成功经验

超大规模 向量即服务 多团队平台 自研运维
场景
HubSpot 把 Qdrant 做成内部 Vector-as-a-Service 平台,服务 38+ 团队、200+ 索引、140+ 集群、5 个地域,向量总量超 200 亿,写入峰值 10 万 QPS。驱动场景是旗舰智能助手 Breeze AI:个性化、上下文感知的实时推荐与 RAG,检索速度和准确率直接决定用户参与度;同时数据量与交互量持续快速增长,系统不能随规模退化。
决策
多款向量数据库对比评估后选 Qdrant:检索与排序的性能显著胜出;开发者友好的集成加速了开发节奏;named vectors、多向量检索、稀疏向量、混合检索、多阶段查询与加权 rerank 等能力对长期路线图友好;on-prem 部署满足数据管控要求。运维上从手动 Helm 部署迁移到自研 K8s Operator(滚动升级、自动扩缩、自愈)。
结果
Breeze AI 检索延迟下降、推荐与 RAG 应用满足实时要求;向量检索集成复杂度降低,工程资源释放回模型与体验迭代;平台支撑 AI 交互量持续增长而未出现基础设施瓶颈。HubSpot 技术负责人 Srubin Sethu Madhavan 评价:"我们选择它是因为易于部署和大规模下的高性能,结果一直令人印象深刻"(经 Qdrant 官方博客发布,厂商渠道口径)。
机制根因
单机 Rust 引擎的高 QPS/低延迟是能扛住 10 万写 QPS 的底盘;量化与 on-disk 索引把 200 亿量级的存储成本压到可承受;named vectors + 稀疏向量 + RRF 服务端融合让"推荐+关键词+语义"多路检索一次查询完成,避免多系统拼凑。代价是分布式运维回到自己手里——HubSpot 自研 Operator 本身就是"官方运维工具链没到无脑程度"的证据。
教训
超大规模选型要把"写峰值"和"团队数"写进合同式验收标准,而不仅是读延迟;Qdrant 的分布式是"功能完整、运维自理"——选之前先诚实评估自己有没有平台团队能写 Operator;多租户/多团队平台场景下,named vectors 与多阶段查询这类"一次查询做多件事"的能力,比单纯的向量延迟数字更能决定架构复杂度。
来源
  1. Qdrant 官方博客《HubSpot & Qdrant: Scaling an Intelligent AI Assistant》(厂商渠道口径,含 HubSpot 技术负责人引言) https://qdrant.tech/blog/case-study-hubspot/
  2. 规模数字(200 亿向量、38+ 团队、140+ 集群、自研 Operator)来自 HubSpot 工程师在 Vector Space Day SF 2026(2026-06-11)的公开演讲《Building the Infra Behind 20 Billion+ Vectors》,经独立媒体报道整理 https://www.snappr.com/news/story/qdrant-vector-space-day-sf-2026

相关产品:Qdrant 相关能力:1M–100M 区间的性价比之王——Rust 单机的高 QPS 与低延迟、分布式 HA 与索引单一性——"单机之王"的天花板,以及 hybrid 的三个生产坑 最后核验:2026-10-02

Lyzr:Agent 平台从 Weaviate/Pinecone 迁 Qdrant,查询延迟降 90%+ 成功经验

Agent 基础设施 Weaviate 替代 高并发检索 成本下降
场景
Lyzr Agent Studio 是 AI Agent 平台,部署了 100+ 跨行业 Agent。早期栈用 Weaviate(另对 Pinecone 做基准):1500 条向量、10–20 个知识检索 Agent、每 Agent 每分钟 5–10 查询时一切正常(延迟 80–150ms)。知识库超过 2500 条、Agent 并发超过 100 后系统开始吃力:查询延迟涨近 4 倍到 300–500ms,高峰期 Agent 等待向量结果超时、下游决策逻辑受影响;索引操作变慢,吃 CPU 和内存,数据更新出现瓶颈。
决策
按可扩展性、索引性能、查询延迟/吞吐、一致性、资源效率、真实负载基准六个维度评估替代方案,选 Qdrant:HNSW 索引支持在线更新无需停机重建;高并发下延迟稳定。
结果
查询延迟降到 20–50ms(P99),比 Weaviate/Pinecone 好 90% 以上;每分钟 1000+ 查询、100+ 并发 Agent 下性能稳定,峰值吞吐超 250 QPS;大数据集 ingestion 快 2 倍;基础设施成本降约 30%。以上数字来自 Qdrant 官方博客整理的三方对比表(Weaviate 300–500ms / Pinecone 250–450ms / Qdrant 20–50ms P99;索引 3h / 2.5h / 1.5h;吞吐 ~80 / ~100 / >250 QPS),厂商渠道口径,引用须注明。同文还收录两个下游部署:NTT Data 把 IT 变更请求的 Agent 从 Azure Cosmos DB 迁到 Qdrant 后长尾查询准确率明显提升;NPD 在 6 个网站的客服 Agent 消除了之前方案的延迟尖峰。
机制根因
Agent 是"检索循环" workload——一次任务触发多次检索,单次检索慢 300ms 会被循环放大成秒级;Weaviate/Pinecone 在高并发下延迟退化,本质是索引与查询争资源,而 Qdrant 的 Rust 单二进制 + 可调 HNSW 参数在同样硬件下留出更多余量。选型教训的普适点:demo 规模(1500 条向量)下"都够用"的结论,到生产并发下会系统性失效——基准必须按生产并发打。
教训
Agent 场景的向量选型,第一指标是"高并发下的 P99 延迟"而不是"单查询延迟";demo 数据量下的基准没有决策价值,压测要按生产并发(Lyzr 是 100+ 并发 Agent、1000+ QPM)来;检索是 Agent 的内循环——"AI 太慢"的用户投诉,根因经常是向量库不在 LLM;从 Cosmos DB 这类通用库迁过来的案例说明:向量检索作为独立组件选型的时代已经到了。
来源
  1. Qdrant 官方博客《How Lyzr Supercharged AI Agent Performance with Qdrant》(厂商渠道口径,含三方对比基准表与 NTT Data、NPD 下游案例) https://qdrant.tech/blog/case-study-lyzr/

相关产品:Qdrant、Weaviate 相关能力:1M–100M 区间的性价比之王——Rust 单机的高 QPS 与低延迟 最后核验:2026-10-02

Mixpeek:MongoDB kNN 做多模态特征库扛不住,迁 Qdrant 检索快 40% 成功经验

MongoDB 替代 多模态特征库 混合检索 RRF 原生 多向量
场景
Mixpeek 是多模态数据处理与检索平台(视频、图像、音频、文本),创始人 Ethan Steininger 是前 MongoDB 搜索专家。特征库(feature store)需要支撑越来越复杂的检索模式:稠密+稀疏向量混合检索带元数据预过滤。MongoDB Atlas 的向量搜索在两处掉链子:做视频 embedding 的 ColBERT 式 late interaction 需要多向量索引,MongoDB kNN 支持不了;客户要做程序化广告投放的反向视频搜索,在海量对象集合里找高转化视频片段,MongoDB 的通用特征库效率低下。
决策
评估了 Postgres + pgvector、MongoDB kNN 等选项后选 Qdrant 做特征库:向量检索专精 + 与检索管线集成顺滑;原生多向量索引是实现 ColBERT 式 late interaction 的前提;原生 RRF(Reciprocal Rank Fusion)把混合检索的合并逻辑收进服务端。
结果
混合检索代码量减少 80%("原来维护复杂自定义逻辑合并多个特征库的结果,Qdrant 的 RRF 让混合检索器的实现简化了 80%"——创始人原话,经 Qdrant 官方博客发布,厂商渠道口径);十亿级特征集合上 prefetch 并行检索让查询时间从约 2.5s 降到 1.3–1.6s(快 40%);SageMaker 做特征提取时,数据库查询曾是显著瓶颈,迁后查询开销降 50%,ingestion 管线被捋顺。
机制根因
通用数据库的向量搜索是"附加功能",多向量、稀疏向量、服务端融合这类检索原语不在其设计中心——MongoDB kNN 撑不起 late interaction 是架构性差距;Qdrant 把 RRF、prefetch、named vectors 做成一等公民,混合检索从"应用层拼胶水"变成"一次查询声明意图";前 MongoDB 搜索专家亲手把自家老东家的方案换掉,是"专精打败通用"在这个场景最有分量的背书。
教训
多模态/混合检索场景选型,先列出"必须原生的检索原语清单"(多向量?稀疏?服务端融合?预过滤?),通用库的向量功能是"能跑",不是"好用";代码量减少 80% 这类指标比 QPS 更能说明"专精"的价值——它直接等于工程师时间;特征提取(SageMaker)与特征检索的瓶颈要分开看,数据库只能解决后者,别指望换库解决 embedding 推理慢。
来源
  1. Qdrant 官方博客《How Mixpeek Uses Qdrant for Efficient Multimodal Feature Stores》(厂商渠道口径,含创始人 Ethan Steininger 引言) https://qdrant.tech/blog/case-study-mixpeek/

相关产品:Qdrant、MongoDB、PostgreSQL(社区版) 相关能力:过滤 + 混合检索的工程完成度——payload 索引、in-graph 过滤下推、稀疏/稠密 RRF 服务端融合 最后核验:2026-10-02

OpenTable:Concierge AI 点餐助手的稀疏向量 + 重度过滤选型 成功经验

稀疏向量 元数据过滤 RAG 准确性 托管省心
场景
OpenTable 构建 AI 餐饮助手 Concierge,用自然语言回答餐厅相关问题。业务优先级明确:第一是"可答率"(绝大多数问题都能答),第二是准确性(错的菜单信息会同时伤害用户与餐厅信任)。检索层需求苛刻:需要稀疏向量做关键词扩展 + 细粒度过滤;查询经常要从 6 万多家餐厅中精确定位到"一家",集合实际是稀疏的,对过滤性能要求极高。
决策
选型 Qdrant,三个理由直接对应业务优先级:稀疏向量处理是关键差异点(许多向量库在这种"集合极度稀疏"条件下 HNSW 图质量退化,Qdrant 的优化避免了性能跌落);高精度过滤性能可预测,满足延迟预算;Qdrant Cloud 让部署比自托管简单("创建 Qdrant Cloud 集群是这个项目里最容易的部分之一,它就是能用"——OpenTable 团队原话,经官方博客发布,厂商渠道口径)。
结果
Concierge 按期上线并全球发布,达成延迟目标且保持高可答率,上线后几乎无需调优;运营上 Qdrant 成为栈里最稳定的组件之一("自从投产以来,它是栈里无摩擦的一部分"——团队原话,同上厂商渠道口径)。
机制根因
重过滤场景下 HNSW 遍历若图质量差,过滤下推的剪枝效率会崩——Qdrant 在稀疏集合下保持图质量是选型成立的工程前提;稀疏向量(关键词扩展)与稠密向量同库混合,避免了"关键词一路、语义一路"的双系统拼凑;托管化把向量层的运维成本压到零,团队把精力留给了模型与体验迭代。
教训
选型时先把"过滤选择性"摆到台面上——能过滤到单餐厅的场景里,过滤性能才是第一指标,单纯的向量延迟基准会误导;稀疏向量不是"锦上添花",在关键词确定性要求高的场景(菜单、菜名)它是准确性底线;小团队做 AI 功能时,把向量层交给托管服务换取迭代速度是划算的买卖。
来源
  1. Qdrant 官方博客《How OpenTable Reinvented Restaurant Discovery with Qdrant》(厂商渠道口径,含 OpenTable 团队引言) https://qdrant.tech/blog/case-study-opentable/

相关产品:Qdrant 相关能力:过滤 + 混合检索的工程完成度——payload 索引、in-graph 过滤下推、稀疏/稠密 RRF 服务端融合 最后核验:2026-10-02

TripAdvisor:十亿级评论多模态数据激活,AI 行程规划带来 2–3 倍收入提升 成功经验

生成式 AI 行程规划 用户图谱 多模态检索 收入挂钩
场景
TripAdvisor 是全球最大旅行指南平台,每月数亿活跃用户、1100 万商户、超 10 亿条用户评论与贡献(其中包含数亿张图片),另有酒店、餐厅、体验等多年的行为数据。数据资产长期处于"沉睡"状态,尤其非结构化内容没有被激活。数据与 AI 负责人 Rahul Todkar(曾负责 LinkedIn 的数据与向量系统)上任后推动转型:把散落的评论、图片、行为数据统一成向量可检索的用户图谱(user graph),让行程规划、推荐、搜索都跑在向量检索之上。
决策
选择 Qdrant 作为向量数据库底座;用向量构建多维用户图谱(酒店偏好、餐饮选择、旅行风格、用户行为统一表征);上线生成式 AI 产品 Trip Planner(对话式行程规划),并把向量检索扩展到搜索重构(从"过滤器+标签页"转向对话式双向搜索)。
结果
使用 Trip Planner 的旅行者带来的收入是传统界面的 2–3 倍(TripAdvisor 公司口径,经 Qdrant 官方博客发布,属厂商渠道口径,引用须注明;收入对比口径为"使用生成式 AI 体验的用户 vs 未使用的用户",非严格 A/B 实验,解读时需留有余地)。
机制根因
超 10 亿多模态条目的统一向量表征,把原来分散在各业务线的偏好信号变成可查询的用户图谱;向量检索天然适合"模糊偏好 + 上下文"的对话式查询,而传统倒排/过滤器系统做不到语义泛化。收入提升的本质不是检索变快了,而是原来沉睡的数据资产第一次被用于影响购买决策。
教训
向量数据库的 ROI 故事不止于"延迟降低",能把数据资产变成收入杠杆的选型论证更容易通过;先有一个能产生业务数字的旗舰场景(Trip Planner),再扩展到全站搜索改造,是大平台落地的稳妥顺序;收入倍数类指标一定要注明统计口径(使用人群 vs 未使用人群存在自选择偏差)。
来源
  1. Qdrant 官方博客《How Tripadvisor Drives 2 to 3x More Revenue with Qdrant-Powered AI》(厂商渠道口径,含 TripAdvisor 数据与 AI 负责人 Rahul Todkar 引言) https://qdrant.tech/blog/case-study-tripadvisor/

相关产品:Qdrant 相关能力:— 最后核验:2026-10-02

leboncoin:100+ ElastiCache 实例平迁 Valkey——许可证倒逼的零代码改动迁移 (2026) 成功经验

Valkey 迁移 许可证合规 零停机 基础设施即代码
场景
分类广告平台 leboncoin 的存储团队(Staff 工程师 Flavio Gurgel、Jonathan Lubin、Naeva Mallet)管理着 100 多个 Amazon ElastiCache 实例,内存里近 10 亿个 key,个别集群达 500GiB。2024 年 3 月 Redis 改许可证(RSALv2/SSPL)后,继续守旧版本意味着两头风险:AWS 对旧引擎版本的 Extended Support 额外费用,以及"跑在没人维护的分支上"。
决策
迁到 Valkey:Linux 基金会项目、BSD 3-Clause、RESP 协议兼容。迁移前全量实例已经跑在 Redis 7.2.4——正好是 Valkey 的分叉基线,于是策略定为"基础设施层的事,不碰业务代码":用 AWS 官方提供的 Redis→Valkey 迁移机制,先在预生产环境验证流程(含 TLS 证书链检查),再按每批 5 个实例分波 rollout;每个实例"迁移 + Terraform 状态更新"约 20 分钟,可并行。
结果
历时数月完成 100+ 实例迁移,业务代码零改动、客户端库零更换、应用团队几乎无感。唯一的事故是一次漏掉的 Terraform apply,导致单个非关键微服务短暂配置丢失——作者明确指出这是迁移流程失误,与 Valkey 本身无关;迁移后未观察到兼容性、稳定性或性能问题。
机制根因
能"零改动"的前提是三层对齐:协议层(RESP 没变)、数据格式层(RDB 兼容)、版本层(7.2.4 正好是分叉点,无需跨版本升级)。AWS 的迁移机制本质是"换引擎不断连接":过程中可能有短暂连接抖动,但 Redis 客户端自带重连,所以无感。真正的风险不在 Valkey 而在周边:TLS 证书链、IaC 状态漂移——而唯一的事故也恰恰出在 IaC 这边,印证了风险判断。
教训
许可证是架构决策的一部分:选型时把"协议开源且可分叉"计入 TCO,SSPL 这类变更的成本最终由用户承担;大舰队迁移的关键是"分叉基线对齐版本"——先把全量实例升到 7.2.4 再迁,比直接跨版本跳省掉一整类问题;IaC 状态与真实 infra 的双写必须原子化,漏一次 apply 就够喝一壶,checklist 要写在流程里而不是记在脑子里。
来源
  1. leboncoin 技术博客《Redis to Valkey migration on AWS: How we migrated more than 100 ElastiCache instances without changing our microservices》(2026-06,作者 Flavio Gurgel,含实例规模、分波策略与唯一事故复盘) https://medium.com/leboncoin-tech-blog/redis-to-valkey-migration-on-aws-how-we-migrated-more-than-100-elasticache-instances-without-a3fd63274c3b
  2. —

相关产品:Redis / Valkey 相关能力:Redis 换协议 → Valkey 分支:许可证事件重塑选型 最后核验:2026-10-02

Redis 许可证事件:一次"防云厂商"的决策,8 天逼出 Valkey 分叉 (2024) 失败教训

开源许可证 社区分叉 SSPL 厂商治理
场景
2024 年 3 月 20 日,Redis 公司宣布:从 7.4 起,Redis 采用 RSALv2 + SSPLv1 双许可证,不再使用 BSD 3-Clause。官方理由:云厂商把 Redis 的开源投入"商品化"、只赚钱不回馈。但 SSPL 要求"提供托管服务就必须开源全部管理代码",OSI 明确不承认它是开源许可证——"source available"不等于 open source。15 年来 Redis 生态恰恰建立在"BSD + 云厂商深度集成"之上。
决策
Redis 公司的算盘是"逼云厂商签商业协议"。但它误判了筹码:AWS、Google Cloud 既是最大的分发渠道,也是核心贡献者——当时的 Redis 核心维护者 Madelyn Olson 就是 AWS 工程师。许可证变更 8 天后(2024 年 3 月 28 日),Linux 基金会宣布成立 Valkey:从 Redis 7.2.4(最后一个 BSD 版本)分叉,BSD 3-Clause 不变;创始支持者包括 AWS、Google Cloud、Oracle、Ericsson、Snap,技术领导委员会由多位前 Redis 贡献者组成。
结果
社区分裂几乎是即时的:核心贡献者出走 Valkey,AWS、Google Cloud 等把托管服务转向 Valkey(Linux 基金会 2024 年 3 月声明的支持者名单;leboncoin 迁移时 AWS 已提供官方 Redis→Valkey 迁移机制)。Redis 公司被迫回头:Redis 8 发布时改用 AGPL 许可证回归开源,CEO Rowan Trollope 公开承认"这次变更伤害了我们和社区的关系"("SSPL is not truly open source")。
机制根因
这是"平台型开源"的经典困境:Redis 的价值一半在代码,一半在"所有人都默认它在"的生态位——客户端、教程、云集成、运维知识。改许可证打击的正是后者,而后者恰恰是云厂商和贡献者共建的。当"默认选项"可以被 8 天分叉带走,说明护城河从来不是代码,而是社区共识。Redis 赌的是"云厂商离不开 Redis",现实是云厂商离不开的是"RESP 协议的生态",不是"Redis 这家公司"。
教训
选型时把许可证当作架构属性:BSD/Apache 项目的"可分叉性"本身就是一种保险,SSPL/RSAL 类项目要预先评估"如果社区分叉,你跟哪边";厂商的"防云"叙事和用户的"防锁定"叙事是零和的,站队前先看贡献者名单——当核心维护者都在云厂商一边时,许可证变更就是在和自己的生态开战。许可证不是法务部的事,是架构师的事。
来源
  1. InfoWorld《Redis moves to source-available licenses》(2024-03,报道 Redis 公司 3 月 20 日声明:7.4 起 RSALv2+SSPLv1、弃用 BSD) https://www.infoworld.com/article/2336574/redis-moves-to-source-available-licenses.html
  2. Linux 基金会《Linux Foundation Launches Open Source Valkey Community》(2024-03-28,从 Redis 7.2.4 分叉、BSD 3-Clause、AWS/Google Cloud/Oracle/Ericsson/Snap 支持) https://www.linuxfoundation.org/press/linux-foundation-launches-open-source-valkey-community
  3. Forkable《Redis returns to open source》(Redis 8 转 AGPL、CEO 承认伤害社区关系) https://www.forkable.io/p/redis-returns-to-open-source
  4. —
  5. —
  6. —

相关产品:Redis / Valkey 相关能力:Redis 换协议 → Valkey 分支:许可证事件重塑选型 最后核验:2026-10-02

Netflix:Dynomite——给 Redis 套上 Dynamo 的多数据中心外壳 (2013–2014) 成功经验

多数据中心复制 高可用 Dynamo 架构 协议兼容
场景
2013 年的 Netflix 全站跑在 AWS 上:Redis/Memcached 都是单机架构,常规主从复制扛不住它的流量规模、也跨不了地域,而 Netflix 要的是"任意节点可写、多数据中心互备"。官方集群方案同样缺位(2015 年才来),在 Netflix 的微服务规模下让每个客户端自己分片不可维护。Dynomite 仓库 2013-10-10 建仓,2014 年 11 月 4 日正式开源(Apache 2.0)。
决策
给每个 Redis/Memcached 实例旁挂一个"dynamo 层"协进程,组成 datacenter/rack/token 拓扑;借 Amazon Dynamo 论文的思路(token 环、quorum、gossip 式节点通信)给单机存储补上跨 DC 复制和高可用。README 原话:"The ultimate goal with Dynomite is to be able to implement high availability and cross-datacenter replication on storage engines that do not inherently provide that functionality." 它讲各存储引擎的原生协议,现有工具链不用换。
结果
支撑了 Netflix 当年跨地域的 KV 需求;配套的 Dyno 客户端处理故障转移(可切到远端 rack/DC),dynomite-manager 做集群管理。代价是运维复杂度:部分 Redis 命令不支持、单节点只持有一个 token(无 vnode),本质是"用一套分布式系统的复杂度换 Redis 的简单"。SiliconANGLE 当时的报道点出了动因:流量太大用不了常规主从,而大规模分片"极其复杂"。
机制根因
Redis 的复制是"主从星型",写只能打到主;Dynomite 把每个节点变成对等节点,写可以打到任意节点,由持有该 token 的节点落本地 Redis、再异步复制到其他 rack/DC。故障时客户端切到远端副本。这是对 CAP 的显式选择:跨 DC 异步复制等于接受最终一致性,换来"地域级灾难也不停写"——这正是云上多活业务要的语义。
教训
给单机存储"套壳"做分布式是可行的,但壳的复杂度会反噬:命令兼容性、拓扑管理、客户端配合缺一不可,三个里面任何一个跟不上,壳就比裸 Redis 更难运维。今天回看,Redis Cluster 和云托管吃掉了这类中间层的生存空间——选型时要问:"这个壳解决的痛,官方方案或云服务是不是已经解决了?"如果答案是 yes,就不要再造一层。
来源
  1. Netflix Dynomite 官方 README(github.com/Netflix/dynomite,datacenter/rack/token 拓扑与设计目标) https://github.com/Netflix/dynomite
  2. SiliconANGLE《Netflix open-sources database cloudification engine》(2014-11-04,开源动因与跨 DC 故障转移) https://siliconangle.com/2014/11/04/netflix-open-sources-database-cloudification-engine-in-latest-community-pivot/
  3. —
  4. —

相关产品:Redis / Valkey 相关能力:— 最后核验:2026-10-02

Stack Overflow:两台 Redis 扛起全网问答缓存——L1/L2 分层与"简单到不用操心" (2016–2019) 成功经验

缓存分层 共享缓存 发布订阅 简单架构
场景
Stack Overflow 全网问答跑在极小的自建机房里。2019 年 Nick Craver 公开的数字:全站每天 3.08 亿次 HTTP 命中;Redis 层每天处理 15.9 亿条命令、峰值 8.7 万/秒、1.24 亿个活跃 key,但服务器平均 CPU 占用只有 2.01%(最忙的实例不到 1%),256GB 内存用了不到 96GB。2016 年的架构帖是更早的口径:每月约 1600 亿次操作,每个实例 CPU 不到 2%。"远没到 Redis 的极限"——这是 Nick 的原话。
决策
架构坚持"本机内存 L1 + Redis 共享 L2"两层:miss 逐层下钻,回填时两层都写。多租户按站点拆 key 空间(全局缓存用 Redis db0,站点缓存按 Sites 表 ID 分 db),值用 protobuf-net 二进制序列化。Redis 的 pub/sub 另作两用:一个 Web 节点删缓存时广播清掉其他节点的 L1;以及 websocket 实时推送(通知、票数、新回答)。
结果
这套架构从 2016 沿用到 2019 几乎没变,Nick 的原话是"它是那种我们根本不用操心的 infra"(It's a piece of infrastructure we just don't worry about),同时保持主从 HA。2019 年他还做了"反缓存"实验:把问题页侧边栏缓存去掉、直接查 SQL,性能几乎无差别——用来论证"只在需要时才缓存"的纪律。
机制根因
Redis 在这里赢的不是功能多,而是延迟数量级:同机房网络往返 0.17ms,小对象一次取回 0.2–0.5ms——比本地 RAM 慢数千倍,但比回源 SQL 快约一个数量级(该配置下的实测对比:回源 SQL 为毫秒量级,非 Redis 的通用加速比),恰好卡在 L1 和源之间的甜点位。L1 解决"同一台机器重复命中",L2 解决"请求被 LB 打到不同机器";pub/sub 复用同一套连接做失效广播,省掉了一套消息系统。
教训
缓存选型先算延迟账再看功能:先确认 Redis 处在"L1 与源之间"的中间层定位,再决定缓存什么;多租户 key 空间隔离(db/前缀)上线第一天就要做对,事后改 key 命名等于迁库;"不用操心"本身是架构指标——Nick 把"我们维护着最流行的 .NET 客户端 StackExchange.Redis,有问题自己能修"列为选型理由,可观测性和可修复性比 benchmark 数字重要。
来源
  1. Nick Craver《Stack Overflow: How We Do App Caching - 2019 Edition》(2019-08-06,含 15.9 亿命令/天、2.01% CPU 等数字) https://nickcraver.com/blog/2019/08/06/stack-overflow-how-we-do-app-caching/
  2. Nick Craver《Stack Overflow: The Architecture - 2016 Edition》(2016-02-17,L1/L2 缓存与 pub/sub 机制) http://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/
  3. —
  4. —

相关产品:Redis / Valkey、Microsoft SQL Server 相关能力:— 最后核验:2026-10-02

Twitter:Twemproxy——Redis Cluster 到来之前的代理分片答案 (2012) 成功经验

代理分片 一致性哈希 连接收敛 开源
场景
2012 年的 Twitter:Redis/Memcached 都是单实例架构,业务增长后一台实例装不下、客户端连接数爆炸。当时 Redis 官方集群方案要到 2015 年 4 月 1 日随 3.0 发布 stable 才可用,应用层直连多实例则要求每个业务自己实现分片逻辑。Twitter 把内部用的分片代理开源为 twemproxy(nutcracker,2012-02-22 建仓,Apache 2.0)。
决策
在客户端和 Redis 之间加一层无状态代理:ketama 一致性哈希自动分片、协议流水线、后端长连接复用(把成千上万的客户端连接收敛成每实例 1 个),YAML 配置 server pool,支持 auto_eject_hosts 踢掉故障节点。README 原话:"built primarily to reduce the number of connections to the caching servers on the backend... pipelining and sharding enables you to horizontally scale your distributed caching architecture."
结果
成为 2010 年代上半期 Redis 横向扩展的事实标准方案之一,README 的生产用户名单包括 Twitter、Pinterest、Snapchat、Tumblr、Twitch、Uber、Wikimedia、Yahoo! 等;GitHub 获 1.2 万 star、2000+ fork。代价同样写在文档里:跨分片多 key 操作不支持,代理本身不做故障转移(只做剔除,failover 靠 smitty/Beholder/twemsentinel 等外部工具)。
机制根因
单线程 Redis 的扩展只能靠"多实例",而多实例的难题是"谁来决定 key 去哪"。twemproxy 把"路由"从每个客户端收敛到代理层:客户端只连代理,哈希环变更只改代理配置;零拷贝 mbuf 转发(16KB chunk 复用池)让代理本身不成为瓶颈——README 明确写道,pipelining 让它"即使多了一跳,吞吐反而更高"。本质是"用一层无状态计算换掉 N 个客户端里的分片逻辑",和后来 Redis Cluster 的"智能客户端 + gossip"走了相反的路。
教训
官方方案缺位时,代理层是最省事的横向扩展位:无状态、可独立扩缩、不碰客户端。但代理分片把"拓扑感知"藏起来了——扩缩容要改哈希环、故障时只是剔除不转移,运维必须理解这层语义,不能把它当成"透明的 Redis"。今天的对照是:要么接受 Redis Cluster 的客户端复杂度,要么用云托管把这层彻底省掉。
来源
  1. Twitter twemproxy 官方 README(github.com/twitter/twemproxy,含设计目标、生产用户名单、pipelining 说明) https://github.com/twitter/twemproxy
  2. Dotdeb《Redis 3.0.0》(Redis Cluster 随 3.0 于 2015-04-01 发布 stable) https://www.dotdeb.org/2015/04/07/redis-3-0-0/
  3. —

相关产品:Redis / Valkey 相关能力:— 最后核验:2026-10-02

Bonnier News:嫌 Redshift 又慢又难管,连 Elasticsearch 一起关掉 all-in BigQuery(2019–2020) 失败教训

新闻媒体 Redshift 迁出 实时看板 WLM 运维 BigQuery
场景
Bonnier News(瑞典媒体集团,Per Näslund,Bonnier News Tech,2020-01-07 复盘)。当时用 Redshift 做分析,另有一个"过时的"Elasticsearch 集群扛实时看板和监控。想换的理由很直接:Redshift sluggish(慢),WLM 的管理工作是想甩掉的负担;编辑部依赖的实时看板 Redshift 做不了,被迫另维护一套 ES,整套架构"不必要地复杂"。
决策
先定需求:实时读写、查询快、不用管索引、一个查询不拖慢其他查询、闲置时便宜、成本可预测、SQL 接口。候选:Athena(很快排除——更像 S3 上的即席查询工具,不算完整数仓)、BigQuery、Snowflake。实测:约 400 行/秒流式写入,BigQuery 4 秒可查,Snowflake 约 1 分钟;流式成本(每天约 10GB):BigQuery $0.5/天,Snowflake $3.5/天(Snowpipe)+$15/天(每 30 秒触发一次 ALTER PIPE REFRESH 的 XSMALL 集群);存储:Snowflake $23/TB/月,BigQuery 估算 $15/TB/月。2019 年 9 月初拍板 BigQuery——性能和成本对比"并不一边倒",IAM 和"分析师本来就在用 BigQuery"才是决定性因素;2020 年初目标下线 Redshift 和 Elasticsearch。
结果
关掉一批数据库和系统后"省了大笔成本"(具体数字未披露);分析师"这些天看起来开心多了",全公司数据终于可以去一个地方查。
机制根因
Redshift 的批处理基因(WLM 队列、微批加载)与"新闻编辑部实时看板"的秒级需求天然错位;为补实时能力叠一个 ES,是"用第二个系统的运维复杂度为第一个系统的架构短板买单"。BigQuery 赢在 serverless 的"闲置零成本 + 流式原生",而 Snowflake 当时的流式要靠 Snowpipe + 定时刷新的拼凑方案——这次选型的本质是"为实时需求选流式原生架构",不是"谁的查询跑得更快"。作者也诚实标注了测算缺陷:成本对比只用了 Snowflake medium 集群,small 集群"可能价格接近,但无法确定"。
教训
当数仓满足不了实时需求时,叠第二个系统(ES 等)是常见但昂贵的补丁,先算清双系统运维总账再动手;流式场景下"数据多久可查"比"查询跑多快"更决定选型;WLM 这种"手动调优旋钮"在团队小、需求杂时是净负担——"不用管"本身就是一种功能。与 Faire、Robin 的 Snowflake 路线不同,Bonnier 证明了迁出潮里还有第三条路:需求里"实时"权重足够高时,serverless + 流式原生会压倒一切。
来源
  1. Per Näslund(Bonnier News Tech)《Why We Picked Google BigQuery over Snowflake as Our New Data Warehouse Solution》(2020-01-07,第一手选型实测:流式速度、成本对比与决策过程) https://medium.com/bonniernewstech/why-we-picked-google-bigquery-over-snowflake-as-our-new-data-warehouse-solution-dddf7a441d5f
  2. —

相关产品:Amazon Redshift、Google BigQuery 相关能力:迁移潮:"反例价值"本身 最后核验:2026-10-02

FanDuel:DC2→RA3→数据共享→Serverless,三次迭代喂饱三倍增长(2018–2023) 成功经验

体育博彩 数据平台 RA3 存算分离 数据共享 Redshift Serverless
场景
FanDuel(Flutter Entertainment 旗下,做体育博彩、每日梦幻体育、赛马和在线赌场)各产品线自建的本地数仓逐渐过时,数据团队建了新的 Global Data Platform,以 Amazon Redshift 为唯一可信数据源,支撑风控、盈利、交叉销售等全局分析。首个 Redshift 集群 2018 年上线,用的是 DC2 计算型节点。到 2021 年,负载几乎是 2018 年的三倍,团队靠"不停加节点 + 反复调 WLM"续命,但用户争用越来越严重,加节点已不是办法。
决策
分三步演进。2021 年评估 RA3 对 DC2,确认性能相当后上线 RA3 集群,核心目标是存算分离、存储计算独立扩展;2022 年转向数据共享架构:生产者集群专做 ELT,消费者集群隔离分析负载——先给做 dbt 迁移的数据工程师开 dev/test 消费者(可读生产数据做模型验证而不影响生产),2022 年春开出第一个生产消费者、同年夏开出第二个,把重分析负载搬离主集群;2022–2023 年上线体育博彩事件流微批(micro-batch)入仓,并把最难预测的风控与交易(risk and trading)负载迁到 Redshift Serverless(自动 WLM、只按查询计费),高峰期 Serverless 端点可直接读写 provisioned 集群。
结果
关键业务 SLA 快了 3 倍;全负载平均查询效率提升 55%(内部 KPI"Query Efficiency"衡量用户等待查询的时间);博客原文称业务成本总体节省达十倍("tenfold",具体基线与计算口径未披露)。拆分负载后查询并发翻倍、排队减少;C-suite 营收报表的 SLA 大幅提前,在超级碗之前就已达成——此前从未做到。
机制根因
三次迭代解决的是三个不同的问题,顺序不能错:RA3 解决"为存数据买计算"(存储增长问题);数据共享解决"多类负载抢同一集群"(争用域切分),让 WLM 配置可以按负载定制而不是一锅烩;Serverless 解决"风控交易负载波动不可预测"(弹性问题)。单集群模型下,一个坏查询的代价由全公司分摊;把争用域逐层切小后,"查询为什么慢"从玄学变成可归因。事件流微批则把"日报 T+1"变成了"准实时",这是批处理架构天然给不了的。
教训
单集群扛多类负载时,先切分争用域再谈调优;RA3、数据共享、Serverless 各自回答一个问题,不要指望一次架构升级全解决;给每一类负载找到"最便宜且够用"的计算形态(稳定 ELT 用 provisioned、波动分析用 Serverless),比"一个大集群打天下"更省;用业务指标(SLA、Query Efficiency)而不是集群 CPU 来验收数仓改造。
来源
  1. AWS Big Data Blog《How FanDuel adopted a modern Amazon Redshift architecture to serve critical business workloads》(2023-11-22,与 FanDuel 首席数据架构师 Sreenivasa Mungala、Matt Grimm 合写,DC2→RA3→数据共享→Serverless 全过程) https://aws.amazon.com/blogs/big-data/how-fanduel-adopted-a-modern-amazon-redshift-architecture-to-serve-critical-business-workloads/
  2. —

相关产品:Amazon Redshift 相关能力:— 最后核验:2026-10-02

McDonald's:从 Teradata 迁到 Redshift,十大市场日报从 3 小时压到 9 秒 成功经验

餐饮零售 Teradata 迁移 每日经营报表 云数仓
场景
McDonald's 在 65 个市场经营数千家餐厅,需要跑每日高管报表、周趋势报告,还要回答菜单与促销、厨房设计、供应链等复杂业务问题。数据量与数据类型持续增长,遗留 Teradata 数仓的扩展与成本跟不上节奏,公司决定迁往云数仓,并要求迁移后仍是"唯一可信数据源"。
决策
在数据咨询商 Wavicle 主导下,把数仓从 Teradata 迁到 Amazon Redshift,用 Talend 做数据集成、Tableau 做可视化。Redshift 承载每日/每周趋势报告与更复杂的分析,覆盖数千家餐厅的经营数据。
结果
十大市场的每日报表从 3–4 小时压到 9 秒;test-to-market(新品上市测试)项目的数据分析效率提升 87%(Wavicle 口径);落地用例包括产品组合分类、供应商质量与成本洞察、季节性销售预测、第三方外卖平台 KPI 分析等。
机制根因
Teradata 时代的瓶颈不在"算不动",而在批处理窗口与"为峰值买单"的成本结构:日报跑 3–4 小时,本质是行存架构 + 固定容量下全量扫描的代价。Redshift 的列存 MPP 把"每日全量经营报表"变成可并行裁剪的扫描,9 秒是列存 + 排序键裁剪共同作用的结果。迁移的真正价值不只是换引擎,而是借机把工具链一起现代化——旧 ETL 与新数仓的接口标准化后,"加一个分析用例"不再需要数仓团队排期。
教训
遗留数仓迁移的 ROI 往往不在"查询快了 X 倍",而在"报表 SLA 从小时级到秒级"带来的决策节奏变化;选云数仓时把 ETL/BI 工具链一起规划,避免"新仓配旧管道"把老问题搬上云;用"十大市场日报 9 秒"这种业务方可感知的指标验收迁移,而不是只看 TPC 式基准。
来源
  1. Wavicle Data Solutions 案例《McDonald's: Data Driven Solutions》(Teradata→Redshift 迁移,Talend + Tableau,十大市场日报 3–4 小时→9 秒) https://infohub.wavicledata.com/wp-content/uploads/2020/04/McDonalds_Data_Driven_Solutions.pdf
  2. —

相关产品:Amazon Redshift 相关能力:— 最后核验:2026-10-02

Nasdaq:从 70 节点 Redshift 集群到湖仓架构,账单流程 40 分钟压到 4 分钟(2014–2019) 成功经验

证券交易所 市场数据 湖仓一体 Redshift Spectrum 夜间批处理
场景
Nasdaq 运营 27 个市场、近 4000 家上市公司,每晚要把当天的订单、报价、交易、撤单等受保护交易数据全部入库,在次日开市前跑完账单、报表和监管报送。2014 年,为扩大规模、提升性能、降低运维成本,Nasdaq 把遗留本地数仓迁到 Amazon Redshift。到 2018 年集群扩至 70 个节点,每晚从数千个数据源摄取 300–550 亿条记录、超过 4TB;2018 年初市场波动加剧时单日峰值约 550 亿条。硬约束是时间窗口:收盘到次日开市之间既要写完数百亿条,又要同时读出来做报表——"数据加载拖慢了我们报表的交付"(软件工程副总裁 Robert Hunt)。
决策
2019 年 1 月 Nasdaq 参加 AWS Data Lab,用 4 天时间把数仓实现推倒重来:Redshift 退为纯计算层,所有交易所数据先以消息形式写入 S3 归档,再用 Redshift Spectrum 直接在 S3 上查询——即湖仓架构,账单、报表、监控等下游流程都由 S3 上的消息驱动。
结果
据 AWS 案例页引述 Robert Hunt,一个账单流程从约 40 分钟降到 4 分钟(降幅 90%);全部流程平均提升 60–70%。摄取侧不再受数仓写入吞吐卡脖子,查询侧可以直接对 S3 做并行查询。
机制根因
改造的本质是把"存"和"算"解耦。70 节点集群的膨胀是存算耦合时代的典型症状:数据量涨只能加节点,而节点自带计算,于是"为存数据被迫买计算"。S3 接管持久化与并行摄取后,Redshift 只保留弹性计算,Spectrum 让冷热数据共享同一套 SQL;夜批窗口里"加载与查询抢同一批资源"的死锁被物理隔离打破。这正是后来 RA3(本地 SSD 缓存 + S3 托管存储)要产品化的思路,Nasdaq 在 2019 年用手工架构先走了一遍。
教训
数仓扩到几十个节点时,先问"节点里多少算力是为存储买单的",而不是继续加节点;"写多读少、窗口固定"的夜批场景,S3 + 计算层的组合优于"全量 COPY 进仓";架构改造的验收标准应该是单个关键流程的量化提速(如 40 分钟→4 分钟),而不是感觉"变快了"。
来源
  1. AWS 官方案例《Nasdaq Case Study》(引述 Robert Hunt,2014–2018 年集群演进与夜批窗口挑战) https://aws.amazon.com/solutions/case-studies/nasdaq-case-study/
  2. AWS《Nasdaq Migrates to a More Modern Data Lake Architecture》(2019 年 Data Lab + Spectrum 湖仓改造,账单流程 40 分钟→4 分钟) https://aws.amazon.com/solutions/case-studies/nasdaq-data-lake/
  3. —
  4. —

相关产品:Amazon Redshift 相关能力:— 最后核验:2026-10-02

Robin:为嵌入式分析迁出 Redshift,SQL 语义暗坑比数据搬运更费工(2023) 失败教训

Redshift 迁出 嵌入式分析 SQL 方言差异 迁移校验 维护窗口
场景
Robin(工程师 Eric Wurtzbacher 2023 年 9 月第一手复盘)。数仓跑在 Redshift 上,管道是 RDS 导出(EventBridge 编排)→ Python 脚本加载 → dbt 转换。2023 年 1 月团队决定迁往 Snowflake,三个动因:① 即将接入第三方嵌入式分析工具,负载将大增,Redshift 单集群扛不住;② 降本——餐巾纸测算 Snowflake 更便宜,迁移四个月后验证"确实便宜了";③ 不再为扩缩容的维护窗口和停机操心——产品面向付费客户,有 uptime 协议要守。此外还看中 zero-copy-cloning、time travel、内置监控等"quality of life"改进。
决策
双仓并行、逐服务切换。Snowflake 账号用 Terraform 起;Python 加载脚本把 boto3 Redshift driver 换成 Snowflake connector,COPY 换成 COPY INTO(ON_ERROR=CONTINUE 救了不少脏数据);dbt-redshift 包换成 dbt-snowflake,全量 SQL 翻译——作者直言"这部分是最多的工作"。QA 不追求 100% 对等:所有表行数一致、每列数值加总一致、字符串列 distinct 计数一致,差异能解释即可。
结果
5 个月完成迁移,作者认为在性能、成本、开发者体验三方面都值得。迁移中最大的时间黑洞不是数据搬运,而是 SQL 边缘语义差异:greatest()/least() 遇到 null 时 Redshift 直接忽略、Snowflake 返回 null;Redshift 时间戳基准精度是 1 位小数、Snowflake 是 3 位,cast 成字符串再 md5 哈希会对不上;墨西哥 2022 年取消夏令时——Redshift(尽管每周维护)没跟进时区库变更,Snowflake 跟进了;'infinity' 时间戳 Snowflake 不认;type、start 这类保留关键字作列名必须加引号。
机制根因
Redshift"单集群共享大脑"模型下,嵌入式分析这种不可控的外部负载没有隔离手段,只能靠扩缩容硬扛,而扩缩容=维护窗口=可能的停机——触碰了面向付费客户产品的红线,这是三动因里最结构性的一条。SQL 暗坑的本质是两家对 SQL 标准边缘语义(null 传播、时间戳精度、时区库版本)的实现分歧:dbt 包替换只是开始,真正的成本在逐函数的语义核对与"可解释差异"的 QA 哲学。
教训
评估迁仓成本时,SQL 翻译 + QA 的人力往往超过数据搬运本身,预算要按"逐函数核对"来估;迁移前先列边缘语义清单(null 行为、时间戳精度、时区、保留字、JSON null 类型)逐项验证;"可解释的差异"比"100% 一致"更务实,100% 对等"需要不可思议的努力"(作者原话);当负载增长来自"不可控的第三方"(嵌入式分析)而非自身业务时,弹性隔离比单集群调优更重要。与 Faire 的九个月零停机双仓迁移(重工程)相比,Robin 这个样本重的是"为什么离开"与"翻译税"——同一迁出潮的另一面。
来源
  1. Eric Wurtzbacher(Robin)《The Process for our Redshift to Snowflake Migration》(2023-09-21,第一手迁移动因、并行迁移过程、SQL 语义暗坑与 QA 策略) https://medium.com/@eric.wurtzbacher/the-process-for-our-redshift-to-snowflake-migration-ca0ea8fd8fa1
  2. —

相关产品:Amazon Redshift、Snowflake 相关能力:迁移潮:"反例价值"本身 最后核验:2026-10-02

Salesforce "Sayonara":十年去 O 战略(2013–2023,目标未证实完成) 成功经验

去 O 商业数据库锁定 长期主义 PostgreSQL
场景
Salesforce 是全球最大的 Oracle 数据库客户之一,核心 CRM 跑在 Oracle 上。随着 Oracle 授权费用膨胀、且 Oracle 自身成为云业务竞争对手,数据库从"技术选型"变成"战略风险"。(https://www.ciodive.com/news/aws-and-salesforce-may-say-sayonara-to-oracle-database/513895/)
决策
启动代号 "Sayonara"(日语"再见")的内部数据库项目,目标 2023 年摆脱 Oracle(据 The Information 引述前员工);同步做两件事:2013 年起招募 PostgreSQL 核心开发者(包括 Tom Lane),把顶级 PG 工程能力收编为己有;新业务线(Heroku、MuleSoft 等)从第一天就不建在 Oracle 上。(https://www.infoworld.com/article/2265383/how-postgresql-just-might-replace-your-oracle-database.html)
结果
2019 年披露时目标 2023 年完成;但截至 2026-10,公开渠道未见"核心 CRM 已下线 Oracle"的宣告,多方分析认为主平台仍在 Oracle 上(Cloud Wars;cirra.ai 2023 年分析)。这是一次"未完成"的去 O——但战略动作本身是教科书级的,结论以公开报道口径为准。本案例标为"成功经验",指的是其方法论(能力建设路径)值得学习,不可引用为"Salesforce 已用 PostgreSQL 替换 Oracle 核心"的证据——后者截至 2026-10 仍无公开证实。
机制根因
Salesforce 的多租户架构本就把 Oracle 当"存 EAV 大宽表的 KV"用——关系能力早被自己的元数据抽象层架空,Oracle 的价值只剩"稳定+售后"。去 O 的真正资产因此不是一次迁移,而是把数据库从"供应商产品"变成"自有工程能力":招 PG 内核级人才、自研抽象层、新业务先行、核心系统最后动。代价是时间:2013 年续约 Oracle 到 2023 年目标,整整十年窗口——"换系统记录数据库"是公司史上最大变更(Wikibon),只能按代际推进,不能按季度考核。
教训
去 O 不要立项成"迁移项目",要立项成"能力建设":先有人(内核级人才)、再有抽象层(让上层不感知底层库)、新业务先行、核心系统最后动。连 Salesforce 都需要十年窗口,CTO 对"一年去 O"的承诺要打骨折听。

相关产品:Oracle Database(甲骨文)、PostgreSQL(社区版) 相关能力:出走潮 —— Amazon 下线 Oracle 与"每两周停机 10 分钟做 schema 变更" 最后核验:2026-10-01

Sentry 迁向 ClickHouse:事件流的 MVCC 写放大 失败教训

实时分析/OLAP 写入放大 高吞吐 运维简单
场景
Sentry 是错误追踪服务,事件流持续高写入、按多维 tag 搜索。早期用 PostgreSQL 存事件、Redis 做 tag 索引,但高写入事件流在 PG MVCC 下产生大量死元组,I/O 浪费在扫描死行上。多方评估后选定 ClickHouse(配套自研 Snuba 查询层)。(https://blog.sentry.io/introducing-snuba-sentrys-new-search-infrastructure/)
决策
2019 年把事件与 tag 搜索迁往 ClickHouse / Snuba,下线 PostgreSQL + Redis 方案。
结果
Tagstore 数据从 TB 级压缩到 GB 级;约 40% 查询(告警规则)要求写后立即可读,迁移后满足。数字为 Sentry 自报,属单方口径。
机制根因
Sentry 的死元组问题是复合的,不是"每次 INSERT 都制造死行":tagstore 对聚合计数的高频 UPDATE、保留期到期时的批量删除、每新增一种查询维度就要加索引/反范式结构并回填——三者叠加制造死元组潮汐,autovacuum 跟不上,I/O 被浪费在扫描死行上。注意纯 INSERT 本身不直接产生死行。ClickHouse 侧:主键排序加列式压缩带来数量级压缩比;"不耍小聪明"的查询规划器加 PREWHERE 让延迟可预测;复制只需 ZooKeeper;写后立即可读满足告警实时性。
教训
append-mostly 事件流的 OLAP,列式加排序键的压缩与扫描红利远超行存 MVCC;选型时把"运维简单"和"写后立即可读"列为硬指标;存储引擎的写入范式必须与 workload 的写入范式同构。

相关产品:PostgreSQL(社区版)、ClickHouse 相关能力:海量事件的 ad-hoc 全表扫描、MVCC + 查询优化器 + 事务性 DDL —— 复杂分析直接跑在 OLTP 主库上 最后核验:2026-10-01

Shopify 的 MySQL 分片与 Pod 隔离架构(2015–2018) 成功经验

水平分片 故障隔离 多租户 在线迁移
场景
2015 年 Shopify 买更大的数据库服务器已走到尽头,被迫对 MySQL 按商户分片。但分片带来新问题:代码里到处是跨分片扇出,一个分片挂掉,相关操作在全平台不可用——分片数越多,单点故障的爆炸半径越大。(https://shopify.engineering/a-pods-architecture-to-allow-shopify-to-scale)
决策
2016 年重组运行时架构,引入 Pod:每个 Pod 是一组商户 + 完全隔离的数据存储集合(MySQL 分片、Redis 等);负载均衡层的 Sorting Hat 按规则把每个请求路由到唯一 Pod,禁止任何跨 Pod 调用;配套自研 Ghostferry 做在线数据迁移、Pod Mover 做分钟级容灾切换。
结果
据官方博客,单个 Pod 故障不再扩散为平台事故;Pod Mover 可在一分钟内把 Pod 切到恢复数据中心且不丢请求;Ghostferry 已在生产环境迁移数十 TiB 级分片数据(据 Shopify 在 Percona Live 的分享口径,70+ TiB)。
机制根因
分片解决的是"容量",Pod 解决的是"爆炸半径"——这是两个正交问题。Shopify 的洞察是:多租户 SaaS 里真正的故障域单位不是"数据库实例"而是"租户集合";把计算、存储、任务队列按租户集合做硬隔离后,扩容=加 Pod(线性),故障=丢 Pod(有界)。代价是彻底放弃跨分片事务与跨 Pod 查询,所有跨商户分析走 CDC 进 Kafka 再入数仓,应用层必须接受最终一致。
教训
分片之后必须回答"分片挂了影响谁";如果答案是"全平台",分片只做了一半。租户天然可分的业务(电商、SaaS),按租户集合做硬隔离是性价比最高的扩展模型。

相关产品:MySQL 相关能力:— 最后核验:2026-10-01

Slack:不换 MySQL,加 Vitess 代理层解决分片键僵化 成功经验

水平扩展 分片键演进 大客户热点 迁移工程
场景
企业聊天应用,MySQL 按 workspace 在应用层分片;超大客户的 workspace 成为分片热点,而应用层分片把分片键焊死在代码里,无法随业务演进(URL 见于 PlanetScale 引文,建议用真人浏览器打开确认原文可访问:https://slack.engineering/scaling-datastores-at-slack-with-vitess)
决策
引入 Vitess 做代理层,而不是重写应用分片逻辑;历时约 3 年灰度完成迁移。
结果
99% 的 MySQL 流量经 Vitess;峰值从 0 做到 230 万 QPS;分片键可按 user、channel、workspace 灵活重构,并向上游社区贡献代码。
机制根因
应用层分片的最大代价不是性能而是僵化——分片键焊死在代码里,大客户热点无解。Vitess 代理层把路由与业务逻辑解耦,支持在线 DDL 与在线 reshard;MySQL 本体不动,事务语义、生态工具与运维知识全部复用。
教训
"不换"的机制条件:MySQL 本体的事务与生态仍是资产,只是路由层僵化——此时加代理层而非换库。分片键需要随业务演进时,代理层比应用层分片灵活一个数量级。大迁移用 3 年灰度是正常节奏,不是失败;能灰度、可回滚的迁移设计本身就是选型的一部分。

相关产品:MySQL 相关能力:Vitess 水平分片 —— "第二增长曲线" 最后核验:2026-10-01

Adobe:在 Snowflake 上组装组合式 CDP,数据不动、受众联邦 成功经验

营销科技 组合式 CDP 零拷贝 实时受众
场景
营销数据散在 CDP、数仓和业务系统里,传统做法是把数仓数据再拷一份进 CDP:双份存储、双份治理,还有延迟。隐私与数据安全的要求又让"拷来拷去"越来越贵,营销部门要实时个性化,数据团队却被困在搬运里。
决策
Adobe 与 Snowflake 共建组合式 CDP。Federated Audience Composition 让营销人员直接在 Snowflake 的企业全量数据上创建、丰富受众,数据不进 Adobe;profile enrichment 把 Snowflake 的属性与聚合喂给实时画像,做"当下"个性化;双向零拷贝同步让 Real-Time CDP 的画像数据在 Snowflake 侧直接可用;Customer Journey Analytics 与 Snowflake 间的数据镜像让增删改自动反射。
结果
受众创建与模型训练不再需要搬运数据;同一份企业数据既服务营销激活,也服务数仓内的分析与 ML;治理做一次,两边生效。Adobe 引述调研称 61% 的营销与技术高管认为更个性化的体验是 2025 年增长主因——该数字为 Adobe 引述的第三方调研口径。
机制根因
"把计算推到数据处"替代"把数据搬到计算处"。联邦查询下,权限、血缘不断裂,没有第二份拷贝可泄露、可过期。组合式 CDP 的本质是承认"数据重力":企业全量数据在 Snowflake,CDP 应该长在数据上,而不是把数据吸进 CDP。
教训
CDP 选型先看数据重力,谁离全量数据近谁赢;复制即负债——每份拷贝都是未来的对账与治理成本;零拷贝架构下,安全与合规反而更容易,因为永远只管一个源头。
来源
  1. Adobe 官方商业博客《Adobe and Snowflake partner to power a composable CDP》(Adobe 第一方
  2. Federated Audience Composition、双向零拷贝、数据镜像) https://business.adobe.com/blog/adobe-and-snowflake-expand-their-partnership

相关产品:Snowflake 相关能力:Secure Data Sharing + Marketplace 最后核验:2026-10-02

Capital One:从 Teradata 迁往 Snowflake,先给"无限弹性"装上刹车(2017–2022) 成功经验

银行核心数仓 云迁移 成本治理 联邦治理
场景
Capital One 的数据仓库多年前跑在 Teradata 一体机上,存储与并发处处受限;一次版本升级是长达六个月的流程——厂商把硬件发到机房安装,伴随一到两周停机。2017 年起,该行启动向 Snowflake 的整体迁移,目标是把整个数据工作负载搬上公有云。
决策
Capital One 预判 Snowflake"存储计算无限"的架构是双刃剑:过去按年买 license,用多用少一个价;上云后用多少付多少,不建治理必失控。于是迁移同时自建联邦式治理工具:业务线自助开通、自主管理,成本策略与最佳实践由中央工具强制执行。这套工具后来产品化为 Slingshot。
结果
双仓并行一年多完成切换,Teradata 1.8 万张表只迁了 6000 张——迁移顺带做了资产盘点。据工程副总裁 Salim Syed 口径:消除超 5.5 万小时手动变更(另一次专访口径为近 5 万小时),查询成本降 43%,整体节省近 27%;数仓从 200TB 扩到 50PB(250 倍),查询量涨 5–6 倍,6000–7000 用户每天跑数百万查询。2022 年这套能力被装进新成立的 Capital One Software 对外售卖。
机制根因
弹性计费把"用量纪律"写进了成本公式。分析师习惯把数据子集拷进私人沙箱(内部戏称 "data drunk"),存储与计算在无人察觉中膨胀。根因是旧世界买断制养成的用量习惯,与新世界按量付费的错配。联邦治理的本质是把成本意识编译进工具链:配额、告警、低效查询提醒默认开启,而不是靠事后审计。
教训
迁移第一天就要设计治理,事后"把精灵放回瓶子"极难;数据民主化的前提是护栏而非审批——让业务自助,把最佳实践做成默认项;小团队支撑数千用户的唯一出路是工具化,不是加人。
来源
  1. VentureBeat 专访 Capital One 数据工程 Salim Syed《How to migrate to Snowflake without getting 'data drunk'》(迁移 2017 年启动、近 27% 成本节省、"data drunk"概念出处) https://venturebeat.com/data-infrastructure/how-to-migrate-to-snowflake-without-getting-data-drunk
  2. SiliconANGLE《Capital One sees win-win in selling software built on Snowflake cloud》(2022-07-09,Teradata 升级停机、6000/18000 张表、5.5 万小时、查询成本 -43%、200TB→50PB、Slingshot 产品化) https://siliconangle.com/2022/07/09/capital-one-sees-win-win-selling-software-built-snowflake-cloud/

相关产品:Snowflake 相关能力:弹性计费的"隐形闲置税" 最后核验:2026-10-02

Faire:从 Redshift 迁往 Snowflake,九个月零停机大迁移(2022–2023) 成功经验

批发电商 Redshift 迁移 零停机迁移 数据治理
场景
Faire 2017 年成立,数年做到 1000 多人、60 万零售商、8.5 万品牌,数据需求涨得比人快。数仓跑在 Redshift 上,支撑 100 多个 Airflow ETL、Mode 报表和 SageMaker 机器学习。Redshift 存算耦合,所有负载抢同一集群;且当时只支持串行隔离级别——每天 9 点 Mode 报表的长 SELECT 会阻塞 ETL 的 ALTER TABLE RENAME,一个慢查询能拖住整条队列,WLM 调优成了玄学。
决策
迁往 Snowflake,立下硬指标:100% 表迁移、数据对等度 ≥95%、零停机。策略是双仓并行九个月:Kinesis 事件流用 Snowpipe 双写、历史数据从 S3 回填;Stitch 另起一套部署同步 MySQL 等关系源;引入 transformation layer 做 RAW 与 ANALYTICS 逻辑分离;自研 Redshift→Snowflake SQL 解析器,Airflow 双分支自动同步;用 Datafold 做跨仓数据对等校验,并众包给全公司在 Mode 看板上认领。
结果
九个月完成全量切换(ETL、BI、ML、特征服务),350 多张 Mode 核心报表通过逆向 Mode API 批量迁移,迁移工具开源为 github.com/Faire/snowflake-migration。据博客称,查询排队时间与 Airflow 作业运行时显著改善;如今月均 400 万+ ETL 查询,特征库每天支撑 1 亿次在线预测;全仓 PII 通过 object tagging 加 transformation layer 实现列级脱敏,治理一次做对。
机制根因
Redshift 的瓶颈不在单查询快慢,而在"所有负载共享一个大脑":锁、WLM 队列、存储空间是全局资源,一个坏查询的代价由全公司分摊。Snowflake 存算分离加多仓隔离把竞争域切小,"查询为什么慢"从玄学变成可观测、可归因——query tag 直接查 information_schema.query_history 就能定位最贵的 DAG。transformation layer 则把"上游结构变更"与"下游稳定"解耦,这是 Redshift 时代缺失的一层。
教训
迁移首先是组织工程,先拿全员 buy-in 并写进 OKR;能自助就不手工——校验众包、报表迁移工具化决定了九个月的可行性;用 task-specific Airflow operator 约束 SQL,把一致性做进工具而不是文档里。
来源
  1. Faire 工程博客《The great migration from Redshift to Snowflake》,作者 Rafay Aleem(2023-02-28,迁移细节、双仓策略、Datafold 校验、Mode 报表迁移、开源工具) https://craft.faire.com/the-great-migration-from-redshift-to-snowflake-173c1fb59a52

相关产品:Snowflake、Amazon Redshift 相关能力:— 最后核验:2026-10-02

JetBlue:Snowflake + Fivetran 现代数据栈,把数据工程师 40% 的时间还给洞察 成功经验

航空 现代数据栈 ELT 客户 360
场景
JetBlue 的数据散落在 ServiceNow、Qualtrics、JIRA、Salesforce、第三方 SQL Server 和本地 Oracle 里,是典型的"意大利面式"架构。数据工程总经理 Ashley Van Name 统计:同行的数据工程师约 40% 时间花在搭建和测试管道上,真正产生洞察的时间被严重挤压。
决策
以 Snowflake 为中心搭建现代数据栈,用 Fivetran 的"管道即服务"(200+ 连接器)替代自建 ETL;坚持"原始数据先进仓"——Qualtrics 飞后问卷、SaaS 数据以原始形态入仓再建模;本地 Oracle 运维库用 Fivetran HVR 实时复制进仓。团队理念是"把数据当产品"。
结果
造管道的时间从 40% 降到 10%,工程师 90% 时间转向数据消费与产品化。飞后问卷直入 Snowflake 原始层,分析师自助取数,推动了机上娱乐与数字交互的改进;运维库实时进仓后可做及时干预;全公司报表逐渐收敛到同一口径,离"单一可信源"更近。
机制根因
ELT 把"搬运"标准化外包,把"建模"留给最懂业务的人。自建管道的隐性成本不在开发那几周,而在常年 40% 人力的维护税;Fivetran 把连接器变成商品,Snowflake 的弹性计算吸收峰值波动。原始层进仓保留了"重算"的可能——这是 ETL 先清洗后入库所丢失的东西,也是分析师敢自助的底气。
教训
数据工程师的时间是最贵的成本,省管道钱不如省人力;管道自建是隐性税,标准化环节越早外包越好;"单仓加原始层"是口径统一的前提,没有它,Customer 360 只是口号。这正是 40% 与 10% 之差的来源。
来源
  1. VentureBeat《How JetBlue's integrated use of Snowflake and Fivetran is a model for the modern data stack》(数据工程总经理 Ashley Van Name 口述:200+ 连接器、40%→10%、问卷与运维库用例) https://venturebeat.com/data-infrastructure/how-jetblues-integrated-use-of-snowflake-and-fivetran-is-a-model-for-the-modern-data-stack

相关产品:Snowflake、Oracle Database(甲骨文) 相关能力:— 最后核验:2026-10-02

JLL:Snowflake 遇性能瓶颈,转向 Databricks Lakehouse 统一 80+ 国家分析(2024–2025) 失败教训

性能瓶颈 Lakehouse 迁移 全球分析 变更管理
场景
JLL(仲量联行)是全球商业地产服务巨头,旗下 JLL Technologies 部门要把 80 多个国家的数据统一起来,做实时 BI 和 AI 驱动洞察。但原有数仓跟不上:数据量持续增长、查询出现性能瓶颈、传统 BI 工具链受限,全球 120 多名分析师各自为战。全球 BI 技术总监 Kristopher Curtis 的原话是,旧系统在"数据处理的速度和可靠性"上已成主要挑战,迁移不是一次技术升级,而是"维持竞争力的战略必需"。
决策
JLL 与 Databricks 建立战略合作,把分析统一到 Lakehouse:Databricks SQL 承载报表与分析管道,Unity Catalog 做跨 80 多国数据的统一治理,Notebook + SQL dashboard 让分析师和工程师在同一份数据上协作建模全球物业数据、市场趋势与客户 KPI。同时配套做了"Databricks Odyssey"游戏化培训体系——从 Rookie 到 Rockstar 的闯关认证、徽章、积分,把 100 多名员工的换平台阵痛变成组织能力升级。Credly 上由 JLL 官方签发的 JLL Databricks Rockstar/Pro 徽章可佐证该培训体系真实存在。
结果
按 Databricks 官方客户故事口径,切换后同数据源、同数据量下处理时间比原本地数仓降低 60%,数据摄取从小时级降到分钟级;为每个客户配独立集群后,"不再受他人资源消耗影响",跨租户的资源争抢依赖消失。Odyssey 上线几个月内 175 人注册、完成 1250 多次挑战提交、75 人拿证(2024 年 8 月启动)。基于 Databricks 建成的 JLL Azara 成为其商业地产数据洞察平台。以上数字均为 Databricks 厂商口径,未找到第三方独立复现,引用须注明。
机制根因
这是一个"数仓→湖仓"的典型迁移逻辑。Snowflake 这类云数仓在单一市场、单一团队时表现很好,但 JLL 的痛点是三维叠加:80 多国的数据主权与治理复杂度、分析师/工程师/数据科学家三类人群的协作割裂、以及对 AI/ML 的前瞻需求。Snowflake 的封闭存储格式让"一份数据同时服务 BI 和 ML"变得昂贵(要么导数据、要么双份治理),而 Lakehouse 的开放格式(Delta Lake)+ 统一治理(Unity Catalog)把边际成本结构改了:新增一个国家/一条业务线是"加一张表",而不是"再搭一套烟囱"。60% 的提速大概率不只是引擎更快,而是"关停旧链路 + 消除跨租户争抢 + 数据不动"的综合效应——评估这类迁移收益时,要把架构简化放在引擎 benchmark 前面算。
教训
从 Snowflake 这类成熟数仓迁出的触发条件通常不是"查询慢了 10%",而是"治理、协作、AI 三个维度同时撞墙";Databricks 自己的《Big Book of Data Warehousing and BI》(2025)第 2.21 节明确写 JLL"pivoted from Snowflake",但 JLL 官方客户页只说"legacy client data warehouses/on-premises solutions",Snowflake 这一具体信源来自厂商渠道,引用时必须标注口径;换平台最大的成本不是数据搬运,而是人的迁移——JLL 把培训做成游戏化认证体系(Odyssey)是本案例最值得抄的作业,技术迁移计划里要给变更管理单独列预算和里程碑;"每个客户独立集群"的做法消除了 noisy neighbor,但代价是集群 sprawl,需要配套的成本治理,否则省下的性能会变成浪费的 DBU;行业交叉印证(以下非 JLL 官方披露,而是迁移咨询机构 playbook 的共识,带商业立场):LatentView 称这类迁移中代码转换通常占总工作量的 30–50%,真正的长尾是存储过程、JS UDF 与 TASK/STREAM 管道,成熟 Snowflake 环境里 20–40% 是无人消费的死负载、迁前应先清理,Unity Catalog 必须在迁移前完成设计、事后补等于重迁,回本周期约 12–18 个月;Dateonic 指出 Snowflake 的 CLUSTER BY 在 Databricks 没有一对一替代、需换成 Liquid Clustering,Photon 会被 Python UDF 绕过、迁移前须审计 UDF,TASK/STREAM 管道无法平移、必须重写为 Delta Live Tables。这些共识解释了为什么 JLL 需要 Odyssey 这种量级的培训投入——人的迁移和代码重写才是大头;一线工程师实录交叉印证(匿名 Medium 实录,2025-01,单一样本、客户匿名,不可独立验证):一次 30TB/2000+ 表/66 库的真实迁移里,900+ 个 Snowflake SQL 脚本的转换是主体工作量;迁移期必须建回 Snowflake 的 egress 管道、把 Databricks 金层同步回 Snowflake 以保住 Power BI 不中断("并行运行"原则的实战形态);具体坑包括 Array 类型先按 STRING 落临时表再重灌、JSON 解析在 from_json 与 Variant 预览版之间做性能选型、S3 与 Databricks 分属不同 VPC 要做 peering、迁移中被改动的脚本用数据字典跟踪漂移。
来源
  1. Databricks 官方客户故事《Shaping the future of real estate for a better world》(JLL,含 Kristopher Curtis、Srihari Kumar、Paul Chapman 实名引言,60% 处理时间降低等数字为厂商口径) https://www.databricks.com/customers/jll/training-and-certification
  2. Databricks《Big Book of Data Warehousing and BI》(2025)第 2.21 节"JLL — Upskilling Program for Data Warehouse Migration"(p.62)原文"Facing increasing data volumes, performance bottlenecks and legacy BI limitations, JLL pivoted from Snowflake to a strategic partnership with Databricks"(厂商渠道口径
  3. 2026-10-02 核验发现先前引用的 databricks.com 版《lakehouse 数仓指南》是另一份文档、全篇无 JLL,已更正为本书全文 PDF 的第三方转存链接) https://int.yourtechdiet.com/wp-content/uploads/2026/07/2025-10-eb-big-book-of-data-warehousing-and-bi-V1-ss-191548-6_V1.pdf
  4. Credly 上 JLL 官方签发的 Databricks 徽章(佐证 Odyssey 培训体系存在) https://www.credly.com/org/jones-lang-lasalle/badge/jll-databricks-rockstar
  5. LatentView《Snowflake to Databricks Migration: A Phased Guide》(迁移咨询机构 playbook,带商业立场) https://www.latentview.com/blog/snowflake-to-databricks-migration/
  6. Dateonic《Snowflake to Databricks Migration Partner: A Step-by-Step Guide》(迁移咨询机构 playbook,带商业立场
  7. 其中具名的"Finanzwelt"案例经核查查无此公司、疑为化名,不可引用,仅技术章节可作机制参考) https://dateonic.com/snowflake-to-databricks-migration-partner-a-step-by-step-guide/
  8. 一线数据工程师匿名实录《From Snowflake to Databricks: A Journey of Data Migration Excellence》(Medium,2025-01,单一样本、客户匿名,不可独立验证,仅机制细节可作参考) https://medium.com/@jayanthsajja555/from-snowflake-to-databricks-a-journey-of-data-migration-excellence-c1840de3a2aa
  9. —
  10. —

相关产品:Snowflake、Databricks 相关能力:Unity Catalog 统一治理 最后核验:2026-10-02

卡夫亨氏:用 Snowflake 安全数据共享,与零售商"同坐一张桌子"(2020–2021) 成功经验

消费品 供应链 安全数据共享 零售协同
场景
卡夫亨氏的数据基建以本地 Hadoop 为主,2020 年数字化转型要求整体上云。与零售商的协同长期靠报表、门户和 API:零售商要为每家制造商维护应用、重复拷贝数据;CPG 这边拼文件、验数,费力且有时滞,双方看的从来不是同一份实时数据。
决策
按可扩展性、敏捷/速度/性能、云中立三条标准选中 Snowflake(跑在 Azure 上),并把"安全数据共享"列为零售行业的关键差异点。同时用 Marketplace 直接启用第三方数据(如 Johns Hopkins 大学的 COVID 数据),几分钟即开即用,省掉数据准备与测试。
结果
疫情期间 9 个月下掉本地数仓,5 千亿条记录进入 Snowflake,形成全球统一数据枢纽;安全库存模型 8–10 周上线验证。与零售商的 Joint Value Planning 改为:零售商直接更新共享表,卡夫亨氏零延迟看到同一份数据,"相当于同坐一张桌子",联合看供应链、库存、销售与分销。
机制根因
共享的是数据的"引用"而非拷贝——零复制、权限可管到表/列,双方读的是同一份物理数据,天然无时滞、无需对账。Marketplace 的数据产品同样免搬运,数据科学团队把精力从管道 plumbing 转到建模。网络效应:接入的零售商越多,协同价值越大。
教训
协同速度取决于数据共享的摩擦力;"少搬运等于少出错",省掉的 ETL 不只是机器成本;第三方数据即开即用是云数仓被低估的红利。注意:本案例主要来源为 Snowflake 赞助/官方渠道,数字为受访高管口径,未见第三方独立复现。
来源
  1. HBR 赞助内容《How Data-Sharing Is Helping to Power a Global CPG Company》(Snowflake 赞助,厂商相关口径
  2. 卡夫亨氏数字化转型副总裁 Mani Gopalakrishnan 口述:2020 年上云、9 个月、5 千亿条记录、Marketplace COVID 数据、安全库存模型) https://hbr.org/sponsored/2021/05/how-data-sharing-is-helping-to-power-a-global-cpg-company
  3. Snowflake 官方博客《Kraft Heinz Fosters Collaboration with Retail Partners》(厂商口径
  4. 全球机器学习运营负责人 Jorge Balestra 在 Retail Data Cloud 发布会分享:Joint Value Planning、"同坐一张桌子") http://snowflake.com/blog/kraft-heinz-fosters-collaboration-retail-partners/

相关产品:Snowflake 相关能力:Secure Data Sharing + Marketplace 最后核验:2026-10-02

2024 年 UNC5537 凭证窃取事件:160 多家 Snowflake 租户因未开 MFA 被批量拖库 失败教训

安全事件 凭证失窃 身份治理 供应链风险
场景
2024 年 4 月起,财务动机攻击组织 UNC5537 用信息窃取木马盗来的凭证,批量登录 Snowflake 客户租户。Mandiant 确认超 160 家客户被波及、约 165 家收到通知,具名受害者包括 Ticketmaster、Santander、Advance Auto Parts。攻击者把窃得数据挂上暗网论坛售卖并勒索受害者。
决策
涉事租户事前的共同"决策"是:不强制 MFA、服务账号凭证多年不轮换、不配置网络 allowlist。事发后 Mandiant 介入调查通报,Snowflake 声明自身企业环境未被入侵,涉事客户承认事件并启动补救。
结果
攻击者自称窃取 Ticketmaster 5.6 亿条记录、挂牌 50 万美元,Santander 3000 万条、索价 200 万美元——均为攻击者单方面宣称;两家公司承认发生了数据安全事件,但未证实条数。Mandiant 定性:手法"并不新颖也不复杂",规模完全来自受害者的普遍疏忽。
机制根因
三重缺失叠加——租户未开 MFA、凭证多年未轮换(有的来自 2020 年的木马日志)、未配置网络 allowlist;Snowflake 当时默认不强制 MFA,拿到用户名密码即获完全访问。SaaS 数仓是"数据引力中心",单个服务账号沦陷等于整仓沦陷;重灾区是第三方承包商的个人电脑(游戏、盗版软件带毒)。共享责任模型下,责任全部落在客户侧,平台默认配置不会替你兜底。
教训
服务账号同样要 MFA、轮换、allowlist,"系统账号不用管"是错觉;默认配置不等于安全配置,上云第一天就要按最高标准收紧;你的数据可能在供应商的 Snowflake 里——第三方的安全水位就是你的水位;攻击者永远先吃低 hanging fruit,基础卫生比高级威胁模型更重要。
来源
  1. Computer Weekly《More than 160 Snowflake customers hit in targeted data theft spree》(2024-06-11,引 Mandiant 调查:超 160 家、UNC5537、无 MFA、木马家族、多年未轮换凭证) https://www.computerweekly.com/news/366588696/More-than-160-Snowflake-customers-hit-in-targeted-data-theft-spree
  2. Dark Reading《Multifactor Authentication Is Not Enough to Protect Cloud Data》(引 Mandiant 分析:Snowflake 自身未被入侵、攻击者挂牌宣称数字、五条教训) https://Www.darkreading.com/cloud-security/multi-factor-authentication-not-enough-to-protect-cloud-data

相关产品:Snowflake 相关能力:— 最后核验:2026-10-02

Google F1:AdWords 计费后端从分片 MySQL 迁到 Spanner,支撑 100TB+ 广告数据(2012–2013) 成功经验

Google 内部 广告计费 分片 MySQL 替换 层次 schema
场景
Google AdWords 是公司核心收入系统,旧后端是分片 MySQL:扩容难、rebalance 更难,复杂 join 逼着业务层精心设计分片键,resharding 经常要改应用。2012 年初 F1 在 Spanner 上投产,接管全部 AdWords 广告活动数据:100+ TB,数十万 QPS,SQL 查询每天扫描数十万亿行。
决策
与 Spanner 联合研发 F1——分布式 SQL 查询引擎 + Spanner 做存储层。核心设计:层次 schema(Customer→Campaign→AdGroup 主键前缀),子表行与父表行物理共置;异步 schema 变更(在线、零停机);乐观事务 + 变更历史自动记录发布。
结果
论文口径:五个九可用性(含计划外故障),Web 应用可观测延迟相对旧 MySQL 系统未增加。代价诚实披露:跨洲同步复制导致提交延迟 50–150ms,靠批量、并行、异步读与 ORM 显式化等应用层模式消化。
机制根因
分片 MySQL 的根本矛盾是"分片键 = 业务模型的紧箍咒":join 必须沿分片键走,跨分片查询要么禁止要么在应用层拼。F1 的层次 schema 把"物理共置"声明在 schema 里:同一客户的所有广告数据落在同一个 Spanner directory,单客户事务走单分片、免 2PC;读同一客户的 Campaign+AdGroup 是一次 range 读 + 有序归并。这是 Spanner 交错表思想的源头——schema 设计即物理布局设计。
教训
分布式 SQL 的延迟税(50–150ms 提交延迟)是真实存在的,F1 用"应用层模式重构"而非"调参"来消化——选型时要评估团队是否愿意为新延迟模型重写数据访问层;schema 变更频率应作为选型输入:变更越频,越需要 F1 式的在线异步 DDL;"五个九 + 延迟不增"的结论来自 Google 第一方论文口径,外部复现时网络拓扑(datacenter 间约 100ms)差异会直接改变延迟数字。
来源
  1. 学术论文《F1: A Distributed SQL Database That Scales》(Shute et al., Google, 发表于 VLDB 2013) https://worker-throbbing-queen-a5b0.fuxxaway.workers.dev:443/http/www.vldb.org/pvldb/vol6/p1068-shute.pdf (VLDB 论文库镜像,2026-10-02 打开验证为论文全文)

相关产品:Google Spanner、MySQL 相关能力:交错表(Interleaved Tables)—— schema 设计即物理布局 最后核验:2026-10-02

Mercari:核心 MySQL 选型评估 Spanner 后弃选——栽在 MySQL 兼容性与迁移路径(2022) 失败教训

选型落选 MySQL 兼容性 迁移成本 TiDB 对比
场景
Mercari 核心 MySQL 库随业务膨胀到"难以可靠运维"(故障、漏洞响应吃力);垂直拆分走到头(剩下几张紧耦合大表无法再拆),水平拆分又需要大改应用 + 微服务化改造。Core SRE 团队立项迁往可扩展 SQL,对 Cloud Spanner、Vitess、TiDB 按六个维度打分:配置(稳定性/failover)、查询(MySQL 兼容)、运维、安全、迁移、上下游联通。
决策
Spanner 在"查询"与"迁移"两项得零分:不支持 AUTO_INCREMENT(且单调递增主键不被推荐)、读 MySQL binlog 做迁移需要改造、表结构要按交错表重写。TiDB 在迁移(双向复制、可回滚)与查询(MySQL 5.7 兼容)占优,被定为"最有希望候选",进入业务验证。
结果
Spanner 落选。Mercari 明确写道 TiDB 更契合其运维组织(支持 failover 的集群形态、纵向集群划分习惯)。诚实注记:这是 2022 年 2 月的评估结论;Spanner 在 2025 年补上了 auto_increment、SELECT…FOR UPDATE、repeatable read(见本批 TimeTree 案例),若重估结论可能不同——选型结论有保质期。
机制根因
Spanner 的落选不是"性能不够",而是"迁移摩擦"。MySQL 生态的隐性契约(自增主键、binlog CDC、下游 Kafka)构成迁移的真实成本。单调主键在 Spanner 的 range 分片下退化为单分片写——这不是调优问题,是数据模型假设冲突:MySQL 时代"自增主键 = 最佳实践",Spanner 时代"自增主键 = 反模式",迁移意味着重写建模习惯。Vitess/TiDB 胜在"把 MySQL 方言和生态原样搬过去",Spanner 要求"按分布式重学建模"。
教训
评估分布式数据库时,"查询兼容性"与"迁移可逆性"应与性能同权打分;binlog/CDC 生态是 MySQL 用户最沉的资产,选型前先审计上下游对 binlog 的依赖;任何 2022 年前后的 Spanner 落选结论都要用"2025 年 MySQL 兼容性补齐"重新校准——给选型报告写上有效期。
来源
  1. Mercari Engineering 博客《Dealing with Legacy Systems》(2022 年 2 月 18 日,Core SRE 团队) https://engineering.mercari.com/en/blog/entry/20220218-dealing-with-legacy-systems/
  2. Google Cloud 博客《Migrating from MySQL to Spanner is easier now》(2025 年,Spanner 补齐 MySQL 兼容能力) https://cloud.google.com/blog/products/databases/migrating-from-mysql-to-spanner-is-easier-now

相关产品:Google Spanner、TiDB、MySQL 相关能力:贵是"时间的物理价格" + 单调主键写热点 最后核验:2026-10-02

Niantic:Pokémon GO 从 Datastore 迁到 Spanner,活动峰值 40 万冲到近百万 TPS(2021) 成功经验

游戏全球同服 峰值扩容 Datastore 迁移
场景
Pokémon GO 全球同服、所有玩家共享同一游戏世界。社区日、GO Fest 等活动期间,事务量"几分钟内从每秒 40 万冲到近百万"。后端主力是 GKE + Spanner,常备约 5000 个 Spanner 节点。每天产生 5–10TB 数据进入 BigQuery/Bigtable 分析管道。
决策
早期用 Google Datastore(免运维、快速起步);游戏成熟后需要关系模型 + 全局 ACID 事务 + 事务一致的索引(主/二级键复杂 schema),迁到 Spanner。抓宠流程:手机→负载均衡→NGINX→GKE 前端→写 Spanner;空间查询后端按地理分片缓存地图数据;用户行为以 protobuf 写 Bigtable 日志、经 Pub/Sub 进分析管道。
结果
单 realm 全球同服成为可能——强一致保证"同一地点所有玩家看到同一只宝可梦"。活动扩容时 Niantic SRE 只需保证配额,托管服务承担运维。未披露成本数字。
机制根因
全球同服的本质要求是"写全局有序":两个玩家同时点同一只宝可梦,谁先抓到必须有唯一答案。Datastore 的实体组事务满足不了跨实体关系事务;Spanner 的外部一致性让"先发生的抓取在全局先成立",事务一致的二级索引让"按地理位置查宝可梦/道馆"不必扫全表。5000 节点常备的另一面是成本——Spanner 按节点计费,游戏波峰波谷明显,节点弹性是账单关键(博客未谈成本,此为机制推断)。
教训
从 Datastore 这类"起步快"的存储迁出时,真正的迁移成本不在数据量而在语义升级(非关系→关系、最终一致→强一致),越早识别语义天花板越好;全球同服类需求选型时,"一致性语义"应排在"单机性能"之前验证;峰值型业务要把节点弹性的运维手册写在选型报告里,而不是上线后才发现。
来源
  1. Google Cloud 博客《How Pokémon GO scales to millions of requests?》(2021 年 10 月,访谈 Niantic 高级工程经理 James Prompanya) https://cloud.google.com/blog/topics/developers-practitioners/how-pok%C3%A9mon-go-scales-millions-requests
  2. Google Cloud 博客《Using Spanner for non-relational workloads》(引述 Niantic 迁移与一致性索引) https://cloud.google.com/blog/products/databases/using-spanner-for-non-relational-workloads

相关产品:Google Spanner 相关能力:TrueTime + 外部一致性 —— 全球多活强一致的唯一解 最后核验:2026-10-02

Google 自身事故:Service Control 一次坏写入经 Spanner 秒级同步全球,重启风暴反压垮 Spanner(2025) 失败教训

生产事故 全球复制反噬 重启风暴 控制面
场景
2025 年 6 月 12 日,Google Cloud/Workspace 全球大范围 503。Service Control(API 管理控制面二进制)的配额/策略数据存放在 regional Spanner 表中,并"几乎瞬时"复制到全球。5 月 29 日上线的新配额检查代码缺少错误处理、未受 feature flag 保护。
决策
Google 的架构决策是把 Service Control 的配额/策略元数据放在 regional Spanner 表中,并"几乎瞬时"复制到全球——用全球强一致复制来服务全球配额管理。2025 年 5 月 29 日,又上线了未经 feature flag 保护、缺少错误处理的新配额检查代码(带一个可关闭问题策略路径的"红按钮",但事故中 40 分钟才完成推送)。
结果
全球 API 约 3 小时大面积 503(官方口径 10:49–13:49 PDT),Cloud Service Health 自身也被波及,首份公开报告延迟约 1 小时。Google 事后冻结 Service Control 变更,整改清单包括:审计所有消费全球复制数据的系统、复制改为增量渐进并留出验证窗口、关键二进制强制 feature flag、补随机指数退避、Service Control 模块化 fail-open。
机制根因
Spanner 的全球同步复制在这里是"放大器"不是"保险丝":一次区域写入在秒内变成全球毒药,而读路径(Service Control 二进制)对坏数据零容忍(空指针崩溃而非降级)。更深层的是"控制面依赖数据面"的循环:Service Control 重启风暴打垮了 Spanner 表,而 Spanner 表正是 Service Control 恢复所依赖的——恢复路径与故障路径共享同一基础设施。Google 自己的结论点名了机制:"无论业务多需要全球近瞬时一致,数据复制都必须增量传播并留出验证时间。"
教训
把 Spanner 的全球复制用在控制面/策略数据上时,写入侧必须有 schema 校验与灰度(feature flag),不能信任"写入即正确";任何大规模重启路径都要有随机指数退避,否则恢复流量本身就是第二次故障;监控与状态页基础设施要与被监控系统做故障域隔离——否则出事时你连"出事了"都发布不出去。
来源
  1. Google Cloud 官方事故报告《Incident details | Google Cloud Service Health》(Incident ow5i3PPK96RduMcb1SsW,2025 年 6 月 13 日发布完整报告) https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW
  2. The Register 报道《Google caused outage by ignoring its quality protections》(2025 年 6 月 16 日,独立复述事故链) https://www.theregister.com/off-prem/2025/06/16/google-caused-outage-by-ignoring-its-quality-protections/1430899

相关产品:Google Spanner 相关能力:TrueTime + 外部一致性 —— 全球多活强一致的唯一解 最后核验:2026-10-02

ShareChat:1.6 亿月活社交平台从 NoSQL 迁到 Spanner,流量 5 倍暴涨零改代码(2021) 成功经验

社交出海 零停机迁移 弹性扩容 成本优化
场景
印度社交平台 ShareChat,1.6 亿月活、15 种语言,日均百万级帖子;同期上线短视频应用 Moj(8000 万月活)。原跑在某云 NoSQL 上(客户未具名),为应对不可预测流量长期超配计算与存储。正式迁移前做了 4 个多月的 PoC,用网关复制生产流量做影子压测,验证超百万 QPS。
决策
整体迁往 Google Cloud,实时 serving 层选 Spanner。理由:全球一致性 + 事务一致的二级索引;"不像 legacy NoSQL,扩容不用重新思考表结构"。迁移用 wrapper 封装隔离,应用代码零改动;6000 万用户 5 小时迁完,零数据丢失、零停机。
结果
120 张表 + 17 个索引迁入 Spanner;ShareChat 联创兼 CTO Bhanu Singh 自称成本降 30%(客户口径,引自 Google Cloud 博客客座文章,无第三方复现)。一次流量几天内暴涨 500%,水平扩展"零行代码改动";平均 8 万 RPS,推送通知可致几秒内冲到 13 万 RPS。诚实备注:70TB/220 表、50 亿行大表等数字同样来自该客座文章。
机制根因
NoSQL 时代的扩容税在 ShareChat 身上表现为"超配":流量不可预测 → 为峰值预留 → 大部分时间空转。Spanner 的"计算存储分离 + split 自动分裂"把扩容从容量规划问题变成 API 调用;事务一致的二级索引让"按人查帖、按话题查帖"不用另建索引表(Cassandra 式架构要维护单独索引表并处理双写不一致)。500% 暴涨零改代码的本质:分片逻辑收在数据库内部,应用层没有分片键概念。
教训
迁移前用生产流量做影子压测(PoC 4 个月、百万 QPS)是零停机迁移的前提;wrapper 隔离层让"换数据库"与"改业务代码"解耦;为不可预测流量设计的系统,选型时应把"超配浪费"而非"峰值单价"作为成本比较基准——这正是 ShareChat 算出降本 30% 的口径背景。
来源
  1. Google Cloud 博客客座文章《Social media ShareChat migrated legacy databases and more to cloud》(ShareChat 团队撰写) https://cloud.google.com/blog/products/databases/social-media-sharechat-migrated-legacy-databases-and-more-to-cloud
  2. Google Cloud 博客《Using Spanner for non-relational workloads》(引述 ShareChat 降本 30% 引言) https://cloud.google.com/blog/products/databases/using-spanner-for-non-relational-workloads

相关产品:Google Spanner 相关能力:TrueTime + 外部一致性 —— 全球多活强一致的唯一解 最后核验:2026-10-02

TimeTree:5500 万用户时撞上 Aurora MySQL 上限,迁 Spanner 降本增效(2025) 成功经验

Aurora 扩容瓶颈 MySQL 生态迁移 日历社交
场景
日本日历共享应用 TimeTree,用户达 5500 万时,"在数据量与活跃连接数两方面撞上 Aurora MySQL 的扩展上限"(SRE 经理 Eiki Kanai)。同时应用团队把过多时间花在管理数据库上,挤占功能开发。
决策
迁往全托管 Spanner,用 Spanner migration tool(SMT)做在线迁移。2025 年发布的能力降低了迁移摩擦:repeatable read 隔离级别(preview,常见负载延迟最高降 5 倍)、auto_increment 主键、SELECT…FOR UPDATE、近 80 个 MySQL 函数。
结果
Eiki Kanai 称"显著降本、支撑未来增长","在 Google Cloud 支持与迁移工具帮助下,以最小停机完成迁移"(客户口径)。Google 引用的 Forrester TEI 称复合组织三年 ROI 132%、总收益 $7.74M(第三方咨询机构口径,样本为"代表性复合组织"而非 TimeTree 本身)。
机制根因
Aurora 的写上限是单 writer 实例上限 + 连接数上限的双重天花板;5500 万用户的日历共享是典型的"高扇出读 + 热点写"(同一家庭/团队日历被多人同时改)。Spanner 的多写 + 水平扩展解开写上限;repeatable read 让 MySQL 习惯的默认隔离语义得以保留,避免全量改写事务代码——这正是 2022 年 Mercari 评估时缺失的能力(见本批反例),选型结论随产品演进而过期。
教训
Aurora 用户的扩容天花板是"可预期的",应在连接数/存储达上限 70% 时就开始评估 NewSQL,而不是撞墙后;迁移工具链(SMT 反向复制、回滚)与语义兼容(隔离级别、auto_increment)同等重要;引用 Forrester 类报告时必须说明是"复合组织"建模而非被访客户实测。
来源
  1. Google Cloud 博客《Migrating from MySQL to Spanner is easier now》(2025 年,含 TimeTree 引言与 Forrester TEI 数据) https://cloud.google.com/blog/products/databases/migrating-from-mysql-to-spanner-is-easier-now

相关产品:Google Spanner、Amazon Aurora 相关能力:— 最后核验:2026-10-02

Uber:履约平台从 Cassandra + Saga 重构到 Spanner,撑起每日数十亿事务 成功经验

跨城履约 NoSQL 迁 NewSQL 强一致重构 补偿事务消除
场景
Uber 履约平台是"去任何地方、得任何东西"战略的地基,承载出行与外卖全品类的订单生命周期:超百万并发用户、每年数十亿行程、每天数十亿数据库事务,数百个微服务以它为订单与司机状态的可信源。旧架构(2014 年)是 Cassandra + Redis + Ringpop + 应用层 Saga:可用性优先、一致性靠尽力而为,跨实体写由应用层 Saga 拆成 propose/commit/cancel 三阶段协调。
决策
Uber 下注彻底重写(博客原话"two years ago, we made a bold bet"),存储层三选一:修补 NoSQL、自建 MySQL 分片、换 NewSQL。按可用性 SLA、运维开销、事务能力、schema 管理、分片管理、自动扩展、水平扩展等数十项维度打分并做基准测试后,选定 Google Cloud Spanner 为主存储引擎,采用北美多 region 配置 nam3。核心逻辑:把事务协调从应用层下沉到数据库层。
结果
约两年的重写与迁移后,"所有 Uber 产品与城市"切到新栈,100+ 工程师、30+ 团队参与(Uber 官方口径)。未披露延迟与成本对比数字。诚实细节:Uber 履约服务跑在自有机房,每笔事务都要跨网调用 Google Cloud 上的 Spanner,强一致的代价是每笔写的跨云 RTT,博客未量化。
机制根因
旧架构的病根是"一致性外包给应用层"。Cassandra 的 last-write-wins 语义下,部署与 region 切换时的脑裂会产生并发写互相覆盖;Saga 让逻辑事务长期处于内部不一致态,排查一次跨实体问题要跨多个服务。Spanner 的外部一致性 + 跨表跨分片事务把这套复杂性收回数据库内核:DML 服务端事务缓冲、锁冲突检测与死锁避免、stale read 支持,让应用层从"编排一致性"退化为"声明事务边界"。本质是把分布式协调从业务代码移到了经过严格验证的数据库内核。
教训
当 Saga 补偿代码超过业务代码、查一次数据不一致要跨三个团队时,就是 NoSQL 语义不够用的信号;选型要把"为弥补数据库语义缺失而写的应用层胶水代码"计入 TCO,Spanner 的账单应与这部分人力成本一起算;跨云调用 Spanner 时 region 拓扑与自有机房的距离直接决定写延迟,网络架构要先于 schema 设计。
来源
  1. Uber 工程博客《Uber's Fulfillment Platform: Ground-up Re-architecture to Accelerate Uber's Go/Get Strategy》 https://www.uber.com/ng/en/blog/fulfillment-platform-rearchitecture/
  2. Google Cloud 博客《Using Spanner for non-relational workloads》(引述 Uber 案例,确认补偿事务细节) https://cloud.google.com/blog/products/databases/using-spanner-for-non-relational-workloads

相关产品:Google Spanner、Apache Cassandra / ScyllaDB、Redis / Valkey 相关能力:TrueTime + 外部一致性 —— 全球多活强一致的唯一解 最后核验:2026-10-02

bet365:SQL Server 纵向扩展到 160 核见顶,分片被否决后选 Riak 失败教训

纵向扩展天花板 分片 NoSQL 选型 在线博彩
场景
在线博彩 bet365:后端基于 Microsoft SQL Server;随业务增长一路纵向扩展——HP Superdome Itanium(CIO 称"worked brilliantly")→ 160 核 x64 平台,但后端系统"扩展性依然不佳"(https://www.computing.co.uk/news/2384569/bet365-picks-bashos-riak-nosql-solution-ahead-of-nine-alternatives)
决策
否决分片——"分片自带问题,我们的应用特性与需求不适合";评估约 10 款产品(主流 NoSQL 厂商 + 实质卖分布式缓存的厂商)后选定 Basho Riak,把大块核心功能从 SQL Server OLTP 迁往 Riak OLTP。
结果
Riak 在故意制造故障的测试里最稳、恢复最快——"不是最快,但足够快",且可接近线性扩展(取决于复制因子与一致性配置);两大核心功能已在 Riak 上线,其余持续迁移中。
机制根因
博彩是写密集 + 强一致 + 低延迟的 OLTP:纵向扩展的天花板不是 CPU 核数,而是单机锁/闩锁的扩展性与故障域——160 核 SMP 上跨核同步开销吃掉扩展收益,而单机始终是单点;分片被否决是因为投注业务的跨分片事务与实时结算让应用层分片代价过高。于是只剩换架构一条路。
教训
纵向扩展有两层天花板:核数是看得见的那层,锁扩展性与故障域是看不见的那层,后者先到。bet365 的选型标准值得抄:在故障注入下最稳、恢复最快的赢,而不是 benchmark 最快的赢——"足够快 + 接近线性扩展(取决于拓扑与一致性等级)+ 故障时反应最快"才是生产选型公式。本案例与 PlentyOfFish、Stack Overflow 构成对称:纵向扩展的适用条件是负载形状,不是信仰。

相关产品:Microsoft SQL Server 相关能力:— 最后核验:2026-10-02

bwin.party:SQL Server 2014 内存 OLTP,同硬件吞吐 16 倍、18 台并 1 台 成功经验

纵向扩展 内存计算 在线博彩
场景
在线博彩公司 bwin.party,作为微软 TAP(Technology Adoption Program)客户,在 SQL Server 2014 正式发布(2014-04-01)一年多前就将其投入生产(https://www.eweek.com/database/microsoft-sql-server-2014-already-powering-production-workloads/)
决策
不换库、不分片、不加机器,用 SQL Server 2014 的内存 OLTP 等新能力扛在线博彩的请求洪峰,硬件保持不变。
结果
吞吐从旧版 SQL Server 的 1.6 万 req/sec 提到 25 万 req/sec(16 倍,同硬件);跑 SQL Server 的服务器从 18 台合并为 1 台,数据基础设施大幅简化。
机制根因
内存 OLTP 把热点行操作从"磁盘页 + 闩锁 + 锁管理器"的重路径搬进内存、用免锁数据结构,单核做的有效功跃升;同样的 CPU 核数直接换成吞吐,少机器又等于少故障域、少复制延迟。这类"换内核不换架构"的红利只吃得到一次,但一次就很肥。
教训
大版本内核能力(如内存 OLTP、列存储)有时一次吃掉多年"要不要换库"的争论,升级前先算新版本能给你什么。但本例数字来自微软口径(Azure 客户咨询团队总经理 Mark Souza),且是在线博彩特定的读写模式下的结果——照搬前先确认自己的热点模式是否同类。
来源
  1. eWeek(转述微软 Azure 客户咨询团队总经理 Mark Souza

相关产品:Microsoft SQL Server 相关能力:— 最后核验:2026-10-02

DocuSign:SQL Server 分析侧"力不从心",迁 Snowflake 失败教训

数据仓库 上云迁移 BI SaaS
场景
电子签名 SaaS DocuSign:业务与数据快速增长,"SQL Server 数据库已力不从心(was falling short of its needs)",决定迁到 Snowflake(https://www.fivetran.com/case-studies/case-study-docusign)
决策
分析负载从 SQL Server 迁到 Snowflake(存算分离、弹性扩展),再用 Fivetran 把数据源管道自动化,不再手写维护 ETL。
结果
可用数据源从 SQL Server 时代的 6 个变成 3 倍(新增十几个);100+ Qlik 仪表盘被全公司日常使用;BI 高级经理 Marcus Laanen:"Snowflake has been a game-changer for us……任何 SQL 查询都比以前快得多。"
机制根因
"一个库既跑业务又跑分析"是典型反模式:分析查询抢缓冲池、锁阻塞 OLTP,还得按峰值预配硬件;Snowflake 的存算分离让分析并发与数据量解耦——这不是"SQL Server 慢",是把 OLAP 负载从行存 OLTP 引擎上卸载。
教训
当"SQL Server 不够用"的抱怨来自 BI/分析侧时,先问是不是把 OLAP 负载压在了 OLTP 引擎上——Xero(Redshift)是同一剧本的另一版本。注意本案例出自 Fivetran 厂商稿,"falling short"的具体指标未披露,证据强度弱于 eHarmony、VSTS 的第一人称事故记录,引用时应标注口径。
来源
  1. Fivetran 厂商案例(DocuSign BI 高级经理 Marcus Laanen 引言) https://www.fivetran.com/case-studies/case-study-docusign

相关产品:Microsoft SQL Server、Snowflake 相关能力:— 最后核验:2026-10-02

eHarmony:SQL Server 2000 扛不住 1200 TPS,14 个月迁到 Oracle RAC 失败教训

纵向扩展天花板 迁移 集群 高并发写入
场景
婚恋网站 eHarmony:1700 万注册用户、日均新增 1 万;29 维兼容性匹配驱动 1200 TPS;2005 年中业务高峰(周日、周一与假日夜晚),跑 SQL Server 2000 OLTP 库的 8-CPU 双核机器频繁打满 100% CPU(https://www.informationweek.com/it-sectors/field-report-eharmony-finds-a-compatible-database)
决策
不等 SQL Server 2005(决策时未发布),用 14 个月把 OLTP 迁到 Oracle Database 10g + RAC + Clusterware(Sun Fire X4600,Windows);数据仓库也一并迁到 Oracle,"换了生产源库,跟一个供应商走最省事"。
结果
切换后性能提升 30%,达到亚秒级响应;代价是 14 个月迁移工程 + Oracle 许可与硬件账单。
机制根因
瓶颈不是 4TB 数据量("这点量不算什么"),而是 1200 TPS 的事务并发:单机 SQL Server 2000 的锁/闩锁与调度器在高峰期把 8 核吃满,且当时的 SQL Server 没有真正的多活集群能力(AlwaysOn 要到 2012 年才来),"加机器"无处可加;Oracle RAC 恰好把集群做进数据库内核,"可以往集群里加机器"是打动 eHarmony 的关键。
教训
区分"数据量天花板"和"事务并发天花板":4TB 对 SQL Server 毫无压力,1200 TPS 才是杀手。eHarmony 技术 VP Mark Douglas 的原话值得钉在墙上——"SQL Server 多年表现很好,只是到了需要集群这类能力的那一刻,微软给不出"。选型时要把"未来三年可能需要的能力"(集群、分区)写进决策表,而不是只看当下够用。
来源
  1. InformationWeek(技术 VP Mark Douglas 第一人称访谈) https://www.informationweek.com/it-sectors/field-report-eharmony-finds-a-compatible-database

相关产品:Microsoft SQL Server、Oracle Database(甲骨文) 相关能力:AlwaysOn 可用性组 —— "大铁块"的高可用 最后核验:2026-10-02

PlentyOfFish:1 人运维,SQL Server 纵向扩展扛下 60 亿月 PV 成功经验

纵向扩展 内存优先 运维简单 个人开发者
场景
免费交友网站 PlentyOfFish:高峰 60 亿月 PV、320 亿图片请求/月;全站只有 1 名员工(创始人 Markus Frind),少数几台服务器,每天只花几小时运维(https://highscalability.com/gone-fishin-plentyoffish-architecture)
决策
不分片、不换 NoSQL:核心库 SQL Server 2008,直接升级到 512GB 内存、32 CPU 的"大铁块"(Windows 2008);读写分离、反范式化、把工作集塞进内存;图片走 Akamai CDN。
结果
单人运维撑住数十亿级月访问;Google 广告年收入 600 万–1000 万美元。
机制根因
工作集能装进内存时,SQL Server 的缓冲池就是索引:读走内存、热点写走内存页,IO 从关键路径上消失;读写分离 + 反范式把锁等待和 join 开销砍到最低;瓶颈收敛到单机后,运维复杂度是 O(1)——而人是最贵的变量。创始人原话:"RAM solves all problems. After that it's just growing using bigger machines."
教训
读多写少、热点可缓存、数据装得进内存,是纵向扩展的"甜区":先算工作集/内存比,再谈分片。对称面是 bet365——同一公式在写密集型博彩负载下会撞墙,说明纵向扩展的适用条件是负载形状,不是信仰。

相关产品:Microsoft SQL Server 相关能力:— 最后核验:2026-10-02

VSTS 2016 年故障:一个存储过程拖死 SQL 后端,故障转移也救不了 失败教训

运维事故 内存泄漏 故障转移 高可用
场景
微软自家的 Visual Studio Team Services(跑在 Azure 上、宣称 99.9% SLA 的代码托管与协作平台):2016-02-04 09:10–14:28 UTC,全球用户无法登录,持续约 5 小时(https://www.theregister.com/2016/02/05/microsoft_explanation_for_visual_studio_online_outage_leaves_open_questions/)
决策
按标准剧本,工程师先把 SQL 数据库故障转移(failover)到新主,指望新主恢复服务。
结果
故障转移只换来短暂缓解——同一个存储过程在新主上继续疯狂分配内存,新主很快也被拖进无响应;最终靠"给该存储过程手动分配内存上限"才止血。
机制根因
故障转移换的是"哪台机器当主",不换"谁在干坏事":泄漏内存的存储过程是负载本身,跟着连接一起漂到新主;SQL Server 的资源调控器没有给它设上限时,单个坏查询可以饿死整个实例。高可用解决的是机器故障,不解决"有毒负载"——后者是负载问题,不是拓扑问题。
教训
故障转移 ≠ 故障隔离:有毒负载会跟着流量走,新主一样死。生产必备:给关键存储过程/工作负载设内存与 CPU 上限(Resource Governor 或等价手段);监控要盯"单个过程的内存分配增速",而不是只看实例级水位——等实例水位报警时,转移已经来不及了。

相关产品:Microsoft SQL Server 相关能力:AlwaysOn 可用性组 —— "大铁块"的高可用 最后核验:2026-10-02

Xero:30TB SQL Server 数仓库迁 Amazon Redshift 失败教训

数据仓库 上云迁移 列存储 SaaS
场景
SaaS 会计软件 Xero(140 万订阅者、180+ 国家):BI 团队早年用 SQL Server + WhereScape RED 建数仓并成功运行多年;后公司整体迁 AWS,数仓 30TB、590 亿行、3000 应用、120 个数据库必须上云(https://www.wherescape.com/media/3727/xero-uses-wherescape-automation-for-amazon-redshift-case-study.pdf)
决策
数仓的数据库平台从 SQL Server 换成 Amazon Redshift;用 WhereScape 自动化把 30TB SQL Server 数仓整体迁移上 Redshift,保留原有逻辑与流程。
结果
一名开发人员、6 个月工作量完成迁移,赶上公司 deadline;之后 BI 团队得以利用云的弹性做大数据与数据科学。
机制根因
行式 OLTP 数据库做分析是结构性错配:590 亿行的扫描在行存下是全表 IO 地狱,而列存(Redshift)的压缩 + 列裁剪 + MPP 把分析查询降 1–2 个数量级(该迁移的实测对比:行存全表扫描 vs 列存+MPP,非通用加速比)。SQL Server 不是"不够好",是赛道不对——数仓场景下换列存不是优化,是换赛道。
教训
区分"OLTP 够用"与"OLAP 错配":Xero 的 SQL Server 数仓"成功运行多年"恰恰说明行存也能跑分析——直到数据量和并发分析需求把它变成成本黑洞。迁移的最大成本往往不在目标库,而在重写 ETL 逻辑:自动化工具(WhereScape 模板化代码生成)把 30TB 迁移压缩到 1 人 6 个月,这是本案例真正可复制的经验。注意本案例出自 WhereScape 厂商稿。
来源
  1. WhereScape 厂商案例 PDF(Xero 数据服务平台负责人 Nathan Griffiths 引言) https://www.wherescape.com/media/3727/xero-uses-wherescape-automation-for-amazon-redshift-case-study.pdf

相关产品:Microsoft SQL Server、Amazon Redshift 相关能力:— 最后核验:2026-10-02

Stack Overflow:不分片,纵向扩展 SQL Server 扛下 15 亿月 PV 成功经验

纵向扩展 运维简单 缓存 查询优化
场景
问答网站,月 15 亿页面浏览量;查询模式简单,以问答的读写为主,没有复杂的分析负载(http://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/)
决策
不分片、不换 NoSQL,选择纵向扩展:单主 + SQL Server AlwaysOn 异步副本;Dell R720xd(384GB 内存、4TB PCIe SSD)少数几台机器扛下全站;全站只有一个存储过程,数据访问走 Dapper 微 ORM。
结果
少数几台机器扛下全站流量,架构极简,运维负担极低。
机制根因
"Our usage of SQL is pretty simple. Simple is fast." 查询简单意味着索引覆盖 + Redis 缓存就能解决绝大多数压力;单机纵向扩展的天花板远比直觉高;避开重型 ORM 在热点路径上生成低效 SQL,等于把单机性能吃满。
教训
"不换"的机制条件:查询模式简单且热点可缓存、写入量未触及单机天花板。顺序应该是先优化查询、再加硬件、最后才重构架构——纵向扩展 + 激进缓存是性价比最高的"不选型"。一旦查询复杂度或写入并发突破单机天花板,这个公式立即失效,届时再谈分片。
来源
  1. Nick Craver 架构博客(Stack Overflow 官方架构师) http://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/

相关产品:Microsoft SQL Server 相关能力:AlwaysOn 可用性组 —— "大铁块"的高可用 最后核验:2026-10-01

Airbnb:指标平台 Minerva 与风控分析从 Druid/Presto 迁往 StarRocks(2023–2025) 成功经验

指标平台 实时风控 BI 加速 Druid 替代
场景
Airbnb 的 Minerva 指标平台管理 12,000+ 指标、4,000 维度(CelerData 案例口径);原架构是每天把数万个指标反范式化成宽表,再灌入 Druid/Presto/Spark/Hive 做查询。痛点有三:Druid 对高基数维度聚合能力弱;维度定义一变,数年历史数据要重算;Tableau 无法直连 Druid,复杂查询走 Presto 要 10 分钟以上。与此同时,Trust(信任与风控)团队需要对实时更新的业务数据做秒级分析。(CelerData 官方案例,基于 Airbnb 数据基础设施工程师 Jingwei Lu 2025-03-15 直播分享整理 https://celerdata.com/hubfs/Airbnb_Case_Study.pdf?hsLang=en)
决策
Minerva 与 Trust 分析统一迁往 StarRocks。选型关键原因是 CBO + 向量化执行引擎对复杂 join/聚合的加速能力,以及 MySQL 协议带来的生态兼容(Tableau 直连、98% SQL 兼容)。Trust 场景用了 StarRocks 的主键模型做实时更新,替代原来"天级产出"的风控分析链路。
结果
案例中给出的标杆查询——20 台 EC2 i3.8xlarge(32 vCPU/240GiB 内存/3TB SSD),3 张表(5 亿/60 亿/1 亿行)、4 个 join、3 个 distinct count,外加 JSON 解析与正则过滤——StarRocks 3.6 秒出结果,同一查询 Presto 要 3–4 分钟;TB 级数据 1 小时内完成导入。Tableau 侧从"查 10 分钟"变为秒级交互;Trust 风控分析从天级降到秒级。以上数字为 CelerData 厂商案例口径,未找到 Airbnb 官方工程博客的对应数字。
机制根因
按案例描述,Druid 路线的代价是"预聚合 + 反范式化":查询快的前提是 ETL 时把 join 做完、维度拍平,所以维度一变就要重算历史,灵活性很低;同一标杆查询 Presto 需要 3–4 分钟(案例口径),案例把选型理由归于 CBO 与向量化执行引擎。StarRocks 的做法是"实时更新的主键表 + 运行时的分布式 join":明细数据直接入,主键模型支持维度变更实时可见,CBO 决定 join 策略,分析师不再需要为性能预先 join。代价是把原来分散在 ETL、Druid、Presto 三处的调优工作,集中到了 StarRocks 集群的运维与 SQL 治理上。
教训
在 Airbnb 的配置下(12,000+ 指标、维度频繁变更,CelerData 口径),每天反范式化数万指标的 ETL 负担超过了查询本身,这时评估能实时 join 的引擎是合理的——这是该样本的经验法则,非定律;对 Airbnb 而言,BI 工具兼容性是硬约束:Tableau 直连 + MySQL 协议把他们的迁移摩擦降到最低;读厂商案例的 benchmark 查询要看"像不像自己的查询":4 join + distinct count + JSON/正则是 Airbnb 真实 workload 的样子,对有类似负载的团队比 TPC-H 更有参考价值。
来源
  1. CelerData 官方案例 PDF《Airbnb Case Study》(厂商渠道,内容基于 Airbnb 数据基础设施工程师 Jingwei Lu 2025-03-15 直播分享) https://celerdata.com/hubfs/Airbnb_Case_Study.pdf?hsLang=en

相关产品:StarRocks 相关能力:实时更新 + 多表 JOIN:终结"反范式化噩梦" 最后核验:2026-10-02

携程 UBT:用户行为追踪从 ClickHouse 迁往 StarRocks 存算分离(2024–2025) 成功经验

用户行为分析 存算分离 ClickHouse 替代 写入稳定性
场景
携程用户行为追踪(UBT)系统日增 30TB 数据,保留 30 天(部分表 1 年),总量约 1PB,最大单表 400TB、1.8 万亿行(以上规模数字均为携程工程师在原文中的自述)。原架构 gohangout + ClickHouse:历史数据回补会触发 ClickHouse 分区合并,CPU/IO 瞬间飙高,进而写入丢失、消费积压;扩容要做数据迁移;三副本存储开销大;大时间跨度查询慢。(StarRocks 官方 CSDN 账号,作者魏宁/携程大数据平台开发专家,2025-10-18 https://blog.csdn.net/StarRocks/article/details/153530204)
决策
链路换成 Flink + StarRocks shared-data(存算分离):计算节点不持久化数据(shared-data 架构的无状态计算层),扩缩容时数据不动,数据存对象存储;分区策略改为小时分区 + 128 buckets + zlib 压缩(省约 30% 存储);对小时级聚合查询建了分区级物化视图。
结果
存储总量 2.6PB 降到 1.2PB;节点数 50 降到 40;查询平均耗时 1.4s 降到 203ms(约 1/7);P95 从 8s 降到 800ms(约 1/10);写入吞吐 300 万行/秒(10GB/s);MergeCommit 优化后 IOPS 从 140 降到 10 以下(约 10 倍)、I/O size 降约 10 倍。以上数字来自携程工程师署名的实践文章(发在 StarRocks 官方渠道),非独立第三方复测。
机制根因
按原文描述,ClickHouse 部署中存储与计算在同一批节点:历史回补会触发分区合并,合并时的 CPU/IO 飙升直接打爆在线写入,导致写入丢失与消费积压;扩容则要做数据迁移(此处仅复述原文的现象描述,不展开 ClickHouse 内部存储机制的归因)。存算分离把这两件事解耦:写入抖动只影响计算节点,扩容加计算节点即可,数据不动;对象存储 + 副本数下降带来存储成本下降(原文:2.6PB 降到 1.2PB,携程口径)。代价是查询要从远端拉数据,对缓存(data cache)和网络提出了更高要求,携程为此做了大量 I/O 路径优化(MergeCommit 就是一例)。
教训
在携程 UBT 的规模下(日增 30TB、总量约 1PB,携程口径),shared-nothing 部署的运维负担(回补、扩容、副本)随数据量放大,存算分离是他们选择的规模化路径——这是单一样本的结论,不推导为普遍规律;在该案例中,分区粒度匹配查询模式——小时分区 + 高 bucket 数对应"按小时查行为";携程把物化视图建在查询模式稳定的小时聚合层,这个做法是否适用于其他场景,取决于查询模式是否同样稳定。
来源
  1. StarRocks 官方 CSDN 账号《携程 UBT 实践》(作者魏宁,携程大数据平台开发专家,2025-10-18) https://blog.csdn.net/StarRocks/article/details/153530204

相关产品:StarRocks、ClickHouse 相关能力:异步物化视图 + CBO 自动改写:查询加速的"隐形外挂" 最后核验:2026-10-02

得物:运营 B 端 StarRocks 流量切往 OceanBase(部分流量 POC 进行中)(2026) 失败教训

HTAP 替代 应用层分流之痛 行列混合
场景
得物的数据架构里,StarRocks 承担了 B 端分析流量:商家 B 端大促活动走 StarRocks、小活动走 MySQL,中间靠同步工具把 MySQL 数据同步到 StarRocks;运营 B 端则原本全部走 StarRocks。应用层要手动判断流量该走哪个库,写错路由就查错数据;MySQL 与 StarRocks 存两份数据,存储重复;还多了一条同步链路要运维。(第三方学习笔记转述得物技术公众号文章 https://github.com/ygrowly/marvis/blob/HEAD/docs/%E6%95%B0%E6%8D%AE%E5%BA%93/OceanBase/%E5%BE%97%E7%89%A9%20-%20OceanBase%20%E5%AE%9E%E8%B7%B5.md ;笔记注明原出处为得物技术文章《得物 OceanBase 实践》,作者菲利斯、未文,2026-07-08)
决策
引入 OceanBase(行列混合的 HTAP),把 StarRocks 的部分流量切到 OceanBase 做 POC;运营 B 端已全部切到 OceanBase。选型逻辑:OceanBase 一套系统同时扛 TP 写入与 AP 查询,应用层不再需要手动分流,同步链路也可以砍掉。
结果
据笔记转述的原文口径:存储从 TB 级降到百 GB 级;压缩率比 StarRocks 高 30%;聚合与范围查询平均快 65%(各场景 10%–90% 不等);高 QPS 点查与 MySQL 相当、显著优于 StarRocks;OceanBase 写入后完全实时可见,而 StarRocks 有秒级写读延迟。——以上数字全部来自第三方笔记对得物技术文章的转述,未找到得物官方或 OceanBase 官方的对应发布,引用时必须注明口径;原文微信链接因平台验证限制未能直接打开核验。另据笔记,截至 2026-07-08 文章发表时,运营 B 端已全量切换,但部分流量的 OceanBase POC 仍在进行中(未完成)。
机制根因
StarRocks 是为 OLAP 生的:列存、批量写入、高吞吐扫描;但 B 端业务的查询画像是"高 QPS 点查 + 频繁小批量写入 + 事务语义",这是 OLTP/HTAP 的主场。在得物 B 端这类"高 QPS 点查 + 频繁小批量写入 + 事务语义"的负载下,StarRocks 的秒级写读延迟与点查性能成为瓶颈(得物文章口径);这是否是 OLAP 引擎的普遍短板,单一样本无法证明。OceanBase 的行列混合存储让同一份数据既能做事务写入点查,又能做列存分析,替代了"MySQL + 同步 + StarRocks"的三段式架构。故事的另一面是:当初"小活动走 MySQL、大活动走 StarRocks"的应用层手动分流,本质是把本该由数据库解决的路由问题推给了业务代码,这是典型的架构债。
教训
在得物 B 端这类"高 QPS 点查 + 频繁小批量写入 + 事务语义"的负载下,继续用 OLAP 引擎扛 TP 负载被证明走不通(得物口径);是否推广为一般规律,需要更多样本;应用层手动分流双写是危险信号——在该案例中它意味着数据架构缺了一块(能同时做 TP 和 AP 的引擎),其他场景是否同样成立需单独评估;看厂商/用户自述的替换案例时,注意"被替换方"的视角缺失:这篇是得物单方面口径,StarRocks 侧没有回应,数字不可直接当作两种产品的客观对比。
来源
  1. 第三方学习笔记 ygrowly/marvis《得物 - OceanBase 实践》(转述得物技术公众号文章,作者菲利斯、未文,2026-07-08

相关产品:StarRocks、OceanBase 相关能力:— 最后核验:2026-10-02

Didi:多 OLAP 引擎(Druid/Kylin/Presto/ClickHouse)统一到 StarRocks(2023) 成功经验

多引擎整合 成本优化 Druid 替代 实时监控
场景
滴滴的数据基础设施每天产生 PB 级数据,最初 OLAP 层是 Apache Druid、Apache Kylin、Presto、ClickHouse 的多种组合。随着数据量和分析需求增长,多引擎的问题全面爆发:运维复杂度高;各引擎功能差异大,用户搞不清该用哪个、SQL 方言还不互通;不支持实时流式写入/更新/删除;不支持开放表格式,扩展性跟不上。(StarRocks 官方博客,2023-12-01 https://www.starrocks.io/blog/reduced-80-cost-didis-journey-from-multiple-olap-engines-to-starrocks/)
决策
把 OLAP 统一迁往 StarRocks,看中的四点:统一平台整合实时与历史数据、高性能(列存 + 向量化 + 分布式)、弹性扩展、原生支持 Iceberg/Hudi/Hive/Delta Lake 的湖仓架构。
结果
监控告警业务(每秒 45 万条写入、日增 12TB):查询性能提升 4 倍,P90 从 500ms 降到 150ms;集群从 60+ 节点缩到不足 10 个;存储量减少约 40%;总体成本降低 80% 以上。金融数据门户(日增约 10 亿条):靠分区分桶、前缀/ZoneMap/布隆/Bitmap 索引与物化视图做到秒级响应,支持自定义时间维度和跨数据集 join。截至 2023 年,滴滴全公司 30+ StarRocks 集群、300+ TB 数据、日均 QPS 400 万以上,覆盖网约车、顺风车、两轮车、金融、能源多条业务线。以上为 StarRocks 官方博客口径(厂商渠道)。
机制根因
多引擎的本质成本是"能力交集":每个引擎只擅长一种场景(Druid 预聚合、Kylin Cube、Presto 联邦查询、ClickHouse 单表扫描),业务稍复杂就要跨引擎拼链路,数据搬运、口径对齐、运维排障的成本全是隐性的。按官方博客的说法,StarRocks 的"全场景"定位(实时写入 + join + 湖上查询)让一条链路覆盖原来四种引擎的场景,节点数从 60+ 降到 10 以内;省下的不只是机器,还有多引擎并存时的运维与排障人力(原文列为迁移动因之一)。代价是单引擎依赖:所有 OLAP 负载的稳定性都押在 StarRocks 一个系统上——这是架构集中化的固有 trade-off,原文未量化其风险。
教训
在滴滴 2023 年的规模下,"一个场景一个引擎"从早期的敏捷变成了技术债——这是该样本在该时代的结论;在滴滴的案例中,多引擎的隐性成本(人力、数据搬运、口径对齐)是迁移的主要动因之一,是否"经常超过"机器成本,单一样本无法证明;滴滴的选型标准是"场景覆盖度"而非单项性能冠军——这是该案例的选型逻辑;从数字看,节点数从 60+ 降到 10 以内是成本下降 80%+ 的重要组成部分(官方博客口径),各因素的具体贡献比例原文未披露。
来源
  1. StarRocks 官方博客《Reduced 80% cost! Didi's Journey from multiple OLAP engines to StarRocks》(2023-12-01,厂商渠道) https://www.starrocks.io/blog/reduced-80-cost-didis-journey-from-multiple-olap-engines-to-starrocks/

相关产品:StarRocks、ClickHouse 相关能力:实时更新 + 多表 JOIN:终结"反范式化噩梦" 最后核验:2026-10-02

汽车之家:多引擎对比测试后选 StarRocks,120 亿数据下 HLL 查询明显优于 ClickHouse(2021) 成功经验

PoC 选型评估 OLAP 选型 实时分析 多引擎对比
场景
汽车之家(NYSE: ATHM)智能推荐效果分析、物料点击曝光、流量宽表等场景需要秒级实时分析。原有方案痛点:Flink 聚合不灵活、需求多变时重复开发成本高;Kylin 预计算模型并发好但不支持明细下钻;TiDB 不支持预聚合模型,大数据量下在线聚合导致服务器压力骤增、查询性能不稳定。2021 年实时计算平台负责人邸星星牵头做多引擎选型。
决策
对 StarRocks 与常用 OLAP 引擎做对比测试,测试注明数据量/机器数/用例:vs Kylin(6 亿数据/2 台):命中物化视图场景下 StarRocks 媲美甚至超过 Kylin;vs ClickHouse(120 亿数据/4 台):Count 场景接近,HLL 非精确去重场景 StarRocks 明显更优(且 1.18 版 HLL 比 1.17 提升 3–4 倍);vs Doris(6 亿/2 台):向量化引擎带来 2–7 倍提升;vs Presto/Spark(10 亿/8 台对等资源):StarRocks 最优。ClickHouse 落选理由:运维成本高、多表关联弱。
结果
选定 StarRocks 为实时 OLAP 引擎。按汽车之家自述口径:统一了明细查询与预聚合两种模型、流批统一(一份引擎同时服务实时与离线)、MySQL 协议运维简单。生产落地两个业务:推荐服务实时监控(TP95 约 1 秒)、搜索实时效果分析(1.17 十几秒→升级 1.18 后四秒内)。业务规模口径:3000+ 协议/维度表、峰值 33 亿条/分钟、3 万亿/天、并发 33w/分钟。
机制根因
汽车之家的决策逻辑是"模型覆盖度"优先于"单项跑分":Kylin 赢在固定报表、输在明细下钻;ClickHouse 赢在明细扫描、输在关联与运维;StarRocks 的"明细 + 预聚合 + 向量化"三合一恰好覆盖其"既要下钻又要报表"的 workload。HLL 场景的胜出有版本注脚——1.18 针对 HLL 的优化是测试当时的增量红利,说明"拿哪个版本测"本身就是评估变量。
教训
多引擎对比测试必须注明数据量/机器数/用例三要素,否则倍数没有意义;"运维成本"要进打分项(ClickHouse 就是栽在这里);版本演进快的引擎,选型报告要写清测试版本号。**渠道注记:本文托管于镜舟官网(StarRocks 商业公司渠道),但为汽车之家工程师第一人称撰写的会议演讲实录,引用时须标注渠道。**
来源
  1. 邸星星(汽车之家实时计算平台负责人)《汽车之家 x StarRocks:极速实时数据分析实践》(2021-11-25,会议演讲实录,托管于镜舟官网) https://mirrorship.cn/zh-CN/cases/d/qichezhijia

相关产品:StarRocks、ClickHouse、Apache Doris 相关能力:明细与预聚合统一模型 最后核验:2026-10-02

TRM Labs:PB 级区块链分析从 BigQuery 迁往 Iceberg + StarRocks 湖仓(2024–2025) 成功经验

湖仓架构 BigQuery 替代 区块链数据分析 Iceberg
场景
TRM Labs 做区块链情报与反洗钱分析,数据平台要支撑 30 多条公链的 PB 级链上数据,峰值 500+ 查询/分钟,最大单个 workload 数据量 115TB 以上且每月增长 2–3%。查询模式是复杂多层 join 加 array 过滤,内部目标是 P95 在 3 秒以内。原架构是 BigQuery + 分布式 Postgres(Citus):BigQuery 满足不了"本地化多站点部署"(数据不能出境/多 region 部署),Citus 则在数据量和查询复杂度增长时扩展成本上升(以上均为 TRM 在博客中自述的迁移动因)。(https://www.trmlabs.com/trm-tech-blog/from-bigquery-to-lakehouse-how-we-built-a-petabyte-scale-data-analytics-platform-part-1)
决策
自建湖仓:存储层统一到 Iceberg(开放表格式,摆脱厂商锁定),查询层选 StarRocks 做高性能 serving 引擎。选型时 TRM 用自家负载做了 2024 年的 benchmark(2.57TB 数据集,TRM 自测口径):StarRocks 带缓存 470ms,对 Trino 1,030–1,410ms、DuckDB 2–3 秒;复杂聚合查询 StarRocks 无缓存约 2 秒、有缓存约 500ms,对 Trino 上限约 2.5 秒。TRM 在博客中明确写道,他们已经 "moved beyond traditional OLAP data stores (e.g., Clickhouse)"——即 ClickHouse 这类传统 OLAP 也在评估中被排除。
结果
TRM 自述迁移后查询 P95 降低 50%、查询超时降低 54%——两个数字均为 TRM 企业技术博客自述口径,未找到第三方独立复现。Iceberg 统一存储后,同一份数据可同时被 StarRocks(serving)、Trino/Spark(离线)消费,不再为每个引擎维护一份拷贝。
机制根因
BigQuery 的问题不在性能而在部署模型:serverless 按量计费 + Google 托管的公有云服务,从部署模型上就不支持 TRM 要求的本地化多站点;Citus 的问题在扩展模型:分布式 Postgres 的 coordinator 瓶颈与分片运维成本随数据量增加而放大(取决于分片策略与自动化程度)。StarRocks 在该 workload 上占优的可能原因有三(基于 TRM 公布的 benchmark 结果的分析,非 TRM 原文表述):列存向量化执行对"多层 join + array 过滤"友好、数据缓存让热查询进入亚秒(benchmark 明确对比了带缓存与无缓存)、CBO 能处理分析师手写的复杂 SQL。Iceberg 则解决了"一份数据多引擎读"的存储统一问题。代价是团队要自己运维整套湖仓(对象存储、表格式、引擎),把云厂商的托管红利换成了架构自主权——这笔账只在团队具备运维分布式系统能力时才划算。
教训
对 TRM 这类有数据本地化硬约束的公司,选 OLAP 引擎要先看部署约束再看 benchmark:在该约束下,BigQuery 得零分与其性能无关;"一份存储、多种消费"(Iceberg + serving 引擎)是 TRM 验证可行的架构,但前提是团队有运维分布式系统的能力——这是单一样本的结论,不推导为普适规律;benchmark 测自己的真实查询模式值得借鉴——TRM 的 2.57TB 数据集测的是他们自己的 join/array 负载而非 TPC-H 通用集,但结论只适用于 TRM 的负载特征。
来源
  1. TRM Labs 企业技术博客《From BigQuery to Lakehouse: How We Built a Petabyte-Scale Data Analytics Platform (Part 1)》(2025-01-29,一手来源) https://www.trmlabs.com/trm-tech-blog/from-bigquery-to-lakehouse-how-we-built-a-petabyte-scale-data-analytics-platform-part-1

相关产品:StarRocks、Google BigQuery、DuckDB 相关能力:— 最后核验:2026-10-02

腾讯微信:基于 StarRocks 的湖仓一体与实时增量物化视图(2024–2025) 成功经验

湖仓一体 实时物化视图 降本 离线加工
场景
微信内部多个业务(视频号直播、微信键盘、微信读书、公众号)的数据分析跑在 StarRocks 上,集群规模数百台,数据接入近千亿行。微信团队对 StarRocks 的定位很清晰:ClickHouse 是"实时数仓"(亚秒/实时/高 QPS/OLAP 为主),StarRocks 是"湖仓一体"(秒级/准实时/低 QPS/离线加工为主)——两者不是替代关系,而是分工。(技术大会演讲幻灯片,作者冯吕/腾讯微信 OLAP 内核研发工程师 https://ucasfl.github.io/slides/Lakehouse-practice-in-WeChat-based-on-StarRocks.pdf)
决策
在 StarRocks 上建湖仓一体架构:湖上直接建仓,离线加工任务跑在 StarRocks 而非 Spark;与社区共建"实时增量物化视图"能力;用基于全局字典的维表关联替代部分 Flink 实时任务。
结果
存储成本降低 65% 以上;直播业务在湖上建仓改造后,运维任务数减半;离线任务产出时间缩短 2 小时。以上为演讲人口径(腾讯微信工程师大会分享),未找到独立复测。
机制根因
传统"湖 + 仓"两套系统要维护两份数据和两套任务。按演讲人描述,StarRocks 的外表能力让"湖上建仓"成为可能:离线加工直接对湖里的数据做 SQL,产出 StarRocks 内表供查询,省掉 Spark 集群与数据搬运;"实时增量物化视图"(微信与社区共建的能力)用于替代部分 Flink 实时任务,维表关联基于全局字典。代价是把原来 Spark/Flink 生态承担的调度、容错,换成了对 StarRocks 单一引擎的深度依赖,对内核能力(如物化视图的正确性)要求极高——这部分风险演讲人未展开,此处不做推断。
教训
这是微信在该时期的分工决策:ClickHouse 管实时高 QPS,StarRocks 管湖仓离线加工——是否照搬取决于自家 workload 画像,而非唯性能论;在该案例中,湖仓一体的降本主要来自"少维护一套系统 + 少存一份数据",而不是查询更快;微信把实时增量物化视图的需求做成了上游特性——这是该案例的做法,有内核研发能力的团队可以借鉴,不推导为普适方法。
来源
  1. 技术大会演讲幻灯片《Lakehouse practice in WeChat based on StarRocks》(作者冯吕,腾讯微信 OLAP 内核研发工程师) https://ucasfl.github.io/slides/Lakehouse-practice-in-WeChat-based-on-StarRocks.pdf

相关产品:StarRocks、ClickHouse 相关能力:异步物化视图 + CBO 自动改写:查询加速的"隐形外挂" 最后核验:2026-10-02

富融银行:香港持牌数字银行 10 个月换"心",15 小时完成新核心切换(2024) 成功经验

银行核心系统升级 数字银行 核心切换 成本优化 出海
场景
富融银行是香港持牌的数字银行,2020 年 12 月正式开业。近几年业务快速发展,原有银行核心系统已不能完全满足日渐增长的服务需求。为给客户提供更优质高效的金融服务,富融银行 2023 年 12 月开启新一代银行核心系统切换项目。一个成熟的银行切换核心如同"飞机在空中换引擎":一方面要在符合监管要求和市场标准的前提下,完成涵盖零售存款、零售贷款、公司存款、公司贷款和外汇服务五个核心业务领域的 150 多个子系统的整合改造;另一方面从数据中心选址到上层应用,涉及大量数据迁移与系统切换,还要尽可能减少对用户的影响。
决策
依托微众银行自主开发的数字银行底座技术体系 + 腾讯云 TCE 专有云 + 腾讯云数据库 TDSQL,构建全新云计算环境并切换新一代核心。数据库选 TDSQL 的关键原因是其 100% 兼容 MySQL 的特性,可与富融银行基于 MySQL 的业务系统无缝整合;TDSQL 的批量迁移能力助力实现无感迁移,减少切换对用户的影响;TCE 则通过容器化部署提升资源使用效率。
结果
2024 年 10 月新一代核心系统成功上线,切换仅用时 10 个月,为香港银行核心系统升级树立新标杆;上线切换仅用 15 小时,在 6 小时的数据迁移窗口期内顺利将来自不同厂商的系统和数据迁移至新核心,实现无缝升级。富融银行副行政总裁、首席技术官邱家骅表示:预计与 2024 年相比,2027 年的 IT 非人力成本 3 年内将显著减少 53%,新需求开发时间由平均 6 个月下降至 3 个月。TCE 容器化使资源成本降低 40%,业务恢复时间 RTO 缩短至 30 分钟内。诚实标注:53% 降本与开发提速均为银行管理层的"预计"口径(2027 年对 2024 年的预测值),不是已实测结果;其余数字来自腾讯云厂商口径,未找到第三方独立复现。
机制根因
MySQL 100% 兼容是迁移可行性的前提——业务系统基于 MySQL 构建,无需重写即可无缝整合,这是"换引擎"风险可控的第一道保险;TDSQL 的批量迁移能力把 150+ 子系统、多厂商来源的数据在 6 小时窗口内搬完,迁移工具链的成熟度直接决定了切换窗口能否压缩到 15 小时;复用微众银行的数字银行底座技术体系,等于把一家互联网银行十年沉淀的架构拿来即用,避免了从零自研;TCE 容器化部署同时解决了资源效率(降本 40%)与 RTO(30 分钟内)两个问题。
教训
数字银行换"心"可以借力——"买成熟底座 + 换数据库"比从零自研快数倍到一个数量级(该项目 10 个月上线 vs 行业常见的数年周期——单一样本对比,不可推广为通用倍数),富融 10 个月上线 vs 行业常见的数年周期,差距主要来自底座复用而非数据库本身;把"切换时长"(10 个月、15 小时、6 小时窗口)作为公开承诺指标反向倒逼迁移工具链成熟,是项目管理的有效手段;成本数字凡是"预计"必须注明预测口径,53% 降本在 2027 年兑现前都只是管理层预期;香港持牌数字银行的案例说明 TDSQL 的金融叙事已经走出内地监管语境,在境外合规框架下同样成立,这是"政策红利型招牌"出海的一个实证注脚。
来源
  1. 腾讯云开发者社区《10个月换"心"!腾讯云数据库TDSQL助力富融银行核心系统升级》(腾讯云数据库 TencentDB 官方专栏,发表于 2025-02-20,原始发表 2025-02-19
  2. 文中数字为腾讯云/富融银行口径) https://cloud.tencent.com/developer/article/2498047
  3. 引述富融银行副行政总裁、首席技术官邱家骅、腾讯云副总裁胡利明

相关产品:腾讯云 TDSQL、MySQL 相关能力:微众银行全国首个分布式银行核心 —— 金融级生产实证 最后核验:2026-10-02

海峡银行:资产 2900 亿中小银行"小步快跑"去 IOE,新核心全面采用微服务 + TDSQL(2019–2023) 成功经验

去 IOE 银行核心系统 微服务改造 信创合规 两地三中心
场景
福建海峡银行是资产规模超 2900 亿元的中小银行典型代表。原有系统采用集中式 IOE 架构(IBM 小型机、Oracle 数据库、EMC 存储),在互联网金融浪潮冲击、用户线上化与个性化需求激增下,面临单点故障风险、高昂的更新维护成本(商用数据库与硬件被国外厂商垄断)、业务连续性保障压力,难以满足移动支付与线上金融业务爆发式增长所需的高并发、低延迟与弹性扩展需求。
决策
2019 年启动数据库应用研究,遵循"小步快跑、逐步推进、先试先行、真试真用"策略:2020 年在互联网电子渠道与信贷管理系统完成试点,验证 TDSQL 在日均百万级交易量下的稳定性(秒级响应)、数据一致性(多副本与跨 IDC 强同步)及灾备能力(双中心双活,异地准实时灾备,RPO=0、RTO<120 秒);2021 年开展微服务架构与分布式数据库适配攻关;2022 年新核心系统全面采用微服务 + TDSQL;2023 年进入全面推广阶段。选型时从自主可控度、切换耗时、成本投入、成熟度四个维度综合评估三个方案,放弃"沿用集中式架构"(方案 01)与"双轨并行"(方案 03),最终选择"国产分布式数据库替代集中式数据库"(方案 02),彻底摆脱 IOE 依赖。部署上综合规模体量与实施复杂度,选择微服务模式(非单元化模式),实现应用解耦与独立部署扩展。
结果
新核心系统、厅堂系统、企业服务总线等新建系统全面落地微服务应用与 TDSQL,替换 Oracle 数据库及小型机。高可用与容灾:两地三中心部署,同城 RPO=0、RTO<30 秒,异地 RTO<10 分钟,系统可用率 99.999%。性能与扩展:支持亿级账户,每日交易量 >5000 万,TPS≥5000,简单交易响应 <50ms,复杂交易 <200ms,日终批处理 <35 分钟。业务效率:热点账户机制使并发效率提升达数十倍。成本与自主可控:采用国产 X86 服务器与国芯服务器降低软硬件采购成本,实现数据库、应用层、基础架构自主可控。行业认可:2022 年入围工信部创新应用示范案例;新核心项目群获 2022 年度中国人民银行金融科技发展奖二等奖;2023 年度全国金融行业信创考核获"优等";连续四年高质量通过人行信创验收;2024 年发布企业标准《分布式数据库选型规范》(Q/FJHXB 00003—2025)。以上数字来源标注为"海峡银行部署架构指标/新核心系统性能指标"(银行与厂商联合口径),未找到第三方独立实测,引用时须注明口径。
机制根因
数据分片减轻单节点负担,支持故障自动转移与弹性伸缩,这是替换集中式架构的核心理由;多副本容灾与自动故障切换满足 RTO<30 秒、RPO=0 的选型硬标准;强一致性分布式协议保障分布式事务;热点账户机制专项解决银行核心的高频账户并发瓶颈(这正是第 47 维"热点数据更新能力"的真实生产注脚——海峡银行的实践说明热点问题在银行核心选型中是独立评估项);微服务模式(非单元化)在应用层解耦,让数据库分片与业务拆分同构演进。
教训
中小银行去 IOE 的"小步快跑"节奏值得复制——先外围系统试点、再核心攻关、最后全面推广,全程 4 年,没有"一步到位"的赌博;选型评估把"自主可控度、切换耗时、成本投入、成熟度"并列,而不是只看性能跑分,切换耗时和成熟度在银行场景里经常是否决项;试点阶段就定量验证 RPO/RTO,不要等到核心切换才发现容灾指标不达标;把内部选型经验沉淀为企业标准《分布式数据库选型规范》对外发布,既是信创考核"优等"的加分项,也是把一次性项目成本转化为行业影响力的做法。
来源
  1. 腾讯云开发者社区《海峡银行分布式数据库转型:以TDSQL实现核心系统自主可控与性能跃升》(作者授权原创,发表于 2026-04-17
  2. 文中数字为银行与厂商联合口径) https://cloud.tencent.com/developer/article/2656095
  3. 引述海峡银行数据库架构师朱正珊

相关产品:腾讯云 TDSQL、Oracle Database(甲骨文) 相关能力:"去 O"政策 + 金融合规 —— 政策红利型招牌、微众银行全国首个分布式银行核心 —— 金融级生产实证 最后核验:2026-10-02

昆山农商行:同类银行首个"微服务 + 国产分布式数据库"核心,一套 TDSQL 集群跑三个微服务集群(2021) 成功经验

银行核心系统 微服务架构 国产化替代 区域银行标杆
场景
昆山农商银行扎根全国百强县之首的昆山,是当地营业网点最多、服务覆盖面最广的银行。在数据库国产化的大背景下,"微服务如何跑在国产分布式数据库上、破除原先的集群模式"一直是技术难点——数据库的开发应用牵涉多项服务,要满足微服务架构、做到多个服务间数据一致性并非易事,跨服务数据查询也充满挑战。在此之前,TDSQL 已落地张家港农商银行,完成银行传统核心数据库首次国产化,但"微服务 + 国产分布式数据库"的组合在同类银行中尚无先例。
决策
历经 300 多个日夜,2021 年 8 月基于腾讯云 TDSQL 打造的新一代核心系统成功投产上线,采用"微服务应用 + 国产分布式数据库"架构(同类银行中尚属首次)。新核心采用长亮 V8 技术,无缝衔接国产分布式数据库 TDSQL,并融入微服务、读写分离、多源同步等技术,在保证金融级数据全局一致性的基础上,把大系统拆分成小型微服务。架构上设三个微服务集群(公共服务微服务集群、账务微服务集群、历史微服务集群),每个集群由功能职责单一、高度聚合的服务组成,可灵活部署——三个微服务集群运行在同一套 TDSQL 集群中。部署上采用两地三中心,数据库一主三备,中心间数据强同步,实现中心级别灾难快速自动恢复且数据零丢失。
结果
新核心系统整体处理能力 6300TPS,可支持每日亿级交易量;高频账户类交易平均响应时间 300 毫秒之内,查询类交易平均响应 100 毫秒之内;日终批量时间缩短至 8 分钟左右,季度结息 17 分钟左右;96 秒完成 10 万笔社保代发;性能远超原核心系统,在全国同类型银行中处于领先地位。以上数字全部来自腾讯云厂商口径,未找到第三方独立复现。昆山农商行的创新转型,被腾讯云定位为"微服务 + 国产分布式数据库"架构在银行业应用的标杆。
机制根因
微服务的横向扩展能力与场景化数据切分,契合金融科技创新对敏捷性的需求;TDSQL 的分布式能力解决了传统集中式核心的并发量瓶颈;多服务间的数据一致性难题由 TDSQL 的分布式事务与全局一致性机制兜底,这是"微服务 + 国产库"组合真正的技术门槛;一主三备 + 中心间强同步把 RPO 压到 0,中心级灾难可快速自动恢复;三个微服务集群共享一套 TDSQL 集群,说明分布式数据库的多租户承载能力足以支撑整行核心业务,而不需要"一个业务一套库"。
教训
2021 年对同类银行是"首例"——架构创新的窗口期红利真实存在,第一个跑通的银行拿到了标杆话语权;长亮 V8 这类银行应用厂商的适配是国产化落地的关键拼图,数据库厂商 + ISV 的联合交付模式比数据库单打独斗更重要;把公共服务、账务、历史三个集群跑在"一套 TDSQL 集群"上,验证了用一套分布式集群承载整行核心的可行性,这是后续银行选型时"合库还是分库"决策的直接参照;区域银行(农商行)反而比大行更早吃到"微服务 + 国产库"的红利——船小好调头,在核心系统换代窗口期敢下注,是中小银行的相对优势。
来源
  1. 腾讯云开发者社区《首例"微服务+国产分布式数据库"架构,TDSQL助力昆山农商行换"心"》(腾讯云数据库 TencentDB 官方专栏,发表于 2021-10-11,原始发表 2021-10-09
  2. 文中数字为腾讯云厂商口径) https://cloud.tencent.cn/developer/article/1886840

相关产品:腾讯云 TDSQL 相关能力:"去 O"政策 + 金融合规 —— 政策红利型招牌 最后核验:2026-10-02

微众银行:全国首个分布式银行核心,应用层分片 + TDSQL noshard 跑出银行账务(2014–) 成功经验

银行核心账务 分布式架构 应用层分片 同城多活 去 IOE
场景
2014 年微众银行成立之时,前瞻性地确立了分布式 IT 架构方向:摒弃传统银行依赖商业数据库、商业存储、大中型服务器的集中式架构,走互联网模式的分布式架构。当时除了 Oracle 等少数传统商业数据库,能满足金融级银行场景的数据库产品并不多。腾讯内部有一款金融级分布式数据库 TDSQL,主要承载腾讯内部计费和支付业务,其业务场景与可靠性要求和银行场景非常类似,且经受了腾讯海量计费业务的验证。微众银行基础架构团队经过多轮评估测试,决定与腾讯 TDSQL 团队合作,共同把 TDSQL 打造成适合银行核心场景的金融级分布式数据库。
决策
微众银行把 TDSQL 用于核心系统数据库,但在架构路线上做了一个关键抉择:是采用 TDSQL 的 shard 模式(数据库做 AutoSharding),还是在应用层做分布式、数据库用 TDSQL noshard 模式?经过大量调研分析,微众认为应用做分布式是最可控、最安全、最灵活、最可扩展的模式,于是设计了基于 DCN(Data Center Node,数据中心节点)的分布式可扩展架构——一个 DCN 是包含完整应用层、接入层和数据库的自包含逻辑单元,可通俗理解为"线上的虚拟分行",按账户分段把客户划分到不同 DCN;GNS(Global Name Service)保留全局路由信息(用 Redis 缓存 + TDSQL 持久化);RMB(Reliable Message Bus)负责业务系统间可靠消息通信。数据库层采用 TDSQL noshard 单实例模式,保证数据库架构的简洁性与业务层 MySQL 兼容性,把分片复杂度留在应用层。
结果
微众银行建成两地六中心架构(深圳 5 个 IDC 为生产中心,上海 1 个 IDC 为跨城异地容灾;深圳同城 IDC 间距离控制在 10–50 公里,ping 延迟 2ms 左右);数据库采用"同城 3 副本 + 跨城 2 副本"的 3+2 noshard 部署,同城 RPO=0、RTO 秒级恢复(主备切换 30 秒内完成),跨城 2 副本经同城 slave 异步复制做容灾。规模上:TDSQL SET 个数 350+(生产+容灾),数据库实例 1700+,整体数据规模 PB 级,承载数百个核心系统;业务高峰日金融交易量 3.6 亿+,最高 TPS 10 万+;有效客户数过亿级。4 年多运营中 TDSQL 未出现大的系统故障或数据安全问题,TDSQL 承载了微众银行 99% 以上线上数据库业务。以上数字全部来自腾讯云/微众银行联合口径厂商口径,未找到第三方独立复现。顺带诚实记录:微众后来也引入了 TiDB,解决"无法拆分 DCN、但单库需要超大容量或超大吞吐"的非联机场景——TDSQL noshard 单库容量上限是这套架构的已知边界。
机制根因
TDSQL 在 MySQL/MariaDB 内核复制模块做了系统级优化,实现多副本强一致同步(RPO=0,数据 0 丢失);Agent 上报监控信息到 ZooKeeper,Scheduler 按集群状态启动调度任务,实现 30 秒内的自动化主备强一致切换;针对同城跨 IDC 强同步场景做了内核级优化(队列异步化、并发复制),基准测试显示跨 IDC 强同步对联机 OLTP 的性能影响仅在 10% 左右;批量场景则用 WATCH 节点机制规避跨 IDC 延迟放大——在原来一主两备之外,额外部署一个与主节点同 IDC 的 WATCH 节点(异步同步、不参与选举),批量 APP 与主节点同 IDC 部署,避免跨 IDC 访问的时延累积,同时主节点 binlog 仍需同步到跨 IDC 的两个备节点才算事务成功,容灾特性不受影响。架构哲学的差异值得标注:与 OceanBase/TiDB"数据库内部做分片"不同,微众选择了"应用层 DCN 分片 + 数据库 noshard",用应用层的路由规则换取数据库层的简洁与 MySQL 完全兼容。
教训
"用分布式数据库"不等于"用数据库的分片"——微众证明了应用层分片 + noshard 同样能跑出银行核心,选型时应把"分片放在哪一层"作为独立决策项;同城多活的真正门槛是网络(10–50 公里、2ms、IDC 间多条专线),不是数据库功能清单,网络不达标时强同步的代价会吃掉所有理论收益;联机与批量要分开部署拓扑(WATCH 节点),批量 APP 的跨 IDC 访问延迟会被"累积放大",这是容易被忽视的隐性成本;2014 年就敢把核心放在分布式数据库上,"第一个吃螃蟹"的信任状本身成了 TDSQL 后续 4000+ 客户拓展中最硬的招牌——先行者红利在金融业是真实存在的销售杠杆。
来源
  1. 腾讯云开发者社区《金融级分布式数据库打造!TDSQL 在微众银行的大规模实践》(2023
  2. 文中数字为腾讯云/微众银行口径) https://cloud.tencent.com/developer/news/416414
  3. 作者胡盼盼(微众银行数据库平台负责人)、黄德志(微众银行数据库平台高级 DBA)

相关产品:腾讯云 TDSQL、Oracle Database(甲骨文)、TiDB 相关能力:微众银行全国首个分布式银行核心 —— 金融级生产实证 最后核验:2026-10-02

微信支付:TDSQL PG 版承载数据密集型应用,百亿级模糊检索从 17 秒降到 50 毫秒(2021) 成功经验

数据密集型应用 报表系统 维表系统 数据倾斜治理 PostgreSQL 兼容
场景
微信支付的商户服务平台为千万级商家提供账单明细下载、复杂条件查询与统计分析。平台最初以开源 MySQL 作为底层存储,随着京东等大商户接入、交易笔数持续提升,单机存储容量受限,微信支付遇到严重的容量瓶颈与性能瓶颈。在当时的技术背景下,团队需要一个能同时解决"存不下"和"查不动"的方案,于是选择了 TDSQL PG 版(开源代号 TBase)。
决策
微信支付把商户服务平台的底层存储从开源 MySQL 迁移到 TDSQL PG 版;2021 年又进一步基于 TDSQL PG 版搭建数据仓库的维表管理系统(管理 2700+ 枚举值),让它成为大数据生态中的重要组件。选型逻辑是:商户平台的痛点不是单纯的 OLTP 写入,而是"海量存储 + 复杂查询 + 实时报表"的混合负载,PG 系的索引类型与并行能力比 MySQL 系更对味。
结果
报表系统累计承载微信支付 3600+ 报表的数据写入、存储与读取,报表打开时间稳定控制在 3 秒以内;百亿级数据中模糊检索商户名称的场景,查询耗时从接近 17 秒降到 50 毫秒以内;维表系统打通后,OLTP 录入的枚举值变更能被 Spark 计算、报表系统实时引用。整体运营规模上,微信支付在 TDSQL PG 版的存储量达到 400TB+,每秒请求量超过 24 万次,99.6% 的请求耗时控制在 10 毫秒以内。以上数字全部来自腾讯云数据库官方博客厂商口径,未找到第三方独立复现。
机制根因
容量问题靠 TDSQL 的海量数据在线线性扩容解决;大商户的数据倾斜问题靠双 KEY 分布机制让数据均匀分布到多个分片——这是微信支付商户平台实践沉淀下来的机制,后来成为 TDSQL 分片文档里的标准解法;分页查询性能问题靠基于 Index only scan 的索引优化,解决了传统 Web 应用分页场景"查总条数耗时高"的顽疾;报表系统的双写入模型(Spark 离线周期性写入 + 消息队列实时写入,单次写入可达十亿/百亿级)对底层并行写入能力要求极高,TDSQL PG 版的并行写入性能明显优于开源 MySQL,大幅降低了数据入库完成时间。维表系统的本质是 OLTP 与 OLAP 能力的融合:在 OLTP 维表管理系统中录入或更新枚举值后,在线业务、Spark 计算、报表系统都能实时引用同一份数据,避免了"上游改了枚举、下游无感知"的质量风险。
教训
17 秒到 50 毫秒的差距主要来自索引类型与并行写入能力,不是靠加机器堆出来的——"查不动"的问题要先看执行机制再谈扩容;"大客户数据倾斜"是分布式选型的典型信号,商户/租户平台类业务选型时应把倾斜治理机制列为必查项;报表 + 维表这类"数据密集型"场景是 PG 系分布式数据库的甜点区,MySQL 系方案在复杂查询和索引丰富度上天然吃亏;腾讯高级工程师万志颖把微信支付与 TDSQL PG 版的关系形容为"你侬我侬"——超大规模业务是最好的产品试炼场,但这也意味着案例里的优化(如双 KEY 分布)高度贴合微信支付的业务形状,照搬前要先确认自己的倾斜模式是否同构。
来源
  1. 腾讯云数据库官方博客园《TDSQL 在微信支付数据密集型应用落地实践》(发表于 2021-09-02
  2. 文中数字为腾讯云厂商口径) https://www.cnblogs.com/tencentdb/p/15219351.html
  3. 案例由腾讯高级工程师万志颖介绍

相关产品:腾讯云 TDSQL、MySQL 相关能力:— 最后核验:2026-10-02

BookMyShow:Galera 脑裂后换 TiDB,6 人团队卸下专职 DBA(2019 前后) 成功经验

Galera 脑裂 微服务数据管道 运维减负 评估选型
场景
BookMyShow(印度最大在线票务,2007 年成立,5000 万+用户、650+ 城市,每周数百万交易)走微服务架构,需要一条统一的数据管道把各服务数据送进大数据平台,担子落在 6 人数据运维团队肩上。当时用 Galera:主主复制、每节点全量数据,数据量上 TB 后扩缩容与资源利用率双双恶化,还要搭进去一个工程师专职看库。一次严重脑裂——两个主库完全失步,全队花 2–3 天才恢复——成为换架构的导火索。(公司与业务数字为 PingCAP 刊载的 BookMyShow 团队自述。)
决策
候选 TiDB、Greenplum、Vitess,基于论文、博客、案例研究一轮筛选后重点评估 TiDB 与 Greenplum。TiDB 胜出理由很朴素:部署快、灌数据快——"负责评估 Greenplum 的同事还没搞定部署,TiDB 这边已经灌上数据了"。历史数据用 Spark 流式导入;最终架构为 MS SQL → Kafka → TiDB,交易数据近实时同步。
结果
TiDB 中约 5TB 数据、预计涨到 10TB;可用性提升;运维成本降 30%(BookMyShow 工程师原话,经 PingCAP 刊载,未找到 BookMyShow 官方独立披露);不再需要专职 DBA,只有慢查询和扩容时才需要管库。踩过的坑也如实记录:曾自定义调大 Region 大小(默认 96MB)与 gRPC 连接数导致性能变差,找 PingCAP 才解决;Grafana 指标太多却无指引,"信息过载、无从下手"。
机制根因
Galera 的病根是"主主 + 全量复制":每加一个节点就多一份全量数据,TB 级后扩容模型失效;一次脑裂的恢复成本是全队 2–3 天。TiDB 的自动分片 + Raft 把"数据怎么切、副本放哪"自动化,RocksDB 底层又给了单机性能底子,小团队才敢把库交出去。Spark/Kafka 的导入与同步链路说明:换库不只是换引擎,还要重搭数据管道,管道成本要计入迁移预算。
教训
把"脑裂恢复的人力成本"计入 TCO,主主架构的账不能只算硬件;小团队选型应把"是否需要专职 DBA"作为硬指标——BookMyShow 用 6 人团队证明了"无人值守"是可验证的选型收益;默认参数先跑起来,Region 大小这类"优化"反而可能踩坑,调优前先读文档、调优后留基线对比。
来源
  1. PingCAP 官方案例《BookMyShow.com: More Uptime, 30% Less Operational Cost with TiDB》 https://www.pingcap.com/case-study/tidb-in-bookmyshow/

相关产品:TiDB、Microsoft SQL Server、MySQL 相关能力:— 最后核验:2026-10-02

Jepsen 测试 TiDB 2.1.7:默认开启的事务自动重试让快照隔离"默认即违反",3.0 关默认后通过(2019) 失败教训

选型评估 独立测试 快照隔离 自动重试 版本选型
场景
TiDB 宣称提供快照隔离(文档里称之为 repeatable read)。2019 年 6 月 Jepsen 测试 TiDB 2.1.7 至 3.0.0-rc.2(5 节点,PD+TiKV+TiDB 同机,Region 复制因子 3)。**注:本次为 PingCAP 付费委托**(报告明确声明 "This work was funded by PingCAP"),结论引用时须标注资助关系。
决策
bank(转账总额守恒)/long-fork/register/append 等事务工作负载;故障注入包括 SIGSTOP/SIGKILL、iptables 网络分区、最大 232 秒的指数分布时钟偏移、leader/region 洗牌与合并。
结果
2.1.7 起默认开启的两套 auto-retry 机制在事务冲突时盲目重放写,导致**默认配置即违反快照隔离**(read skew、lost update);关闭重试后,2.1.8+ 通过快照隔离与单键线性一致性测试;3.0.0-rc.2 起默认关闭 auto-retry 并通过测试。另发现建表竞态(3.0.0-rc.2 修复)、新集群 durability 不足、启动崩溃等问题(部分 PingCAP 标为 by design 不修)。PingCAP 发布 companion blog 回应。
机制根因
auto-retry 的设计初衷是"让应用少写重试代码",但把"重试"做进数据库内核且默认开启,就把应用层的幂等假设偷换成了"数据库替你重放写"——而重放的写基于过期快照,隔离性自然破。这是一个"便利性默认"吃掉"正确性"的典型:默认值是最重要的 API,错默认比缺功能更危险。
教训
版本选型与配置选型同等重要——同一产品的"默认配置"和"调对配置"是两个产品;永远不要重新打开事务自动重试;厂商付费委托的测试报告仍可引用,但必须标注资助关系。诚实注记:这是 2019 年 2.x/3.0-rc 时代的结论,3.0.0-rc.2 已更改默认;TiDB 此后演进了 7 年,不可直接套用到当前版本,选型时以新版测试为准。
来源
  1. Jepsen《Jepsen: TiDB 2.1.7》(2019-06-12,PingCAP 付费委托
  2. 报告明确"This work was funded by PingCAP, the makers of TiDB") https://jepsen.io/analyses/tidb-2.1.7

相关产品:TiDB 相关能力:Percolator 事务模型的快照隔离与自动重试默认 最后核验:2026-10-02

Ninja Van:评估 Vitess/CockroachDB/TiDB 后选 TiDB,OLAP 真实查询最高快 111.92 倍(2021) 成功经验

PoC 选型评估 MySQL 兼容 K8s OLAP 加速
场景
Ninja Van(东南亚物流,日均 150 万+包裹,6 国运营)100+ 微服务跑在 MySQL(Galera)+ProxySQL 上:ProxySQL 写扩展性差、分库分表要改应用且不可逆(跨分片 JOIN 下沉应用层)、Galera 写不可扩展且流控会阻塞写。2020 年 7 月起团队调研 Vitess、CockroachDB、TiDB。
决策
先列 7 条硬需求:MySQL 兼容、水平扩展、高可用、易运维(含在线 DDL)、CDC(核心需求:灌数据湖、建 ES 索引、更新缓存)、可观测、云原生(K8s)。Vitess 落选:破坏性 schema 变更(清外键)、跨分片默认 READ COMMITTED、长串不支持的查询、跨分片 2PC 官方不推荐开、2020 年时 Vitess Operator 不稳定。CockroachDB 落选:PG 协议意味着迁移成本高、工具链弱(TiDB 有 DM/Lightning/TiCDC 生态)。随后在 GCP 自建 ~6TB 测试集群(PD 3×n1-standard-4、TiKV 3×n1-standard-16 挂 5 块 local SSD、TiDB 2×n1-standard-16),Sysbench 测 OLTP + 5 个真实业务查询测 OLAP。
结果
选定 TiDB on K8s。按 Ninja Van 自述口径:OLTP 场景 Sysbench 表现满意;OLAP 5 个真实查询相对 MySQL 最高快 111.92 倍(223.85s→2s),其余 60.37x/13.79x/12.96x/6.22x。文章由联合创始人兼 CTO Shaun Chong 与 Sr. SWE Mengnan Gong 署名撰写,记录的是客户自己的真实评估。**渠道注记:发表于 PingCAP 官网(厂商渠道),引用时须标注。**
机制根因
Ninja Van 的决策函数里"MySQL 兼容"的权重压倒一切——100+ 微服务的 SQL 方言、ORM、工具链是沉没成本,换 PG 协议等于重写数据访问层。Vitess 输在"分片中间件"的原罪:它把分布式复杂性推回给应用(schema 改造、跨分片语义降级),而 TiDB 把复杂性吃进内核(自动分片、快照隔离)。CDC 是隐藏的否决项:TiCDC 的开源协议与多 sink 支持对数据湖/ES/缓存三件套是刚需。
教训
分布式 SQL 选型先审计"生态沉没成本"(方言、工具、CDC 下游),再谈性能;PoC 必须用真实业务查询而非只跑 Sysbench——Ninja Van 的 111.92x 来自真实 OLAP 查询;K8s Operator 的成熟度要单独验证(2020 年的 Vitess Operator 就是前车之鉴)。诚实注记:Vitess/CockroachDB 此后均有大版本演进,2021 年的落选理由不可直接套用今天;111.92x 为客户自测口径(~6TB 测试集群),未见第三方复现。
来源
  1. Ninja Van 联合创始人兼 CTO Shaun Chong、Sr. SWE Mengnan Gong《Why TiDB Beats Vitess and CockroachDB in Ninja Van on K8s》(2021,发表于 PingCAP 官网,厂商渠道、客户署名) https://www.pingcap.com/case-study/choose-a-mysql-alternative-over-vitess-and-crdb-to-scale-out-our-databases-on-k8s/

相关产品:TiDB、CockroachDB、MySQL 相关能力:MySQL 兼容与 TiCDC 生态 最后核验:2026-10-02

SB Payment Service:支付新系统 PoC 验证后切 TiDB,2023 年 10 月投产 成功经验

支付系统 零停机扩容 PoC 验证 MySQL 兼容
场景
SB Payment Service(软银集团,B2B 支付:商户入网、电商在线支付、店内终端、预付卡、运营商计费)在线支付每秒数百笔,系统故障会冲击经济活动。2021 年 11 月启动分布式 SQL 调研:最初看中的某分布式数据库与现有引擎不兼容、日本国内案例太少而放弃;2022 年初 TiDB 进入视野——MySQL 兼容 + 软银集团内已有成功案例;TiDB User Day 2022 上用户们的热情推荐("不是厂商,是用户在夸支持好")成为临门一脚。(人物与过程引自经 PingCAP 整理的 EnterpriseZine 日文报道。)
决策
2022 年底到 2023 年做 PoC:在现有开发环境搭 TiDB,用生产级 workload 加压测试,并做故障测试——在 PingCAP 配合下故意 kill 实例验证恢复。结论:同等配置下 TiDB 性能超过现有库,某应用迁移后处理性能约 1.7 倍;原库升级/故障时"读副本切换"造成的停机被大幅压缩;MySQL 兼容度上,"只改连接串、核对执行计划,应用代码零改动"。落点选择很讲究:不替换现有稳定老系统(风险太高),也不做小系统(体现不出优势),而是放在"预期大幅增长"的新支付系统上。
结果
新支付系统 2023 年 10 月成功切换到 TiDB 生产,过程平稳、无重大问题;运维难度预计降到原来的三分之一;分区表数据膨胀问题经 PingCAP 指点用 Dumpling 命令解决;TiDB 被定位为公司核心数据库之一,后续走 TiDB Cloud(多 AZ 高可用,未来多 Region)。以上性能与运维数字为 SB Payment Service 团队在采访中的自述,经 PingCAP 转述整理,未找到第三方独立复现。
机制根因
计算(TiDB Server)与存储(TiKV)独立扩缩容——SQL 压力大只扩计算、容量不够只扩存储,这是分布式 SQL 相对"主从一体"最实在的运维红利;Raft 多副本让故障/升级时的切换停机从"分钟级人工操作"变成"秒级自动选举"。PoC 包含故障注入是关键:支付系统要的不是峰值 TPS 数字,而是"坏了能不能自己好",这正是读副本切换痛点被选为验证重点的原因。
教训
选型落点比选型本身重要——把新数据库放在增长曲线最陡的新系统上,老系统"稳定压倒一切";PoC 必须包含 kill 实例的故障测试,只跑性能测试等于只验了 happy path;社区用户口碑是厂商材料之外的有效信号源(User Day 的临门一脚);分区表的数据清理/TTL 策略要在上线前规划好,别等膨胀了再救火。
来源
  1. PingCAP 官方案例《SB Payment Service Adopts Distributed SQL for Seamless Scaling》,译自日本 EnterpriseZine 原文并经 PingCAP 整理 https://www.pingcap.com/case-study/sb-payment-service-adopts-distributed-sql-for-zero-downtime-scaling/

相关产品:TiDB、MySQL 相关能力:— 最后核验:2026-10-02

Shopee:风控系统从 MySQL 百表分片迁到 TiDB,双写平滑迁移(2018–2019) 成功经验

风控系统 分片迁移 双写迁移 促销峰值
场景
Shopee(东南亚头部电商,Sea 旗下)风控系统从订单与用户行为日志中识别异常与欺诈交易,日志存在 MySQL 里、按 USER_ID 分成 100 张表。2018 年大促订单破 1100 万(上年 4.5 倍),双十二达 1200 万单、创历史纪录。团队用 InnoDB 透明页压缩把数据压掉一半、存储从 2.5TB 扩到 6TB 应急,但这只是缓兵之计,写入天花板迟早撞上。(以上业务数字为 Shopee DBA 自述,未找到第三方独立复现。)
决策
团队对比了"继续分片"(100 张表重切成 1000 甚至 10000 张)与换 TiDB 两条路。继续分片意味着分片逻辑散在 Golang/Python 应用代码里:换分片键极麻烦、跨分片不支持分布式事务、挂载数据时频繁 DDL 会把库 hang 住乃至数据不一致。TiDB 的自动分片、Raft 强一致、MySQL 协议兼容和在线 DDL 正好对症。迁移采用应用层双写:双写 MySQL 与 TiDB → 历史数据迁移并校验 → 读流量渐进切到 TiDB → 停双写,历时数月、可随时回滚;还顺手按 7 个地区把风控日志拆成 7 个逻辑库(rc_sg、rc_my …… rc_tw)。
结果
初始 4TB 数据落在 14 节点集群(3 PD + 3 TiDB + 8 TiKV);数据涨到 35TB 时两次扩容到 42 节点,风控与审计日志两个集群合计 60 节点。日常 QPS 不到 20000,双十二峰值冲过 100000,P99 延迟稳定在 60ms 以内。代价同样真实:团队此前零 TiDB 经验;扩容后数据重平衡很慢——约 24 小时才搬完 1TB,大促前必须提前数天扩容并调大 PD 调度参数;MySQL 兼容也不彻底,如不支持 SHOW CREATE USER,只能去读 mysql.user 系统表查账号信息。
机制根因
这是"分片逻辑从应用层下沉到数据库层"的标准剧本。MySQL 分片把"数据怎么切"耦合进应用代码,每次重分片都要改代码、改分片键;TiDB 用 Region 自动分裂 + Raft 多副本把切分收进数据库内部,扩容变成加 TiKV 节点。双写迁移的价值在于把"学习 TiDB"与"切流量"解耦:数月双写期即培训期,又保留一键回滚的安全绳。
教训
当"下一次重分片"变成季度性工作,就是换分布式数据库的时机——应用层分片的债迟早要还;大促备战的扩容窗口应按"重平衡完成"而非"扩容动作"计算(约 24h/TB);边角语法的验证清单值得抄:Shopee 逐条核对并给 PingCAP 提 PR 修 SHOW CREATE USER 缺失。
来源
  1. PingCAP 官方案例《Shopping on Shopee, the TiDB Way》,作者为 Shopee DBA Chunhui Liu 与 Chao Hong https://www.pingcap.com/case-study/tidb-in-shopee/

相关产品:TiDB、MySQL 相关能力:— 最后核验:2026-10-02

微众银行:双引擎架构,TiDB 六年扩到 80+ 集群、PB 级(2019–2025) 成功经验

银行核心账务 金融级高可用 双引擎架构 智能运维
场景
微众银行(中国首家互联网银行,腾讯系,2014 年成立,服务 3 亿+用户)原有 TDSQL 架构是单机垂直扩展:3TB 以下的小业务跑得很好,但容量、并发一上来就捉襟见肘,扩容往往要停机迁移、排障工具分散。银行同时立了硬指标:可用性 99.999%、RPO=0、故障恢复秒级,老架构给不出这种保证。核心账务、批量归档、合规报表等关键场景需要一条能走十年的路。
决策
采用"双引擎"架构:TDSQL 继续承载小而简单的业务,TiDB 承接大流量高并发(核心账务、运营分析、风控)。配套自建运维平台,把分布式运维的复杂度收敛掉:集群管理、慢查询追踪、实时诊断、容量预测;容量中心用预测算法做扩容规划;智能诊断引擎在告警时自动采集日志、指标、性能快照并直接给出根因;慢日志经 ELK 实时聚合;50+ 自动化巡检覆盖复制、备份、安全配置、容量阈值。
结果
六年从 20 个集群扩到 80+,数据 1.3PB+,近 1000 台服务器;最大单集群 200TB+、扛 237K QPS。根因定位时间降 60% 以上;多 IDC 双活 + 智能副本放置做到 99.999% SLA、亚秒级 RTO;运维成本降 20–30%(标题作 30%,正文为 20–30%,均为 PingCAP 整理口径);扩缩容零停机,不再需要手动分片。(以上规模与成本数字来自 PingCAP 整理的分享摘录,未找到微众官方独立披露与第三方复现,引用须注口径。)
机制根因
规模红利来自两层:TiDB 的水平扩展 + Raft 强一致解决"能不能扩",自建智能运维解决"敢不敢扩"——没有容量预测和自动诊断,PB 级分布式集群的每一次变更都是赌博。双引擎按约 3TB 分界分流,避免"一刀切":小业务继续享受单机的简单,大业务才付分布式的税。MySQL 协议兼容 + DM 工具让迁移路径平滑,开发不用重写分片逻辑。
教训
分布式数据库的"能扩"不等于"敢扩",可观测性、容量预测、自动化巡检是规模化的前置条件,不是事后补课;按 workload 规模做双引擎分流,比"全上分布式"或"全守单机"都务实;金融级可用性来自"多活部署 + 副本策略 + 运维工程"的组合拳,不只是选了个分布式数据库。
来源
  1. PingCAP 官方案例《WeBank Cuts Costs by 30% While Scaling TiDB to Petabytes》,内容为微众银行数据库团队 Huang Wei 在 TiDB 社区深圳活动分享的整理摘录 https://www.pingcap.com/case-study/webank-cuts-costs-scaling-tidb-petabytes/

相关产品:TiDB、腾讯云 TDSQL 相关能力:— 最后核验:2026-10-02

TimescaleDB 在 PostgreSQL 上构建时序库(2017):用抽象层代替自研引擎 成功经验

时序/append-mostly HTAP 运维简单 构建 vs 自研
场景
决策
不在 PostgreSQL 之外自研存储引擎,而是在其上构建时序库(hypertable 分块抽象)。
结果
以下数字均为厂商自报口径,需打折:自称插入速度 20 倍于原生 PG;某客户场景 5 节点 TimescaleDB 对 30 节点 Cassandra。
机制根因
时序负载特征鲜明(只追加、按时间查)→ 按时间分块(chunk)后,批量加载可绕开 MVCC 开销,每块自带 min/max 可做分区裁剪;元数据与时序数据同库,避免"PG + 时序库"双系统运维;复用 PG 的 SQL、事务与生态。
教训
当工作负载有鲜明可利用的特征时,在成熟内核上加一层"利用该特征"的抽象,比自研存储引擎划算一个数量级;但厂商自报的性能对比数字一律视为营销口径,做决策前必须打折。

相关产品:PostgreSQL(社区版) 相关能力:— 最后核验:2026-10-01

Twitter 自研 Manhattan(2012–2014):多租户 KV 终结"一个业务一个集群" 成功经验

多租户 自研存储 KV 运维模型
场景
2014 年的 Twitter 每秒 6000+ tweets,跑在 MySQL + Cassandra 上。真正的痛不是吞吐,而是运维模型:每个新功能都要单独建集群,"花太多时间给生产系统救火以满足各产品的性能预期,给新用例开通存储涉及太多手工流程"(工程师 Peter Schuller 原话,转引自 SiliconANGLE 对官方博客的报道)。(https://siliconangle.com/2014/04/08/twitter-is-developing-multi-tenancy-database-to-support-6000-tweets-per-second/)
决策
自研 Manhattan:实时、多租户、分布式 KV。内置三套存储引擎(只读 Hadoop 数据、读多、写多三种 workload 各走各的引擎);多租户隔离、亚秒级限流、QoS、配额、容量建模全部做进存储层;新业务自助开通,像用云存储一样用内部存储。
结果
2014 年起 Manhattan 逐步替换 Cassandra,成为 Twitter 核心 KV 底座;据社区技术分析,其服务范围覆盖 tweets、users、DM 等全部核心对象;Twitter KV 团队负责人在 2017 年 ScyllaDB 峰会访谈中确认其运维目标是"可预测、可运维、多租户、自助服务",管理数千节点规模。(https://www.scylladb.com/2017/09/05/twitter-managing-stateful-systems/)
机制根因
自研的正当理由从来不是"更快",而是"现有方案的运维模型与组织规模不匹配"——Cassandra 是单租户运维模型,业务数翻倍则集群数与运维人力线性翻倍;Manhattan 把多租户最难的部分(noisy neighbor 隔离、亚秒级限流、配额)做进存储内核,让新用例的上线边际成本趋近于零。KV 接口足够简单,才撑得起"一个平台、几十个租户";图等复杂能力可以后加,但多租户隔离必须第一天就在。
教训
当"每个业务一套存储集群"的运维成本开始吞噬团队时,解法不是更好的单租户数据库,而是把多租户做进存储层;自研前先回答:痛点是性能数字,还是运维模型?前者买得到,后者只能自己造。
来源
  1. ScyllaDB 峰会访谈:Twitter KV 团队谈 Manhattan 运维(2017) https://www.scylladb.com/2017/09/05/twitter-managing-stateful-systems/

相关产品:Apache Cassandra / ScyllaDB 相关能力:可调一致性的运维税:gossip dance 与 compaction 死亡螺旋 最后核验:2026-10-01

Uber 出走 PostgreSQL:写扩展天花板 失败教训

高并发写入 连接扩展性 零停机升级 运维负担
场景
2016 年 Uber 打车业务爆发,核心订单系统要跨多数据中心承载高并发写入。当时用 PostgreSQL 9.2,生产中连踩数坑:物理复制 WAL 冗长、跨 DC 带宽浪费大;复制 bug 曾造成表损坏;备库不能给长查询提供一致性读;大版本升级必须全停机;高并发连接下进程模型成本高。(https://www.uber.com/in/en/blog/postgres-to-mysql-migration/)
决策
早期选 PostgreSQL(功能丰富、贴合 SQL 标准);2016 年迁往 MySQL(InnoDB),并自研 Schemaless 抽象层统一数据访问。
结果
迁移后获得在线升级与跨 DC 高效复制能力;Schemaless 成为此后多年的标准数据访问层。草稿无量化数字,效果以工程博客自述为准。
机制根因
2016 年 PG 9.2 时代。MVCC 写放大——PG 元组不可变,UPDATE 重写整行且二级索引全指向物理位置(ctid),高写入下索引维护成本爆炸;InnoDB 二级索引指向主键(逻辑位置),更新代价小。此外:WAL 物理复制低效、备库无 MVCC、连接进程模型昂贵、大版本升级只能全停机。注:PostgreSQL 10 起引入的逻辑复制(可跨版本、表级选择复制)已解决当年的部分复制痛点;本案例的复制与升级论点仅适用于 2016 年 PG 9.2,不构成对现代 PG 复制能力的评价。
教训
高写入加多 DC 场景下,复制效率、在线升级和连接成本是比"功能丰富"更硬的选型指标;但这是 2016 年 PG 9.2 时代的结论——现代 PG 已有成熟逻辑复制与更平滑的升级工具,不可直接套用今天。

相关产品:PostgreSQL(社区版)、MySQL 相关能力:MVCC + 查询优化器 + 事务性 DDL —— 复杂分析直接跑在 OLTP 主库上、简单 OLTP 下"最不折腾周末"的运维体感 最后核验:2026-10-01

Booking.com:中央 embedding 服务从 OpenSearch 迁到 Weaviate,基准快 20x、成本降 40%(2024) 成功经验

向量基础设施替换 基准选型 成本优化 集中式 AI 平台
场景
Booking.com 的机器学习与数据科学团队运营一个中央 embedding 服务,为全公司机器学习、Agent 和 GenAI 项目提供向量检索与数据管理。服务最初建在 OpenSearch 上(团队熟悉它)。随着接入团队增多,数据集涨到数亿 embedding,查询变复杂、并发与低延迟要求上升(尤其面向用户的应用)——想在 OpenSearch 上稳住性能意味着无休止的调参与越来越大的集群,运维开销和成本同步膨胀。不同团队的需求也开始分化:有的要混合检索、多向量支持,有的要更大向量容量和更高 RPS。
决策
团队没有拍脑袋换库,而是按生产 workload 搭了一个贴近真实的基准:1 亿 embedding、递增并发线程,覆盖近邻检索、带过滤 KNN、混合读写。Weaviate 在被评估的数据库里表现最稳定,被选为新的共享 embedding 服务后端。具名工程师 Başak Tuğçe Eskili 的原话:"Our evaluation confirmed that systems built specifically for vector search behave better than general-purpose search engines with vector capabilities added on."(为向量搜索而生的系统,表现好于"通用搜索引擎外挂向量能力"。)
结果
Weaviate 官网案例页公布的基准结论(厂商发布口径,基准方法与数字均未见第三方独立复现):同等规模下比 OpenSearch 快 20 倍、使用成本降 40 倍(usage cost 口径);实际运营成本降约 40%(更小的计算与内存 footprint,而 OpenSearch 那边是重度调优后的大集群);运维成熟度、部署灵活性、成本可预测性、与 Booking ML 生态的集成均占优。关键细节:因为各团队的访问都抽象在中央 embedding 服务之后,从 OpenSearch 迁到 Weaviate 对大多数团队"只是一次配置变更",无需客户端重写——迁移成本被架构设计提前消化了。
机制根因
这是一个"通用搜索外挂向量 vs 原生向量库"的对照实验:OpenSearch 的向量能力是倒排索引引擎上叠加的 ANN,过滤、混合读写、高并发下的性能曲线是后天补的;Weaviate 的 HNSW + 过滤执行路径是一体设计的,1 亿 embedding + 过滤 KNN 的 workload 正好打在它的设计点上。40% 成本下降的本质是"更小的 footprint 跑出更高的有效吞吐",即单位资源的有效 QPS 更高。但诚实地说:20x/40x 是 Booking 自家 workload 下的基准结论,换 workload、换调优水平,数字会变——能迁移的是"原生向量库在过滤+高并发下更稳"这个方向性结论,不是数字本身。
教训
中央 AI 基础设施选型,基准必须按自己的生产 workload 搭(Booking 的 1 亿 embedding + 过滤 KNN + 混合读写三件套就是模板),通用基准的排名没有决策价值;"通用引擎外挂向量能力"在规模上去后会系统性输给原生向量库,这是架构代差不是调参差距;提前把存储访问抽象成内部服务,是迁移成本最低的架构投资——换库那天你会感谢当初多写的那层抽象。
来源
  1. Weaviate 官网具名案例《Case Study - Booking.com》(厂商发布,Booking.com 机器学习工程师 Başak Tuğçe Eskili 实名 quote
  2. 20x/40%/1 亿 embedding 基准均为厂商发布口径,未见第三方独立复现) https://weaviate.io/case-studies/booking

相关产品:Weaviate 相关能力:过滤优先的混合检索架构——AllowList + ACORN + 原生 BM25 最后核验:2026-10-02

DocsBot:solo founder 靠多租户隔离撑起 5 万租户、一年 610 万+ 问答(2024) 成功经验

多租户隔离 RAG 规模化 云上托管 AI 客服
场景
DocsBot(创始人 Aaron Edwards,前 CTO,单人创业)做"用自家文档训练的 AI 客服/文档问答"产品:每个客户都有一份隔离的知识库,跨租户数据泄露是信任红线。产品因日本一位科技博主的推文一夜爆火(230 万次展示),注册量隔夜暴增——MVP 的检索架构直接暴露生存危机:要么撑住"数万个并行小索引、彼此严格隔离",要么崩掉丢客户。早期尝试的路线要么扩展不到"数万个并行小索引",要么运维开销一个人扛不住,要么成本爆炸。
决策
需求清单:可靠语义检索 + 混合检索 + 元数据过滤 + 干净的多租户隔离,同时运维复杂度必须接近零(没有专职 infra 团队)。评估市场后选 Weaviate Cloud:核心是其原生多租户——每个租户在 collection 内自动获得隔离分片,查询必须带租户上下文,物理隔离而非应用层的 WHERE tenant_id。创始人原话:"Weaviate stood out because it's clearly designed for real production use cases, not just experimentation. It was the only solution with an efficient tenant-based system that scaled to our unique workload of tens of thousands of distinct segmented indexes."(Weaviate 官网发布的具名案例,创始人实名 quote。)
结果
切到 Weaviate Cloud 后,单集群支撑 50,000+ 租户,一年回答 610 万+ 客户问题(以上数字均为 Weaviate 官网案例页发布的厂商口径,未见第三方独立复现)。文档摄入、分块、embedding 生成在入库前完成,查询时 Weaviate 做语义 + 混合检索取上下文,再喂给大模型生成有依据的回答。产品已从"问答引擎"向能执行动作(获客、工单路由)的 AI Agent 演进。
机制根因
这个案例是 Weaviate 多租户机制最极端的公开验证:租户数万、单租户数据小、租户有潮汐——正是租户分片 + 状态机(ACTIVE→INACTIVE→Offloaded 到 S3)设计要解决的形状。替代路线的代价很直白:"一租户一 collection/一库"在 5 万量级下元数据和运维爆炸;"单库 + tenant_id 字段"是逻辑隔离,过滤正确性和性能随租户数退化。一个 solo founder 能把基础设施外包给云托管、只写产品逻辑,前提是租户隔离是数据库原生原语而不是应用层约定——这是该案例能成立的机制根因。诚实备注:这是 Weaviate Cloud 的案例,自托管能否复现同等规模未见独立验证。
教训
多租户 RAG SaaS 选型,第一问题不是"向量检索快不快",而是"租户隔离是数据库的原生机制还是我的应用层约定"——前者决定你能不能一个人运维 5 万租户;病毒式增长是选型的放大器:MVP 阶段"能跑就行"的检索架构,在增长 10 倍后会变成生存问题,租户模型要在第一天就选对;云托管的价值在小团队身上最大:把 infra 外包出去换来的是"创始人时间",这对 solo founder 是生死资源。
来源
  1. Weaviate 官网具名案例《Case Study - DocsBot》(厂商发布,含创始人 Aaron Edwards 实名 quote 与具体数字,数字为厂商口径) https://weaviate.io/case-studies/docsbot
  2. —

相关产品:Weaviate 相关能力:多租户 SaaS 的租户分片隔离——5 万租户单集群 最后核验:2026-10-02

Finster:金融投研 AI 在生产跑 4200 万向量,从 Serverless 长到 Enterprise(2024) 成功经验

金融 RAG 混合检索 规模增长 成本优化
场景
Finster(2023 年成立的金融科技创业公司)给投资银行和资管机构做投研自动化:分析师要在财报季同时处理多家公司的多源文档,手动处理既慢又容易漏关键信息。金融客户对 AI 平台的要求是三条硬线:结果极准、够快、数据安全。数据源是 FactSet、Morningstar 的金融数据流,外加 SEC filing 实时摄入和自建的数千家公司数据管线,平台要支持"盈利分析、公司画像"等复杂研究任务的端到端自动化,并给出句子/单元格级的可验证引用。
决策
选型理由(Weaviate 官网具名案例,厂商发布):强预过滤 + rerank + 混合检索(金融概念理解需要语义与关键词兼得);企业级能力——多租户 + VPC 部署满足银行客户的数据隔离;可扩展到数百万向量;以及"成长伙伴"式的技术支持。创始团队成员 Seán Kilgarriff 实名表示,Weaviate 的 Field CTO Byron Voorbach 早期帮他们"省了数周在各种检索方法上的迭代,直接指到了一套很有效的方案"。
结果
生产运行 4200 万向量(厂商口径,未见第三方独立复现);用 Weaviate 指导省下 4 周+ 的检索方法试错时间;为一家全球一级投行做单租户部署时一天内就进入测试(帮他们把银行漫长的销售周期走快了一步);业务增长后从 Weaviate Serverless 平滑迁到 Enterprise(高可用、压缩选项、SLA、更高 QPS),"按我们扩张的速度,Enterprise 反而更划算"。下一步是与 Weaviate 团队一起做 hot/warm/cold 存储分层与量化降本——连标杆客户都需要厂商手把手做成本优化,侧面印证向量规模上去后内存/成本是真实痛点(与"Weaviate Go 内存天花板"招牌互为表里)。
机制根因
金融 RAG 的检索正确性 = 预过滤(权限、时间窗口、数据源)+ 混合检索(金融术语的精确命中 + 语义理解)+ rerank 三件套,Weaviate 把三者做进同一执行路径是选型成立的技术根因;Serverless→Enterprise 的迁移路径验证了"先跑起来再长大"的可行性——但注意这是在 Weaviate 自家云产品线内部的迁移,不是跨厂商迁移。42M 向量量级下成本优化成为显性工作项,说明向量数据库的 TCO 拐点真实存在:检索能力买回来之后,内存账迟早要算。
教训
强监管行业的 RAG 选型,"数据隔离部署形态(VPC/单租户)"和"引用可验证性"是与检索质量同等权重的决策项;创业团队早期用 Serverless/托管把 infra 外包、把时间花在检索方法上,是比自建集群更划算的起步姿势;把"厂商技术支持质量"写进选型标准是务实的——Finster 省下的 4 周试错时间就是支持团队的价值量化;规模上去后主动做存储分层与量化,而不是等到账单爆炸。
来源
  1. Weaviate 官网具名案例《Case Study - Finster AI》(厂商发布,创始团队成员 Seán Kilgarriff 实名 quote,42M 向量等数字为厂商口径) https://weaviate.io/case-studies/finster
  2. —

相关产品:Weaviate 相关能力:过滤优先的混合检索架构——AllowList + ACORN + 原生 BM25、Go 内存模型与单机内存天花板——50M+ 向量后成本陡增 最后核验:2026-10-02

Moonsift:电商多模态发现引擎,几周内上线生产级 AI 搜索(2023) 成功经验

多模态检索 电商搜索 购物助手 快速上线
场景
英国创业公司 Moonsift 做电商浏览器插件,让用户从全网零售商处收藏商品、做可购物的合集。创始团队(David Wood、Alex Reed)发现零售商为搜索引擎而非用户写商品关键词,再华丽的描述也解决不了"搜不到想要的东西"——他们的愿景是用 AI 做"品味驱动的发现"。几年的插件运营给他们攒下了训练数据:6000 万+ 商品、2.5 亿次交互、4 万家零售商(Weaviate 博客原文数字,厂商发布口径),现在要把这些数据变成一个能理解用户意图的 AI 购物 Copilot。
决策
机器学习负责人 Marcel Marais 先试了 BM25 + 重排的关键词方案,很快判断它撑不起推荐引擎——需要的是理解意图的语义搜索,以及能索引/检索多模态(文本+图像)、数百万级商品的系统。向量数据库的选型清单:易用排第一(要快)、开源、有活跃社区和托管选项、数百万商品规模下高性能且成本可控。评估了几个开源/闭源向量库后选定 Weaviate,理由包括:模块系统可直接集成 ML 模型并方便换模型实验、监控与复制能力、高并发查询吞吐、关键词+向量兼得的独特检索特性。
结果
CTO David Wood 实名表示:"Weaviate was exactly what we needed. Within a couple of weeks we had a production-ready AI-powered search engine."("几周内我们就有了生产就绪的 AI 搜索引擎",Weaviate 博客引用的创始人原话,属厂商渠道口径。)早期效果的例子很直观:"shirt that looks like a Caipirinha"(像卡琵莉亚鸡尾酒的衬衫)、"skirt with a pattern inspired by ocean waves"(海浪纹半身裙)这类意图式查询能返回合理结果。团队下一步在看 Product Quantization(压缩向量降内存 footprint、重排保相关性)和多租户——为数百万用户的个性化向量检索做准备,后者正好对应 Weaviate 的租户分片机制。
机制根因
电商发现是"语义 + 多模态 + 规模成本"的三重 workload:纯关键词在"品味"类查询上直接失效(没有关键词能描述"像卡琵莉亚的衬衫");图像向量和文本向量要进同一检索路径;6000 万商品意味着内存账必须提前算(所以 PQ 和多租户出现在路线图里)。Weaviate 的模块系统(vectorizer/model 直接集成、可换模型实验)降低了"把 ML 模型接到检索管线"的工程摩擦——这是小团队几周上线的关键:选型时"实验速度"和"检索质量"同等重要。
教训
电商/内容发现类场景,向量库选型的第一性问题是"能不能表达用户意图"而不是"ANN 延迟",BM25 + 重排的天花板在品味类查询上很低;小团队的选型权重里,"几周内生产就绪"的工程速度可以压倒 10% 的性能差距——Moonsift 的清单把易用性放第一是理性的;提前把内存优化(PQ/量化)和多租户写进路线图:在商品规模下,检索能力上线只是上半场,成本优化是确定的下半场。
来源
  1. Weaviate 官方博客《Building an AI-Powered Shopping Copilot with Weaviate》(Moonsift 故事,厂商发布,含 CTO David Wood 实名 quote
  2. 60M 商品等数字为厂商口径) https://weaviate.io/blog/moonsift-story

相关产品:Weaviate 相关能力:过滤优先的混合检索架构——AllowList + ACORN + 原生 BM25、Go 内存模型与单机内存天花板——50M+ 向量后成本陡增 最后核验:2026-10-02

Morningstar:Intelligence Engine 平台,内部孵化出数百个 RAG 应用(2023–2024) 成功经验

金融 RAG 自助式 AI 平台 企业级数据安全
场景
Morningstar 40 年积累了海量专有金融数据。2023 年初团队在自家数据片段上做 LLM 实验初见成效,意识到可以用 RAG 把几十年的长研究报告和实时数据变成 AI 应用,于是开始找向量数据库。技术负责人 Benjamin Barrett(Head of Technology, Research Products)点出的核心问题很诚实:建 chatbot "看起来像魔法,但剥开洋葱要问:它真的准吗?拉的是最新、最相关的数据吗?答案 robust 且完整吗?"——金融数据公司的命根子是"可信",准确率是信任问题不是技术指标。
决策
选 Weaviate 的四条理由(Weaviate 官网具名案例,厂商发布):易用——开源版 Docker 一把梭就能本地起起来做实验;数据隐私与安全——灵活部署 + 多租户架构满足严格合规;灵活可扩展——从搜索引擎到定制 AI 应用、大小数据集都接得住;支持——从本地开发到生产都有人管。
结果
建成了 Intelligence Engine Platform:一个"在可信金融数据和研究之上轻松创建、定制 AI 应用"的底座,内部孵化出数百个应用,覆盖内部用例和外部产品线;投研助手 Mo(Weaviate 驱动)在几周内上线,服务专业与个人投资者;RAG 管线强调动态上下文感知的文档切分 + 引用来源透明;更关键的是"自助式 RAG":内部用户通过 Corpus API(接 Weaviate)"几分钟、低代码就能建出很强的低延迟搜索引擎,还能换检索算法而不必重建索引、不碰基础设施"(高级软件工程师 Aisis Julian 实名 quote)。以上规模与速度描述均为厂商发布口径,未见第三方独立复现。
机制根因
这个案例的价值不在"选了 Weaviate",而在"把向量检索做成内部平台":Corpus API 把"建语料→切分→索引→检索→换算法实验"封装成自助服务,数百个内部应用是平台化的复利。能成立的前提:向量库支持多租户隔离(不同业务线数据不串)、部署灵活(合规)、检索算法可换而不重建索引(实验速度)。Weaviate 在这里的角色是"平台的检索底座"而非"某个应用的组件"——这是企业级向量库和"demo 库"的分水岭。
教训
大企业用向量数据库的正确姿势往往是"先做成内部检索平台,再让业务线自助长应用",而不是每个团队各搭一套——Morningstar 的数百个应用就是平台化的证据;金融场景下"引用透明"和"数据新鲜度"是 RAG 的生死线,选型时要当一等需求验收;"换检索算法不重建索引"这类实验速度特性,决定了平台上线后能不能持续进化,而不是上线即巅峰。
来源
  1. Weaviate 官网具名案例《Case Study - Morningstar》(厂商发布,技术负责人 Benjamin Barrett、高级软件工程师 Aisis Julian 实名 quote
  2. 规模与速度描述为厂商口径) https://weaviate.io/case-studies/morningstar

相关产品:Weaviate 相关能力:多租户 SaaS 的租户分片隔离——5 万租户单集群、过滤优先的混合检索架构——AllowList + ACORN + 原生 BM25 最后核验:2026-10-02

小米:手机负一屏与广告业务从单机 MySQL 迁到 TiDB(2018) 成功经验

分库分表替代 MySQL 平滑迁移 高频写入 OLTP 扩容
场景
2018 年,小米手机桌面负一屏的快递业务与商业广告交易平台的素材抽审平台接入 TiDB。背景是 MIUI 负一屏用户量快速增长,MySQL 单机(2.6T 磁盘)出现性能明显下降、可用存储空间不断降低、大表 DDL 无法执行;智能终端业务需定时从几千万级设备高频写入监控采集数据,MySQL 的 Binlog 单线程复制导致从库延迟持续堆积。据小米 DBA 团队称,两业务每天读、写量各自达到上亿级别。(https://cloud.tencent.cn/developer/article/1367777)
决策
DBA 团队评估后否决了分库分表:对业务代码侵入大、DBA 运维成本随拆分持续攀升、中间件有局限性,且智能终端业务需要多维度、维度可随时扩展的查询,分表方案"基本不能满足"。经兼容性对比与业务压测(TiDB 2.0.3)后决定迁移:增量用 Syncer(DM 前身)同步,读流量先灰度 1~2 周再全量切换,写流量随后迁移,全程基本无需改业务代码。
结果
据小米 DBA 团队在文章中称,两业务上线数月后"整个服务稳定运行";生产集群为 3 TiDB + 3 PD + 4 TiKV(TiDB 与 PD 两两共机,共 7 台物理机)。压测数据(文章自带压测表,测试机 Xeon E5-2620 v3/128G/SSD Raid 5):标准 Select 峰值约 40920 QPS(256 并发)、标准 OLTP 峰值约 23108 QPS(64 并发)、标准 Insert 峰值约 17286 行/秒(256 并发)。生产 QPS 峰值、总数据量未找到公开数据。
机制根因
TiDB 的存算分离让扩容变成"加 TiKV 节点"而非"拆库拆表",从机制上消除了"越拆越多"的运维死循环;基于 Raft 的多副本替代了 MySQL 主从 Binlog 单线程复制,从根上消除了从库延迟堆积——这是小米智能终端高频写入场景选它的决定性原因;MySQL 协议兼容使迁移无需重写业务 SQL,分布式事务保证跨分片写入 ACID,避免了分库分表下柔性事务对业务的侵入。代价是引入 PD/TiDB/TiKV 三组件的运维复杂度,以及早期版本(2.x)的成熟度风险,小米用"压测 + 灰度读流量 1~2 周"的节奏对冲。
教训
当单机 MySQL 出现"存储告罄 + 大表 DDL 做不动 + 从库延迟堆积"三联征时,是评估分布式 NewSQL 的明确信号,而非继续加分片;否决分库分表的关键判据不是性能,而是查询维度是否固定——维度随时扩展的业务,分片键会迅速失效;迁移节奏"先压测、再灰度读、最后切写",每次观察 1~2 周并备好回滚。
来源
  1. 小米 DBA 团队亲笔实践长文《TiDB 在小米的应用实践》 https://cloud.tencent.cn/developer/article/1367777
  2. PingCAP 官方用户实践汇总页 https://www.pingcap.com/cases-cn/

相关产品:TiDB、MySQL 相关能力:AUTO_RANDOM / SHARD_ROW_ID_BITS —— 热点打散,迁移第一课 最后核验:2026-10-01

YouTube 用 Vitess 分片 MySQL(2010s) 成功经验

水平分片 代理层路由 在线扩容
场景
2010 年前后 YouTube 的 MySQL 走到单机天花板:先做读写分离(主库扛写、备库扛读),读备库又被压垮,只能不断加备库续命;最终写流量超过主库能力,被迫分片。最初分片逻辑写在应用层——每次执行数据库操作前,代码先算出该去哪个分片。(https://vitess.io/docs/overview/history/)
决策
2010 年启动 Vitess 项目,在应用与 MySQL 之间引入代理层(VTGate),把查询路由、连接池、主从切换、备份等逻辑从应用代码里抽出来;MySQL 本体不动,继续做它最擅长的单分片事务与存储。
结果
据 vitess.io 官方历史文档,此后 YouTube 用户规模增长 50 倍以上;Vitess 2018 年 2 月进入 CNCF 孵化、2019 年 11 月毕业,成为 Slack、GitHub、Square 等公司也在用的通用 MySQL 分片方案。
机制根因
应用层分片的最大成本不是性能,而是"分片逻辑与业务代码耦合"——每次扩容、改分片键都要改代码、走发版。代理层把"数据放在哪"的决策从业务代码中剥离:MySQL 只负责单分片内的 ACID(它最成熟的能力),扩展性问题上浮到无状态的代理层解决,在线 reshard 不用停机。代价是多一跳网络延迟,以及代理层自身的高可用与运维复杂度。
教训
当分片逻辑开始污染业务代码、扩容需要改代码发版时,就是引入代理层的时机;"不换库、只加一层"往往比换分布式数据库便宜一个数量级。

相关产品:MySQL 相关能力:Vitess 水平分片 —— "第二增长曲线" 最后核验:2026-10-01

Bed Bath & Beyond:电商核心链路选型,YugabyteDB 通过故障注入与性能实测 成功经验

电商现代化 选型实测 故障注入 微服务
场景
这家美国全渠道零售商(Yugabyte 官方博客以 Bed Bath & Beyond 命名该访谈,见 URL slug;正文本称其为"a leading US-based omnichannel retailer",公司名未在正文中出现)的电商平台历经多轮改造:2013 年从 ASP.NET 老应用迁到 Oracle ATG Commerce,2018 年转 headless 架构,同期把数字平台改造成跑在 Kubernetes 上的 Spring Boot 微服务,数据库是 Firestore、Cloud SQL、Cassandra、Redis 的混合体。如今要把核心电商链路——促销引擎、商品目录、客户账户、registry、卡与结算——全部现代化,数据库是关键选型。
决策
Digital Engineering and Architecture 负责人带队做了完整选型:除 YugabyteDB 外还 shortlist 了另外两款数据库,按"易维护性、韧性"评估并跑了性能测试。测试路径很扎实:先用全托管的 YugabyteDB Managed 快速起库做基础验证;在 Yugabyte 团队协助下做故障注入(一边灌数据一边 kill 一个节点,看其他节点多久接管);再装到自家 VPC 里用真实电商负载跑 benchmark;还做了 COPY 批量导数(500–800 万条几分钟内完成)等 POC。最终选定 YugabyteDB,并计划用自运维的 YugabyteDB Anywhere 落地。
结果
几个"aha 时刻"被具名记录:SQL 与 NoSQL 双接口让评估环境搭建很容易;故障注入中 peer 节点几秒内检测到 master leader 失效并自行选出新 leader;某卡相关操作的平均响应 <5ms。组织侧收益:部署频率从每月一次提到每月两次再到每周。以上均为受访人口述、经 Yugabyte 官方博客发布,属厂商口径;"另外两款数据库"的名称与测试数据未公开。
机制根因
这个案例的价值不在结论而在过程——它展示了分布式 SQL 选型的"标准动作":先全托管验证功能假设,再故障注入验证 Raft 选主与恢复时间(这是分布式数据库相对主从架构的核心差异点,必须实测),最后在自家 VPC 用真实负载跑 benchmark 验证延迟。YSQL 的 PG 兼容(含 recursive CTE、多 schema)让 Oracle ATG 时代沉淀的 SQL 资产得以复用,这是它赢过另外两款候选者的隐性加分。ACID + 地理分布 + 可扛整区故障,则对应了"价格库存必须强一致、profile 会话可接受最终一致"的分级一致性需求。
教训
选型不要只看功能矩阵:故障注入(kill 节点看选主时间)和真实负载 benchmark 是分布式数据库的两道必考题,不过这两关的"多活""高可用"都是纸面参数;全托管先行、自运维落地的两段式路径值得抄——评估期用云上托管把时间花在验证假设上,而不是搭集群;受访人口中的"<5ms"是特定操作的平均值,引用时不要泛化成"全链路 P99 <5ms"。
来源
  1. Yugabyte 官方博客《Omnichannel Retailer Improves Digital Customer Experience with YugabyteDB》(客户访谈实录,厂商口径
  2. Distributed SQL Summit 2022 演讲名单确认 Bed Bath & Beyond 的 Lokesh Duseja 发表 "Preparing for Database Modernization: Lessons Learned from Performing a Successful YugabyteDB Evaluation"(BusinessWire 新闻稿,第三方转载) https://markets.financialcontent.com/dptribune/article/bizwire-2022-8-26-yugabytes-fourth-annual-distributed-sql-summit-to-feature-sessions-led-by-database-experts-from-fortune-500-enterprises

相关产品:YugabyteDB、Oracle Database(甲骨文)、Apache Cassandra / ScyllaDB、Redis / Valkey 相关能力:复用真实 PG 查询层 —— 迁移成本最低的分布式 PG 最后核验:2026-10-02

Jepsen 测试 YugaByte DB 1.1.9:健康集群下读偏斜致逻辑损坏,1.2.0 修复三项安全问题(2019) 失败教训

选型评估 独立测试 读偏斜 混合逻辑时钟 版本选型
场景
YugaByte DB 宣称"full spectrum of ACID compliance"。2019 年 3 月 Jepsen 测试 YugaByte DB 1.1.9 至 1.2.0.0-b7(5 节点,复制因子 3;测的是 YCQL 接口,YSQL 当时仍为 beta)。**注:本次为 YugaByte 付费委托**(报告明确声明 "This work was funded by YugaByte"),结论引用时须标注资助关系。
决策
Knossos 单键/多键线性一致性(counter/set/register)+ bank 快照隔离测试;故障注入包括 tablet server/master 崩溃、单节点/多数-少数/非传递网络分区、进程暂停、毫秒到数百秒的时钟偏移。
结果
3 项安全问题——① 健康集群、无故障时 read skew 致逻辑数据损坏(bank 测试可复现);② 时钟偏移下 read skew;③ 多网络分区下少量确认插入丢失。另有内存泄漏(节点快速耗尽内存)、leader 选举竞态可致全集群无限期宕机等可用性问题。1.2.0 修复全部 3 项安全问题(read skew 在 1.1.10 已先修,GitHub issue #894 有完整复现与修复记录);YugaByte 官方发布 companion piece 回应。勘误:2019-04-10 发现 long fork 检查器自身有 bug,用修正后的检查器复测 1.1.15.0-b16 仍通过。
机制根因
YugaByte 为性能让读绕过 Raft(用 leader lease 做本地读)+ 跨分片用混合逻辑时钟(HLC)定序——读快照取时间戳 t,依赖各分片"已收敛到 t"的等待,而 HLC 本质是"用时钟换性能"的折中。时钟一偏,读到的就是错乱的时间线,read skew 于是发生。这是"为性能绕过共识"的架构税:单分片内 Raft 保线性一致,多分片间 HLC 只给尽力而为。
教训
版本选型结论明确——1.1.x 别上生产,1.2.0 起才通过安全测试;任何依赖时钟同步的一致性承诺,评估时必须把"时钟异常时降级成什么"写进测试用例;厂商付费委托报告引用时标注资助关系。诚实注记:这是 2019 年 YCQL 接口的结论,YSQL 当时还是 beta;Yugabyte 此后演进多年,不可直接套用当前版本。
来源
  1. Jepsen《Jepsen: YugaByte DB 1.1.9》(2019-03-26,YugaByte 付费委托
  2. 报告明确"This work was funded by YugaByte") https://jepsen.io/analyses/yugabyte-db-1.1.9

相关产品:YugabyteDB 相关能力:混合逻辑时钟与跨分片事务隔离 最后核验:2026-10-02

Justuno:Cassandra、Neo4j、SQL Server、CockroachDB 四库并入一个 YugabyteDB 集群 成功经验

数据库整合 多模统一 成本优化 SaaS 增长
场景
Justuno 是云原生的网站访客转化优化(CRO)平台,为数万家电商品牌(如 Pura Vida、Blenders Eyewear、Rothy's)做个性化站内营销。访客画像数据要求极高可用与极低延迟,且流量有明显季节性波峰。历史上他们为此堆了四套系统:Cassandra、Neo4j、Microsoft SQL Server 和 CockroachDB。Yugabyte 官方成功故事页写道:"Justuno previously relied on a variety of databases including CockroachDB, but its poor performance became a liability."厂商口径
决策
CTO/联合创始人 Travis Logan 决定把四套系统合并进单个 YugabyteDB 集群,并用 YugabyteDB Anywhere 自运维。选择逻辑:与其为四种数据模型维护四个运维面,不如用一个同时支持 SQL 与 NoSQL 接口的分布式数据库收敛;且 CockroachDB 的实测性能已成为瓶颈,合并本身就是一次升级。
结果
Yugabyte 官方页宣称:16 节点横跨 3 个 GCP 可用区,承载 20,000 SQL QPS,读延迟 <3ms,节点数仅为原 CockroachDB 方案的三分之一("3x fewer nodes than CockroachDB"),季节性扩缩容变成点选操作。Travis Logan 引述:"By consolidating our Cassandra, Neo4j, Microsoft SQL Server, and CockroachDB systems into a single YugabyteDB cluster we were able to radically simplify our operations…"以上数字均为厂商口径,未找到 Justuno 官方工程博客或第三方独立复现。
机制根因
多库并存的最大成本不是 license,而是四个备份、四个监控、四套故障排查手册和四套扩容剧本——运维面随系统数增加而叠加(接近线性,取决于自动化程度)。YugabyteDB 的双 API(YSQL + YCQL)架构让关系查询与 KV/宽列跑在同一份 Raft 复制的 tablet 存储上,合并后故障域与运维面合一。值得注意的是同一页承认他们之前用过 CockroachDB 且"性能成为负担":同为分布式 SQL,YugabyteDB 在这套访客画像 workload 上用更少节点跑出更好性能——但 workload 细节未公开,无法判断是架构差还是调优差,引用时须保留这一不确定性。
教训
数据库整合本身就是降本:四个系统的运维税经常超过任何单一系统的性能税;从竞品分布式 SQL 迁出的案例提醒我们,"分布式 SQL"不是单一性能档位,同一 workload 在不同实现上可差出数倍,选型必须拿自己的 workload 实测;季节性业务选数据库时,把"弹性扩缩的操作成本"和峰值性能放在同一张表里打分。
来源
  1. Yugabyte 官方成功故事《A Customer Success Story: Justuno》(厂商口径,数字未独立复现) https://www.yugabyte.com/success-stories/justuno/
  2. —

相关产品:YugabyteDB、Apache Cassandra / ScyllaDB、CockroachDB、Microsoft SQL Server 相关能力:— 最后核验:2026-10-02

Kroger:全渠道数字化,YugabyteDB 支撑多地域微服务(2020–2022) 成功经验

全渠道零售 微服务 多地域 混合云
场景
Kroger 是美国营收第一的连锁超市(约 3000 家门店、42 个州),数字渠道是增长最快的部分。2020 年前后 Kroger 启动数字化转型:技术栈老化、point solution 太多,开始转向微服务 + 混合云(on-prem、门店边缘、公有云)。数据层需求很明确:同时支持 SQL 与 NoSQL 负载、分布式 ACID 事务、自动 geo-distribute、自动分片、开源且有商业支持。VP Engineering Mahesh Tyagarajan 在 2020 年 Distributed SQL Summit 上公开分享了这一实践。
决策
Kroger 选择 YugabyteDB 作为微服务的数据层,跑在 Kubernetes 里。部署拓扑有两种:三地域同步复制的 geo-distributed 单集群,以及两地域双集群双向异步复制(xCluster)——后者服务于 shopping list 应用,把数据放得离用户更近以换取低延迟。Sriram Samu(VP Engineering, Customer Technology)引述:"We have been leveraging YugabyteDB as the distributed SQL database running natively inside Kubernetes to power the business-critical apps that require scale and high availability."
结果
Yugabyte 官方材料称 Kroger 集群达到数据层 single-digit 毫秒延迟、多地域 active-active 部署,生产环境超过 5000 核(">5,000 Cores in production",Mahesh Tyagarajan 口径)。2022 年 Distributed SQL Summit 上 Sriram Samu 以"Fireside Chat with Kroger: Examining a Two-Year Journey with Distributed SQL and What's Next"为题回顾了两年实践。以上数字与进展均为厂商口径,未找到 Kroger 官方工程博客披露对应数字。
机制根因
Kroger 的解法是"按一致性需求选拓扑":需要强一致的多地域写走同步复制的三地集群(Raft quorum 跨地域,写延迟换零 RPO);shopping list 这类可接受异步的场景走双集群 xCluster 双向复制,用最终一致性换本地低延迟。同一个数据库产品同时提供同步多活与异步双活两种拓扑,避免了"一个需求一种数据库"的 sprawl。这是分布式 SQL 相对 Cassandra(无分布式事务)与单机 PG(无多活)的结构性优势:把"一致性—延迟" tradeoff 做成部署选项,而不是产品选型题。
教训
多活没有银弹:先给每个 workload 标注它能接受的一致性等级,再选拓扑,Kroger 的两种拓扑并存就是范本;零售业的"全渠道"本质是数据层问题——库存、价格、购物车在所有触点看到同一份真相,收银台和 App 不能各说各话;厂商 summit 演讲是可信度较高的厂商口径(真人真名出镜),但数字仍要标注口径,不宜当作独立第三方数据引用。
来源
  1. Yugabyte 官方博客《Transforming the Omnichannel Experience at Kroger》(2020-11-20,Distributed SQL Summit 演讲回顾,厂商口径) https://www.yugabyte.com/blog/distributed-sql-summit-recap-transforming-the-omni-channel-experience-at-kroger/
  2. Yugabyte 官方行业页《YugabyteDB is the Choice of Modern Retailers》(含 ">5,000 Cores in production" 引述与 shopping list 双向异步复制拓扑,厂商口径) https://www.yugabyte.com/retail-ecommerce/best-retail-database/
  3. —

相关产品:YugabyteDB 相关能力:— 最后核验:2026-10-02

Narvar:DynamoDB 账单失控,迁 YugabyteDB 拿下 4 倍 TCO 下降 成功经验

成本优化 云厂商锁定 GDPR 多云
场景
Narvar 是客户体验 SaaS 平台,服务 800 余家零售商(Sephora、Patagonia、Home Depot 等),覆盖从售前到店内的个性化体验。随着业务增长,其 AWS 数据库(DynamoDB)在规模上来后"quickly became extremely expensive":DynamoDB 按吞吐量计费的模式在零售旺季流量洪峰下把成本推到不可接受的水平;同时全球客户的数据隐私法规要求多云部署能力。CTO Ram Ravichandran 原话:"Yugabyte helped Narvar avoid cloud lock-in, stay GDPR compliant, and save money in the process."
决策
Narvar 寻找开源、云原生的数据库,要求支持多云/多地域部署、简单可自运维的 DBaaS 形态,关键标准是高性能、易扩展、"consistent cost-per-query"(每查询成本可预测)。最终从 AWS DynamoDB 与 PostgreSQL RDS 迁到 YugabyteDB,一次性解决"账单随吞吐量失控"和"被锁定在单一云"两个问题。
结果
Yugabyte 官方页宣称 Narvar 实现 4 倍 TCO 下降("reducing their total cost of ownership (TCO) by 4x"),同时扩展性与性能提升、迁移过程零停机、流量洪峰期间无服务中断,并可按客户需求支持多云。该数字与"零停机"均为厂商口径:未找到 Narvar 官方工程博客披露迁移细节,4x 的计算口径(是否含人力、是否同 workload 对比)未公开,引用须注明。
机制根因
DynamoDB 的按请求/吞吐量计费在"流量可预测且平稳"时很划算,但在"季节性尖峰 + 快速增长"下变成累退税:你为峰值吞吐能力付费,而平时用不满。自运维的分布式 SQL 把成本结构从"按吞吐量交税"变回"按机器付费",峰值只需加节点,且节点可复用于所有 workload。GDPR 与多云是第二根因:DynamoDB 把你绑在 AWS,而 YugabyteDB 的多云部署让 Narvar 可以按客户属地选云——合规需求直接变成了架构需求。
教训
Serverless 按量计费不是永远便宜:把"旺季峰值倍数 × 增长斜率"代入计费模型再做 TCO,不要只看日常账单;云锁定是成本问题也是合规问题,GDPR 属地要求会让"换云"从可选项变成必答题;迁移零停机的关键是双写/灰度而非停机窗口,Narvar 案例里"流量洪峰无中断"说明切换是在真实峰值下完成的——这是比实验室压测更硬的证据(仍是厂商口径)。
来源
  1. Yugabyte 官方行业页《YugabyteDB is the Choice of Modern Retailers》(厂商口径,4x TCO 未独立复现) https://www.yugabyte.com/retail-ecommerce/best-retail-database/
  2. —

相关产品:YugabyteDB、Amazon DynamoDB、PostgreSQL(社区版) 相关能力:— 最后核验:2026-10-02

pidgeiot(反例):单节点 YugabyteDB 合并回自建 PostgreSQL——分布式 SQL 的"起步税" 失败教训

起步税 生态兼容 资源下限 小团队
场景
pidgeiot 是独立开源项目 justins-engineering/pidgeiot(作者自述为 pre-revenue 的个人/小团队项目),技术栈是 Cloudflare Workers + Hyperdrive + Ory Kratos(身份系统)+ GreptimeDB(时序)。项目早期在 staging/prod 跑单节点 YugabyteDB(RF1),dev 环境则一直用 plain postgres:18-alpine。2026 年 7 月作者做了完整复盘并写入项目文档,结论是把单节点 YugabyteDB 换成同一台机器上的自建 PostgreSQL 18,infra 增量成本 $0/月。证据等级说明:这是独立项目的文档化决策复盘(hobby 规模),不是大厂生产事故,引用时须说明量级。
决策
合并而非扩容。复盘文档列了三条硬理由:第一,workload 根本不需要水平写扩展(5 分钟 cron + 设备遥测 + 人工看板,单核 PG 都吃不饱),RF1 的 YugabyteDB 是"付着分布式运维税、拿不到 HA 收益";第二,Kratos 官方支持列表只有 PostgreSQL、MySQL、CockroachDB 和 SQLite,YugabyteDB 不在其中——Kratos 官方 tracker 上有迁移死于 `ALTER TABLE ... ALTER COLUMN TYPE` 的 closed-unresolved issue(kratos#715),Hydra 有同类报告;第三,YugabyteDB 官方生产指导是 3 节点 × 每节点 4–8 vCPU,而 PG + Patroni 方案每节点 1–2 核就能跑——在共享小机器上,Yugabyte 一个就吃掉半台机器。
结果
近-term 方向是单节点 YugabyteDB → plain PostgreSQL 18(dump/restore + 改两个配置),作者估计 1–2 个专注 session(6–10 小时)可完成,因为代码里没有 Yugabyte-specific 假设,dev 环境一直在"dry-run"同一套 schema。3 节点 RF3 的 HA plan 被 shelve:等真有 HA 需求时,方案是 PG + Patroni(etcd colocated ×3)+ HAProxy,而不是 YugabyteDB——作者测算这能省约 $80/月(~$960/年)。诚实备注:作者明确写道"YugabyteDB itself is healthier than ever as a product",PG15 rebase 后 ALTER TYPE 已支持,只是上游没人替 Kratos 测——它仍是"真需要水平写扩展"那天的 conditional fallback。
机制根因
分布式 SQL 的"起步税"有三笔:资源税——每个节点跑完整分布式栈(tablet server、Raft、双 API),官方生产下限 4 vCPU/节点,3 节点 RF3 起步就是 12 核固定开销,而 PG 同等"单节点故障可活"(Patroni + 同步备)1–2 核起步;生态税——"兼容 PG"不等于"被 PG 生态承认",Kratos 这类上游只测官方列表里的数据库,每次上游升级都要重新验证一遍 YugabyteDB 的 DDL 兼容性;语义税——Yugabyte 的 DDL 行为与 PG 有细微差异(如 CREATE INDEX 在线构建导致不能放在显式事务里,作者真实踩过 yugabyte-db#6240),小团队为这些差异付的排查时间远超大厂。
教训
先回答"你要的是 failover 还是水平写扩展":前者 PG 原生 HA(Patroni)更便宜、生态零风险,后者才是分布式 SQL 的甜蜜区;"PG 兼容"要拆成三问——SQL 方言兼容、DDL 语义兼容、上游生态承认,pidgeiot 恰恰死在第三问;小团队选分布式数据库前,先算"起步税":3 节点 × 4 vCPU 的固定开销在你当前流量下分摊到每查询是多少钱,算完再决定。
来源
  1. pidgeiot 项目文档《Postgres consolidation: dropping single-node YugabyteDB + GreptimeDB for a leaner, $0/mo interim posture》(独立项目复盘,2026-07-23 研究) https://github.com/justins-engineering/pidgeiot/blob/HEAD/docs/infra/postgres-consolidation.md
  2. 《Distributed SQL comparison: is YugabyteDB still the right pick for the HA plan's database slot?》(2026-07-26 研究,含 4 vCPU 生产下限与 Kratos 兼容性对照) https://github.com/justins-engineering/pidgeiot/blob/HEAD/docs/infra/distributed-sql-comparison.md
  3. —

相关产品:YugabyteDB、PostgreSQL(社区版) 相关能力:pidgeiot 迁回自建 PG —— 分布式 SQL 的"起步税"实录 最后核验:2026-10-02

Shopify:数万 MySQL 手工分片并入 YugabyteDB,剑指 2000 万 QPS 成功经验

去分片 全球多活 数据主权 OLTP 扩展
场景
Shopify 服务数百万商家、10 亿在线买家,关系型数据库整体流量达 2000 万 QPS、1500 余张表。这套流量长期跑在"数万个定制分片的 MySQL 节点 + PB 级存储"上:分片由应用层手工维护,跨地域故障切换依赖 bespoke 的主从提升流程,单点故障与运维复杂度随规模放大。Yugabyte 官方成功故事页称旧架构带来了"operational complexity, bespoke failover mechanisms, and forced application-level workarounds"。以下规模数字均为厂商口径。
决策
Shopify 选择 YugabyteDB 的分布式 SQL 架构重建数据层,目标是单一全局命名空间 + 多地域 quorum 写 + 按大洲/区域划分的 tablespace 做数据主权隔离。官方引述选型理由:"We chose Yugabyte for its Raft consensus-based distributed SQL with Postgres semantics, geo-partitioning capabilities, and the ability to self-operate at our scale while maintaining sovereignty requirements."(https://www.yugabyte.com/success-stories/shopify/)
结果
Yugabyte 官方页宣称已迁移 200,000 QPS 生产流量,部署规模为 160 节点、7000 CPU 核、1.4 PB 裸存储,集群横跨美国与欧盟。迁移仍在进行中:目标是 20 倍扩容以承接全部 2000 万 QPS、1500 余张表,后续能力包括计算存储分离扩缩容、非投票读副本与分析链路集成。以上数字均未找到 Shopify 官方工程博客或第三方独立复现,引用须注明厂商口径。
机制根因
手工分片的本质是把"数据分布"推给应用层,代价是跨分片无事务、扩容等于重分片工程、故障切换靠定制脚本——节点数上万后,每一次主从提升都是一次高风险手工操作。YugabyteDB 用 Raft 共识把副本与故障切换收回数据库内部:tablet 自动分裂与负载均衡替代手工分片,多地域 quorum 写替代主从架构,tablespace 级 geo-partitioning 让"数据放哪"变成 DDL 而非运维项目,PG 语义兼容则把应用改造成本压到最低。代价是把核心交易链路押注在相对年轻的分布式系统上,且自运维超大规模集群对团队的内核能力要求极高。
教训
当分片数以万计、故障切换还要靠手工剧本时,"换数据库"比"继续修分片工具链"更便宜;数据主权合规(175+ 国家)这类需求越早进入架构选型越好,事后补 geo-partitioning 等于重写分布层;去分片迁移是马拉松——先迁 20 万 QPS 验证架构,再谈 2000 万 QPS 全量,阶段性目标比一次性切换更现实。
来源
  1. Yugabyte 官方成功故事《Shopify Counts on YugabyteDB for its AI-Ready Global Commerce Infrastructure》(厂商口径,规模数字未独立复现) https://www.yugabyte.com/success-stories/shopify/
  2. —

相关产品:YugabyteDB、MySQL 相关能力:替 Shopify 拆掉数万手工分片 —— "去分片"本身就是招牌 最后核验:2026-10-02