亚马逊云科技最近发布了 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/





