DynamoDB のよくある質問

DynamoDB FAQ — よくある質問への回答

開発者が最もよく尋ねる DynamoDB の質問 — それぞれに明快で率直な回答と、次に進むべき先を用意しました。

DynamoDB の特性と機能

DynamoDB はキーバリューストアですか?
はい。そして同時にドキュメントストアでもあります。すべてのアイテムはプライマリキーで指定され、属性はマップやリストとして 32 階層までネストします。
DynamoDB はリレーショナルデータベースですか?
いいえ。DynamoDB は NoSQL のキーバリュー兼ドキュメントデータベースで、固定スキーマも外部キーも結合もありません。代わりにアクセスパターンに合わせて非正規化します。
DynamoDB は ACID に準拠していますか?
はい。DynamoDB は TransactWriteItems と TransactGetItems で ACID トランザクションに対応し、リージョンごとに最大 100 アクションを 1 つの全か無かの操作にまとめます。
DynamoDB は暗号化されていますか?
はい — DynamoDB のデータはすべて既定で AWS KMS のキーによって保管時に暗号化され、暗号化をオフにすることはできません。転送中のデータは HTTPS/TLS で保護されます。
DynamoDB は結果整合性ですか?
デフォルトでは、はい — DynamoDB の読み取りは結果整合性です。テーブルと LSI では強い整合性の読み取りを選べますが、GSI は常に結果整合性です。
DynamoDB は無料ですか?
一部は無料です。DynamoDB の常時無料枠は月あたり 25 GB のストレージと書き込み 25・読み込み 25 キャパシティーユニット。超過分はリクエスト単位・GB 単位で課金されます。
DynamoDB はインメモリですか?
いいえ — DynamoDB はすべての書き込みを 3 つのアベイラビリティーゾーンにまたがる耐久ストレージへ永続化します。DAX が、マイクロ秒の読み取りを提供する任意のインメモリキャッシュを追加します。
DynamoDB は NoSQL データベースですか?
はい。DynamoDB はフルマネージドの NoSQL キーバリュー兼ドキュメントストアです。スキーマレスなアイテムを保存し、水平にスケールし、PartiQL のパーサーは JOIN を拒否します。
DynamoDB はオープンソースですか?
いいえ — DynamoDB はプロプライエタリなフルマネージドの AWS サービスです。DynamoDB Local は開発用の無料エミュレーターですが、本番のエンジンはセルフホストできません。
DynamoDB はスキーマレスですか?
はい — DynamoDB はスキーマレスです。テーブル作成時に定義するのはプライマリキーだけで、他の属性はすべて任意であり、アイテムごとに自由に変えられます。
DynamoDB はサーバーレスですか?
サーバーレスです — DynamoDB はフルマネージドでサーバーレスな NoSQL データベースです。プロビジョニングやパッチ適用が必要なサーバーはなく、キャパシティは自動でスケールし、使った分だけ支払います。

DynamoDB に保存できるもの

DynamoDB は null 値を持てますか?
はい — DynamoDB には専用の NULL 型があり、キー以外の属性には空文字列や空のリスト/マップも許されます。ただし空のセットは拒否されます。
DynamoDB は配列を保存できますか?
はい。DynamoDB は配列を List(L)型で保存します。順序を持つ混在型で、32 階層までネストできます。400 KB のアイテム 1 件に UUID 文字列がおよそ 11,070 個入ります。
DynamoDB は BLOB を保存できますか?
条件付きで可能です — DynamoDB はバイナリラージオブジェクトを、400 KB 未満の Binary 属性(base64 エンコード)に保存します。それより大きい BLOB には、AWS は Amazon S3 を推奨しています。
DynamoDB は画像を保存できますか?
はい、ただし小さいものだけです — DynamoDB は 400 KB のアイテム上限の範囲で、画像を base64 の Binary 属性として保存します。より大きな画像には AWS は Amazon S3 を推奨しています。
DynamoDB は JSON を保存できますか?
保存できます — DynamoDB はドキュメント型を使って JSON を格納します。オブジェクトはマップ (M)、配列はリスト (L) で、32 階層までネストでき、アイテムあたり 400 KB の上限内に収まります。
DynamoDB はどれくらいのデータを保存できますか?
DynamoDB のテーブルにサイズの上限はなく、水平にスケールします。実際の上限はアイテムあたり 400 KB と、LSI がある場合に限りアイテムコレクションあたり 10 GB です。
DynamoDB のアイテムの最大サイズは?
400 KB、正確には 409,600 バイトで、値だけでなく属性名も数えます。DynamoDB のアイテムサイズ上限は引き上げられないため、それより大きなオブジェクトは S3 に置きます。

