开发者生态
morning
亚马逊云科技开源ExtendDB:兼容DynamoDB的适配器,支持可插拔存储后端
2026-06-11
1 阅读
作者:Renato Losio
亚马逊云科技最近发布了 ExtendDB ",一个与 DynamoDB 兼容的适配器,开发者可通过 DynamoDB API 对接不同的存储后端,目前首个支持的后端是 PostgreSQL。该开源项目无需修改即可支持现有的 AWS SDK 和工具,为团队提供更大的灵活性,既能让团队在原生 DynamoDB 之外运行 DynamoDB 风格的业务负载、提升使用灵活性,也能完全兼容现有应用程序和工作流程。 目前 0.1 版本的 ExtendDB " 已实现 DynamoDB 控制平面与数据平面 API,支持表、数据项及数据流相关能力。它的初始存储后端为 PostgreSQL,可插拔的适配器设计还能灵活新增其他存储后端。该工具可应用于本地开发、CI 测试场景,也能在基于 PostgreSQL 搭建的本地环境中运行兼容 DynamoDB 的各类工作负载。亚马逊云科技高级数据库工程师 Lee Hannigan " 与首席产品经理 Deepthi Mohan " 表示: ExtendDB 由 AWS 工程师使用 Rust 语言开发,是 DynamoDB 有线协议的一种实现。你可以将它理解为架设在应用程序与存储后端之间的转换器。若使用 PostgreSQL 作为后端,应用程序发出 DynamoDB 相关请求,ExtendDB 会将其转换为 SQL 语句,再由 PostgreSQL 完成数据存储。 来源:AWS 博客 ExtendDB 以独立二进制文件的方式运行,无外部运行时依赖。它要求启用 TLS,首次运行时会自动生成自签名证书,并通过本地类 IAM 凭证存储支持 SigV4 认证,凭证存储可兼容标准的 DynamoDB 签名流程。Hannigan 和 Mohan 补充道: ExtendDB 将功能拆分到不同的 Rust 代码包中。核心包采用纯同步 Rust 实现类型处理、校验与表达式求值,引擎包则实现了 DynamoDB API 语义。storage-postgres 包是 PostgreSQL 后端,基于通用存储特征构建,该特征规定了所有后端需实现的接口。服务器包将它们整合在一起,提供 HTTP 服务器、管理 API 和 Web 控制台。 存储层被定义成一个 Rust trait,允许添加额外的后端(如 Apache Cassandra 或 MySQL),而无需修改核心适配器。在谈及它与 DynamoDB Local " 的区别时,Hannigan 在 LinkedIn 上做出说明 ": 就当前版本而言,它和 DynamoDB Local 差异不大,主要区别就是支持 PostgreSQL。后续迭代中,它将进一步提升与 DynamoDB 的功能一致性,未来也有望适配生产级工作负载。对于部分应用因合规等要求必须部署在本地的场景,它便能发挥作用。 Corey Quinn 提交了一个 PR 来新增 Route53 后端 ",不过在一个 热门的 Reddit 帖子 "中,用户 Akustic646 评论道: 大家后续会如何拓展这个项目,着实令人期待,我也有些意外 AWS 会将它开源。 用户 Dull-Mathematician45 则写道: 遗憾的是,它目前的性能表现还不够理想。高写入负载场景下,延迟会大幅升高。在执行 update_item 操作时,我发现 p90 延迟达到了 300 毫秒,连带读取操作的 p90 延迟也升至 20 毫秒。这是在 16 核 MacBook 设备上以 10 并发请求运行得出的结果。 一个类似的 Rust 项目 Rektifier " 在 ExtendDB 发布之前就在独立开发中,这也体现出业界对兼容 DynamoDB、支持 PostgreSQL 的代理工具有着普遍需求。该项目作者 Jake Larkin 也 表示,其早期性能表现更为出色 "。 ExtendDB 已发布到 GitHub 上 ",采用 Apache 2.0 许可,可在 Linux 和 macOS 上运行,需要 Rust 1.85+ 和 PostgreSQL 14+。 查看英文原文: https://www.infoq.com/news/2026/06/extenddb-dynamodb-adapter/ "