在最近于拉斯维加斯举行的 AWS re:Invent 大会上,亚马逊宣布推出Aurora DSQL 的公开预览版,这是一种无服务器、分布式 SQL 数据库,具有主动-主动高可用性的特点。这一新的兼容 PostgreSQL 的数据库选项在 AWS 社区中引起了极大的关注,并被与会者广泛认为是本次会议的重要公告。
Aurora DSQL是一款分布式 SQL 数据库,声称具有无限的可扩展性、99.99% 的单区域可用性和 99.999% 的多区域双活可用性。该数据库可处理水平扩展、多区域主动-主动操作、连接管理以及缩放至零(这是 Aurora 最近添加的一项期待已久的功能)。 PostNL 首席工程师 Luc van Donkersgoed写道:
就在这里! Amazon Aurora 分布式 SQL (DSQL)。它将 DynamoDB 和 Postgres 合并成一个真正的无服务器关系数据库。这是 Re:Invent 2024 的公告。其他一切都无关紧要。
Aurora 已经通过Global Database提供了跨多个区域的PostgreSQL 兼容数据库,但 DSQL 背后的技术却截然不同。在 DSQL 中,两个区域都以主动-主动模式运行,接受写入和交叉复制数据。相比之下,全局数据库只能将数据从一个区域复制到另一个区域,并且只允许一个区域写入数据库。次要区域充当只读副本,并且可以根据需要提升为主区域。
在单区域配置中,Aurora DSQL 将所有写入事务提交到分布式事务日志,并将提交的日志数据同步复制到三个可用区的用户存储副本。在多区域配置中,集群通过两个区域端点(每个链接的集群区域一个)来提高可用性。AWS 高级数据库工程师Raluca Constantin和AWS 专家解决方案架构师Arun Sankaranarayanan在介绍这项新服务时写道:
链接集群的两个端点呈现单一逻辑数据库,支持并发读写操作,数据一致性强。这使您可以平衡应用程序和连接的地理位置、性能或弹性目的,确保读者始终看到相同的数据。
第三个区域充当见证区域,接收写入链接集群的数据并存储加密事务日志的有限窗口,以确保多区域的持久性和可用性。
来源:AWS 博客
正如另一篇文章中所述,Aurora DSQL 采用乐观并发控制 (OCC),而不是传统的锁定方法。AWS 高级数据库专家Rajesh Kantamani和AWS 数据库专家Prasad Matkar写道:
由于其分布式架构,将 OCC 与 Aurora DSQL 结合使用非常适合,因为它可以避免事务执行期间的资源锁定,从而实现更高的吞吐量和系统效率。
该云提供商强调,OCC 不仅可以防止单个缓慢事务影响或减慢其他事务,还可以为查询处理提供更好的可扩展性,并为实际故障提供更强大的集群。这是通过避免对锁定机制的依赖来实现的,锁定机制可能导致死锁或性能瓶颈。
AWS 副总裁兼杰出工程师Marc Brooker发布了一系列技术文章,分享对 Aurora DSQL 实施的见解。他描述了事务延迟如何相对于事务语句计数保持恒定,甚至跨区域也是如此。 Brooker 还解释了如何管理写入、冲突检测和持久性,以及事务隔离和查询性能的实现。事实证明,这些文章很受欢迎,他在会议上的深入探讨现在可以在 YouTube 上观看。
来源:布鲁克的博客
社区中的许多人认为新产品是 AWS对兼容 PostgreSQL 的 Neon、Cloudflare D1 和 Google Cloud Spanner 的挑战。通过将事务逻辑与存储层分离并以强一致性处理事务,亚马逊首席执行官在台上声称新数据库的读写速度比 Spanner 快四倍。
Hacker News 上的反应不一,许多开发人员强调了一系列重要的限制。虽然实施依赖于AWS 精确时间基础设施,该基础设施提供具有强大误差范围的准确时钟,但一些专家认为 DSQL 是开源数据库的一个鼓舞人心的项目。用户Edwinr95写道:
没有临时表、没有外键、没有视图、事务中不超过 10k 行。除了与 Postgres 协议的一些基本线路兼容性之外,我很难将其称为“数据库”,而更多地称其为键值存储。
新服务旨在在全球范围内提供低延迟和同步复制。不过,公共预览版目前仅在美国三个地区提供:弗吉尼亚州北部、俄亥俄州和俄勒冈州。