从 Spanner 到 StarRocks:把云账单砍掉 80%
同样的数据,放在不同的系统里,成本可以相差数倍。这是我们的用户完成 Google Spanner 到 StarRocks 迁移后的真实结果,分析成本直接降低了 70%–80%。
这一差距主要是因为 Spanner 是为事务设计的,计费模型也围绕事务场景构建。当分析负载逐渐堆积在上面时,不仅查询慢,资源利用率低,成本更是不断攀升。而 StarRocks 面向实时分析场景,从架构、性能到成本都更适合承载分析查询业务。
本文将介绍如何实现 Google Spanner 到 StarRocks 的数据迁移同步,让数据库架构更合理,同时有效控制成本。
Google Spanner 的局限
Google Spanner 是一款全球分布式关系型数据库,在强一致性、跨区域事务和高可用性方面有着成熟的应用。对于金融交易、订单系统、多区域数据一致性等核心业务场景,Spanner 都是非常可靠的选择。
但当分析查询开始大量集中到 Spanner 上时,它的局限性也逐渐显现。
在技术层面,Spanner 的设计目标是 OLTP。它采用行式存储,并围绕分布式事务做了大量优化,这些能力在事务写入场景中非常高效,但在大规模扫描、宽表聚合或复杂 Join 等分析型操作上并没有优势。在报表类 SQL 场景中,常常需要等待几十秒,甚至可能出现超时。
成本问题则更突出。Spanner 按处理单元(Processing Unit)持续计费,1 个节点约 6.2 元/小时。即使没有查询,计算资源仍然产生费用。在分析高峰期,为 了避免查询变慢甚至影响线上事务,通常需要提前扩容节点。而在低峰期,这些扩容节点大多处于闲置状态,但费用却在不断累积。
举个例子,假设数据规模在 2TB 左右,部署 3 个节点用于分析负载,仅基础成本每月就接近 17000 元(计算约 13000 元,存储约 4000 元)。一旦分析查询增多,节点数通常需要扩展到 5–6 个,每月成本很容易超过 27000 元。
核心问题在于,Spanner 并不是为分析而设计的系统。 把分析负载运行在上面,既跑不快,成本又高。
为什么同步数据到 StarRocks
为了提高分析性能,控制成本,很多团队开始选择把数据同步到 StarRocks。StarRocks 是面向实时分析的云原生高性能 OLAP 数据库,在这一场景下可以帮助团队极大地降本增效:
- 查询性能:StarRocks 采用列式存储与向量化执行引擎,在聚合分析、宽表扫描场景下性能表现突出,与 Spanner 相比,同类分析查询通常有数十倍的提升。
- 分析成本:StarRocks 支持存储计算分离架构,冷数据可以落到对象存储(如 GCS 或 S3)。计算节点可以按需使用,避免为闲置容量持续付费。整体成本相比 Spanner 可以降低约70%-80%。
通过把数据从 Spanner 同步到 StarRocks,将事务层与分析层解耦,Spanner 继续承载核心交易业务,StarRocks 专注分析查询,性能更强,也更省钱。
