AWS 为 Aurora DSQL 引入外键约束
DataHot 速览
AWS 宣布 Aurora DSQL 现已支持外键约束,应用可直接在数据库内实施引用完整性,并支持 CASCADE、SET NULL 等操作。该功能解决了用户长期反馈的采用阻碍。Aurora DSQL 在事务中通过快照验证和提交时冲突检测来执行外键,检查时不锁表,冲突事务会以序列化错误拒绝。AWS 建议应用实现重试逻辑,并避免频繁修改被引用键列,将变化值移到非键列以减少事务冲突。
为什么值得关注:关注数据库/数据基础设施的产品演进,外键约束补齐对 PostgreSQL 兼容分布式数据库迁移和生产一致性很关键,且包含实现机制与使用边界。
译文
AI 逐段翻译AWS 最近宣布,Aurora DSQL 现已支持外键约束,使应用程序能够直接在数据库中实施引用完整性,包括 CASCADE、SET NULL 及其他引用操作。这一新增功能填补了一个长期存在的缺口,用户此前曾明确指出该缺口是采用的阻碍因素。
Aurora DSQL 是一种无服务器、分布式、兼容 PostgreSQL 的 SQL 数据库,专为高可用、可扩展的应用程序而设计。根据文档,Aurora DSQL 通过在事务期间进行快照验证以及在提交时进行冲突检测来实施引用完整性。该服务在一致的事务快照下检查外键关系,而无需锁定表,从而允许并发操作,并在提交时使用隐式 KEY SHARE 检查来检测冲突的更改;违反约束的事务会被拒绝并返回序列化错误。
应用程序应实现重试逻辑,因为并发冲突会导致事务失败而非等待。对于被大量引用的行,AWS 建议避免使用频繁更改的键列;相反,应保持被引用的键稳定,并将更改的值移到非键列,以减少事务冲突。
AWS 副总裁兼杰出工程师 Marc Brooker 强调,Aurora DSQL 使用 Adjudicator 和 PostgreSQL 的 KEY SHARE 机制在提交时检测相关行的更改,而不会阻塞并发读取:
无阻塞,非 FKC 读取的扩展性不变,FKC 读取器绝不会导致其他读取器中止,并且对于分布良好的工作负载具有出色的 FKC 扩展性。
在LinkedIn上,Nederlandse Spoorwegen 的首席工程师、AWS News Feed 的创建者 Luc van Donkersgoed 评论道:
他们做到了!Aurora DSQL 现已支持外键约束。缺乏外键是 DSQL 与“普通” Postgres 之间最大的差距,阻碍了许多迁移。这一变化使 DSQL 对棕地环境更加可行。
在“Amazon 浪费了时间构建 DSQL”这一帖子中,缺乏外键约束被列为采用这款兼容 PostgreSQL 的分布式数据库的主要阻碍之一。AWS 高级首席工程师 Marc Bowes 当时承认:
是的,外键即将到来。我们听到了你们的声音。
当该服务在 re:Invent 2024 上发布时,许多从业者强调缺乏外键约束是发布时众多缺失功能之一。用户SteveTabernacle2 写道:
那么“兼容 Postgres”就是误导性的。外键是关系型数据库管理系统的重要组成部分。没有外键,你就无法真正拥有“关系型”数据。
社区对这一新功能的反应总体上是积极的,但一位用户在 Reddit 上提出了质疑:
我知道这一功能曾被列为主要的采用阻碍之一,但它会大大降低速度。考虑到 DSQL 的架构,我不确定这会有多好。
AWS 指出,对被引用表或引用表进行的所有 DML 操作都会产生额外的读取以维护引用完整性,客户在向表中添加外键约束之前应对工作负载进行基准测试。
外键约束并不是最近添加到 DSQL 的唯一新功能,AWS 还添加了 CloudWatch Database Insights,用于按语句进行集群级性能监控和故障排除。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