DynamoDB の統合とアクセス

DynamoDB の操作とクエリ

DynamoDB はオートスケールできますか?
はい。DynamoDB の Auto Scaling はプロビジョニング済みキャパシティーで 20〜90% の目標使用率に追従しますが、平均使用率が 28.9% を下回るならオンデマンドモードの方が安くなります。
DynamoDB をローカルで実行できますか?
はい — DynamoDB Local は無料でダウンロードできる DynamoDB 版で、Docker、Java アーカイブ、Maven で自分のマシン上に立ち上げ、同じ API をオフラインで提供します。
DynamoDB にバックアップはありますか?
はい — 長期スナップショット向けのオンデマンドバックアップと、直近 35 日間の任意の秒に復元できる継続的バックアップであるポイントインタイムリカバリ(PITR)があります。
DynamoDB は全文検索に対応していますか?
いいえ、ネイティブには対応していません — DynamoDB には関連度ランキングもステミングもあいまい一致もありません。AWS ネイティブな答えはゼロ ETL の OpenSearch 統合です。
DynamoDB は地理空間クエリに対応していますか?
ネイティブには対応していません — DynamoDB に地理データ型も距離演算子もありません。地理空間の検索は geohash や S2 セルのキーを範囲クエリすることでモデリングします。
DynamoDB は JOIN に対応していますか?
いいえ。DynamoDB に JOIN はなく、PartiQL は 2 テーブルの SELECT をそのまま拒否するため、非正規化することになります。DynoTable の SQL Workbench はクライアント側で本物の JOIN を実行します。
DynamoDB は SQL に対応していますか?
部分的に対応しています。PartiQL は SELECT・INSERT・UPDATE・DELETE をカバーしますが、JOIN・GROUP BY・COUNT は拒否します。DynoTable の SQL Workbench はそれらをテーブル上で実行します。
DynamoDB はトランザクションに対応していますか?
はい。DynamoDB のトランザクションはテーブルをまたぐ最大 100 アクションを 1 つのオール・オア・ナッシングの操作にまとめます。消費キャパシティーユニットは通常の書き込みの 2 倍です。
DynamoDB は TTL に対応していますか?
対応しています — DynamoDB は Time to Live をサポートします。Unix エポック秒の有効期限を保持する Number 属性を設定すれば、DynamoDB が期限切れのアイテムを無料で自動的に削除します。
DynamoDB はどれくらい速いですか?
速いです — DynamoDB はどんな規模でも一貫した 1 桁ミリ秒のレイテンシを実現します。インメモリキャッシュの DAX を使えば、結果整合性のある読み取りはマイクロ秒まで下がります。
DynamoDB のテーブルはいくつまで持てますか?
DynamoDB で作成できるテーブル数は、既定でリージョンあたり 2,500 個、申請すれば 10,000 個まで引き上げられます。テーブル自体にサイズの上限はありませんが、プロビジョニング済みキャパシティーのテーブルはアイドル状態でも 1 か月あたり 0.57 ドルかかります。
DynamoDB でアイテム数を数えるには?
Query か Scan で Select: COUNT を使い、LastEvaluatedKey でページ送りしながら Count を合計します。カウントはアイテムを返すのと同じ読み込みキャパシティーを消費します。

DynamoDB のアーキテクチャと内部構造

DynamoDB はキャッシュとして使えますか?
はい — DynamoDB の高速なキー検索と TTL は、永続的なキャッシュに向いています。マイクロ秒の読み取りが必要なら、マネージドなインメモリのライトスルーキャッシュである DAX を前段に置きましょう。
DynamoDB は外部キーに対応していますか?
いいえ。DynamoDB に外部キー、参照整合性、カスケード削除はありません。親を削除しても子は残ります。リレーションシップは自分でモデル化します。
DynamoDB はセカンダリインデックスに対応していますか?
はい。DynamoDB にはグローバルセカンダリインデックス(独自のキー、結果整合性、既定でテーブルあたり 20 個)とローカルセカンダリインデックス(強い整合性)があります。
DynamoDB はマルチリージョンですか?
標準の DynamoDB テーブルは単一リージョンです。グローバルテーブルはリージョン間でマルチアクティブに複製し、最大 99.999% の可用性を実現しますが、ストレージは各リージョンで課金されます。
DynamoDB を使うべきでないのはどんなときですか?
分析ワークロード、アクセスパターンが未知の場合、アドホックなクエリが多い場合、そして結合に依存する正規化されたリレーショナルスキーマでは、DynamoDB を避けてください。

その他の DynamoDB リソース

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。