DynamoDB はオープンソースですか?
いいえ。DynamoDB はプロプライエタリなフルマネージドの AWS サービスです。ソースコードは公開されておらず、本番のエンジンをセルフホストすることはできません。ローカル開発向けには、AWS が無料でダウンロードできるエミュレーターの DynamoDB Local を提供しており、いくつかのサードパーティのデータベースが、自分で動かせる DynamoDB 互換の API を掲げています。
実務上の意味
DynamoDB は AWS の中でしか動きません。API として利用するものであり、ダウンロード、ライセンス、検査、運用の対象となるサーバーソフトウェアはなく、コミュニティエディションもありません。それはそのまま売りでもあります。セットアップ、パッチ適用、レプリケーション、スケーリング、バックアップは AWS が扱い、このサービスにはバージョンもメンテナンスウィンドウもありません。
DynamoDB Local は無料だが、オープンではない
AWS は DynamoDB Local を提供しています。これは自分のコンピューター上で Docker イメージ、Java アーカイブ、Apache Maven の依存関係として動く、ダウンロード版の DynamoDB です。無料で使え、オフラインでも動きますが、開発とテストのためのエミュレーターであり、本番のエンジンではなく、オープンソースでもありません。
エミュレーターはエンジンではない
その差は、ライセンス以上に重要です。エミュレーターはキャパシティをまったく強制しないからです。1 RCU でテーブルを作り、4 KB をわずかに下回るアイテムを保存し、それを強整合読み取りで逐次ループして読み返してみます。
for (let i = 0; i < 500; i++) {
await client.send(
new GetItemCommand({TableName: 'demo', Key: {pk: {S: 'HOT'}}, ConsistentRead: true})
);
}500 回の読み取りが 353 ミリ秒で終わり、何ひとつスロットリングされませんでした。1 に対してプロビジョニングされたテーブルに、毎秒およそ 1,400 回の強整合読み取りです。エミュレーターは ProvisionedThroughput を受け付け、そして無視します。
本物のサービスに対して同じ形のループを回すと、蓄積したバーストクレジットが尽きた時点、49 回目の読み取りでスロットリングされます。
つまりローカルで緑のままの負荷テストは、キャパシティについて何も教えてくれません。リトライとバックオフのローカルテストも同様です。スロットリングされるものが何もないので、リトライも起きないからです。
互換の代替
DynamoDB の API はよく文書化されているので、いくつかのオープンソースやサードパーティのデータベースが DynamoDB 互換のエンドポイントを実装しています。互換性は機能によってまちまちなので、いずれかをそのまま差し替えられるものとして扱う前に、依存している操作(トランザクション、ストリーム、セカンダリインデックス)を検証してください。
さらに詳しく
DynamoDB Local ガイドでエミュレーターをローカルに動かし、式ビルダーでクエリをビジュアルに組み立て、DynoTable をダウンロードしてください。DynoTable は AWS とローカルの両方のエンドポイントに接続します。
参考資料
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Setting up DynamoDB local (downloadable version) — Amazon DynamoDB Developer Guide
- Fast NoSQL Key-Value Database — Amazon DynamoDB — AWS
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。
2026-07-28 に、Node v24.18.0 上の @aws-sdk/client-dynamodb 3.1095.0 で DynamoDB Local 3.3.0 に対して測定しました。49 回という実サービスの数字は、us-east-1 の DynamoDB に対して以前に行った当方の再現によるものです。