Google Cloud AlloyDB for PostgreSQL 是 Google Cloud 提供的全托管、PostgreSQL 兼容数据库服务,面向需要较高事务吞吐、较大数据规模、大量读取连接以及较低运维负担的企业应用。它不是简单地在云服务器上安装一套 PostgreSQL,而是在 PostgreSQL 兼容接口和生态基础上,对数据库计算、存储、高可用以及查询执行进行了重新设计。
AlloyDB最重要的架构变化之一,是将计算层与存储层进行分离。传统 PostgreSQL 通常把数据库引擎和本地存储紧密结合,而 AlloyDB采用解耦的架构,使计算资源和存储资源可以相对独立地扩展。应用仍然可以使用标准 PostgreSQL 协议连接数据库,但底层的数据存储和数据库实例管理方式已经不同于一台普通 PostgreSQL 服务器。
在实际部署中,AlloyDB集群可以包含 primary instance 和 read pool。对于需要高可用性的生产系统,可以配置高可用 primary,由主实例和同一区域的备用节点组成。当数据库规模不断增长、读取请求大量增加时,可以通过 read pool 增加读取节点,把部分读流量从主要写入节点分离出去。Google目前还提供 read pool autoscaling 功能,可以根据资源使用情况自动增加或减少 read nodes,不过该功能在官方文档中仍标注为 Preview,因此不能把它描述成所有 AlloyDB 计算资源都会无条件自动扩容。
AlloyDB另一个值得关注的部分是 Columnar Engine。它不是简单地把整个 PostgreSQL 数据库变成列式数据库,而是在需要的表和列上建立列式数据结构,并配合列式查询规划和执行引擎,加速扫描、连接和聚合等操作。Columnar Engine既可以运行在 primary instance,也可以运行在 read pool instance;对于读密集型分析任务,还可以配合 read pool 使用。AlloyDB提供的 auto-columnarization 可以根据工作负载分析哪些列最值得放入列式存储。
因此,AlloyDB比较适合的一类场景是高并发OLTP系统。例如电商订单、支付系统、SaaS平台、业务管理系统以及需要大量事务处理的企业应用。这些系统通常要求数据库同时处理大量 INSERT、UPDATE、DELETE 和 SELECT,并且希望在不完全依赖人工数据库运维的情况下保持稳定性能。Google将 AlloyDB定位于高性能企业 PostgreSQL 工作负载,并特别强调事务处理吞吐、可扩展读取和高可用能力。
另一类适合的场景是读请求非常多的应用。假设一个 SaaS 平台的写入量并没有达到极端水平,但后台报表、搜索、API查询和用户页面访问产生了大量 SELECT 请求,如果所有读取和写入都集中在同一个数据库节点上,就可能产生资源竞争。此时可以通过 AlloyDB read pool 增加读取能力,让读取工作负载获得独立的计算资源。对于需要进一步提升分析查询性能的场景,则可以考虑 Columnar Engine。
对于混合型工作负载,AlloyDB也具有一定价值。例如一个业务系统既需要处理实时事务,又需要在同一份业务数据上执行复杂的聚合、扫描和分析查询。传统做法可能需要把交易数据库的数据同步到另外的数据仓库或分析系统,而 AlloyDB的 read pool 与 Columnar Engine可以在一定程度上减少这种架构压力。不过这并不意味着 AlloyDB能够完全替代专业的数据仓库。真正的大规模分析任务是否应该交给 AlloyDB,仍然需要根据查询复杂度、数据规模、并发模式以及企业的数据分析架构决定。
与普通自建 PostgreSQL 相比,AlloyDB的另一个重要价值在于减少数据库基础设施管理工作。备份、存储扩展、高可用配置、实例管理和监控等工作可以交由 Google Cloud 的托管服务完成。对于数据库团队规模有限,但业务又需要 PostgreSQL 高可用和较大规模运行的公司,这一点可能比单纯追求某个SQL查询快多少更加重要。
跨区域部署则需要更加谨慎地理解。AlloyDB支持跨区域读取能力和跨区域副本等架构,但这不应该被简单理解成“多个区域同时写入同一个数据库”。真正的跨区域数据库架构需要考虑写入位置、复制延迟、故障转移、应用连接方式以及数据一致性要求。对于金融交易、订单系统等对一致性要求较高的应用,不能仅仅因为数据库支持跨区域复制,就直接采用所谓的 Active-Active 多主写入架构。
AlloyDB与 Google Cloud 其他服务结合时,也可以形成更完整的数据平台。例如业务交易数据可以保留在 AlloyDB 中,而需要进行大规模分析的数据则可以通过相应的数据集成和分析服务进入 BigQuery 等系统。这样做的意义在于让事务数据库和分析数据库承担各自擅长的任务,而不是强迫一个数据库同时承担所有类型的工作。
成本方面,AlloyDB采用按资源使用量计费的模式,主要涉及实例计算资源、存储、备份以及网络传输。计算资源按照 vCPU 和内存计费,存储则采用独立的存储层。Google目前还提供 Committed Use Discounts,也就是承诺使用折扣。对于资源需求长期稳定的企业,可以通过一年或三年的承诺获得计算资源折扣;但需要注意,AlloyDB的 CUD主要适用于实例的 vCPU 和内存,并不覆盖存储、备份和网络传输。
这意味着企业不能只比较一台 AlloyDB 实例的 CPU 单价。真正进行成本评估时,还需要计算 primary 和 standby 的高可用配置、read pool节点数量、存储容量、备份、跨区域数据传输以及长期承诺所带来的固定支出。尤其是读取节点数量随业务增长之后,数据库计算成本可能发生明显变化。
AlloyDB也不是一种可以自动消除 PostgreSQL 性能问题的产品。一个设计糟糕的SQL查询,即使换到高性能数据库平台上,也可能继续消耗大量 CPU、内存和 I/O。索引设计、执行计划、表结构、数据分布、连接池、事务长度以及应用层查询方式仍然非常重要。Columnar Engine能够针对特定类型的扫描、连接和聚合提供帮助,但并不意味着所有 SELECT 都会自动获得相同程度的性能提升。
因此,判断一个项目是否适合 AlloyDB,首先应该看工作负载,而不是数据库品牌。对于需要 PostgreSQL 兼容性、较高事务吞吐、高可用、大量读取连接以及较少数据库基础设施运维工作的企业应用,AlloyDB具有比较明确的使用价值。对于主要依赖复杂分析、数据仓库、海量离线计算的系统,则应该同时考察 BigQuery 等专门的数据分析服务。对于规模很小、流量稳定、普通 PostgreSQL 已经完全满足需求的项目,AlloyDB提供的高级能力也未必能够抵消额外的云数据库成本。
AlloyDB真正值得关注的地方,并不是简单地把 PostgreSQL 换成一个“更快的 PostgreSQL”,而是重新组织了 PostgreSQL 工作负载背后的计算、存储、读取扩展和托管运维体系。对于已经遇到单节点 PostgreSQL 性能瓶颈、读取压力快速增长或者高可用和数据库运维成本不断上升的企业,这种架构可能提供新的扩展路径。但最终是否值得采用,仍然应该通过真实业务查询、并发压力、故障恢复以及完整成本模型进行验证,而不能只根据产品宣传中的性能数字做决定。
Google Cloud AlloyDB 是什么,适合哪些高性能 PostgreSQL 工作负载
图片说明:示意图 图片来源:Public Domain(公有领域)
喜欢这篇报道?
使用下面的功能,方便以后继续阅读和分享 MNewsTV
关于文章收藏
收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。
删除收藏请进入「我的收藏」进行管理。
捐助(Paypal): https://www.paypal.me/observeccp 订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP