Amazon DynamoDB について

Amazon DynamoDB とは何ですか?

DynamoDB は、あらゆる規模に適した高速で柔軟な非リレーショナルデータベースサービスです。DynamoDB を使用すると、分散データベースの運用と AWS にスケーリングするための管理負荷を軽減できます。ハードウェアのプロビジョニング、設定と構成、スループットキャパシティのプランニング、レプリケーション、ソフトウェアのパッチ適用、クラスターのスケーリングなどについて心配する必要はありません。

DynamoDBは何を管理してくれるのですか?

DynamoDB により、データベースの拡張、データベースソフトウェアの管理、およびハードウェアの実行に必要なプロビジョニングに伴う主な障害の 1 つが取り除かれます。非リレーショナルデータベースはほんの数分で展開できます。DynamoDB では、テーブルサイズの増大に合わせてワークロードのデマンドに応じたスループット容量のスケーリング、データのパーティション化や再パーティション化が自動的に行われます。また、DynamoDB では、同じ AWS リージョン内の 3 つの施設間でデータが同期的にレプリケートされるため、可用性とデータ耐久性も高まります。

ストレージ

DynamoDB テーブルクラスとは何ですか?

DynamoDB テーブルクラスは、DynamoDB テーブルのパフォーマンスとコストを最適化するためのオプションです。使用可能な 2 つのテーブルクラスは、DynamoDB Standard (最大のパフォーマンスを必要とするワークロード向けに設計され、予測できないワークロードのテーブルに最適なデフォルトのテーブルクラス) と DynamoDB Standard-Inrequent Access (ストレージが主なコストであるテーブルに最適化され、アクセス頻度の低いデータを格納するテーブルに最適なテーブルクラス) です。標準テーブルでは、読み取りと書き込みのコストは低いが、ストレージのコストは高くなります。標準 IA テーブルはストレージコストは低くなりますが、読み取りと書き込みのコストは高くなります。これらのテーブルクラスは、ダウンタイムなしで 30 日間に 2 回切り替えることができるため、テーブルの使用パターンに基づいてコストを最適化できます。これらのクラスの選択は、アプリケーションの特定のニーズとデータのアクセスパターンによって異なります。

テーブルクラスを選択する際に考慮すべき要素は何ですか?

DynamoDB でテーブルクラスを選択する際に考慮すべき要素がいくつかあります。考慮すべき最も一般的なものは、データのアクセスパターン、コストに関する考慮事項、およびワークロードの予測可能性です。コーディングやダウンタイムなしでテーブルクラスを切り替えることができるため、時間の経過とともにニーズが変化した場合に選択を調整できます。

DynamoDB 標準 IA テーブルは既存の DynamoDB 機能とどのように連携しますか?

DynamoDB 標準 IA (低頻度アクセス) テーブルは、既存の DynamoDB 機能とシームレスに連携します。通常の DynamoDB テーブルと同じ API を使用するため、コードを変更せずに既存のアプリケーションで使用できます。マルチリージョンレプリケーション、ポイントインタイムリカバリ (PITR)、オンデマンドバックアップ、AWS Key Management Service (KMS) を使用した保存時の暗号化、DynamoDB ストリーム、項目を自動的に削除する有効期限、トランザクションの読み取り/書き込みオペレーションをサポートするグローバルテーブルをサポートしています。標準 IA テーブルは DynamoDB Accelerator (DAX) と互換性があります。

DynamoDB はデータをどのように保存しますか?

Amazon DynamoDB はデータをパーティションに保存します。パーティションはテーブルに割り当てられたストレージで、ソリッドステートドライブ (SSD) を基盤とし、AWS リージョン内の複数のアベイラビリティーゾーンに自動的にレプリケートされます。パーティション管理は完全に DynamoDB によって処理されるため、パーティションを自分で管理する必要はありません。

DynamoDB で許可されている項目の最大サイズはどのくらいですか?

DynamoDB テーブルに保存できる項目の最大サイズは 400 KB です。事前に定義されたストレージ制限はありません。

DynamoDB はバイナリラージオブジェクトストレージ (BLOB) を格納できますか?

はい、DynamoDB は BLOB を格納できますが、一般的にドキュメントや画像の保存には適していません。より適切なアーキテクチャパターンは、Amazon S3 オブジェクトへのポインタを DynamoDB テーブルに保存することです。

データが DynamoDB に保持される期間はどれくらいですか?

Amazon DynamoDB テーブルに保存されたデータには、デフォルトでは有効期限や削除時間は設定されていません。お客様が明示的に削除しない限り、またはTTLが有効になっている場合は有効期限 (TTL)による削除を行わない限り、データはテーブルに無期限に残ります。

DynamoDB にはいくつの項目を保存できますか?

DynamoDB テーブルに保存できる項目の数には、事前に定義された制限はありません。DynamoDB は、任意の数の項目にわたって数百テラバイト以上のデータにスケーリングできます。

DynamoDB にイメージを保存できますか?

画像をバイナリデータ (base64 エンコード) として DynamoDB に保存することは技術的には可能ですが、400 KB の項目制限サイズにより、いくつかの制限と欠点があります。DynamoDB に画像を直接保存するよりも、Amazon S3 (簡易ストレージサービス) に画像を保存し、S3 オブジェクトの URL またはキーを DynamoDB に保存する方がよいでしょう。

DynamoDB にリストを保存できますか?

DynamoDB にリストを保存するには、DynamoDB のリストデータタイプのいずれか (リストまたはセット) を使用する必要があります。テーブルに項目を書き込む場合、その属性の値は、文字列や数値などのスカラー (非オブジェクト) データ型の配列またはコレクションにすることができます。DynamoDB は、リストデータを自動的にシリアル化し、リスト構造を維持する方法で格納します。その後、テーブル属性をクエリして全リストを取得できます。リストへの要素の追加、更新、削除は、通常の書き込み操作と同じように機能します。

DynamoDB はマップを保存できますか?

はい、DynamoDB はマップを属性データタイプとして保存することをサポートしています。 

セキュリティと制御

Amazon DynamoDB は AWS Identity and Access Management (IAM) のアクセス権限をサポートしていますか?

はい、DynamoDB は IAM アクセス権限をサポートしています。IAM アクセス権限は、ID ベースのポリシー、リソースベースのポリシー、またはその他の AWS ポリシーで定義して、DynamoDB リソースへのアクセスを制御できます。IAM ポリシーを IAM ユーザー、グループ、ロール、DynamoDB テーブルとストリームにアタッチし、必要に応じて制御できます。

AWS PrivateLink では、仮想プライベートクラウド (VPC)、DynamoDB、オンプレミスデータセンター間のプライベートネットワーク接続を、インターフェイス VPC エンドポイントとプライベート IP アドレスを使用して簡素化できます。PrivateLink を使用すると、プライベート接続から DynamoDB テーブルにアクセスでき、リクエストが Amazon ネットワークを離れることはありません。これにより、トラフィックが任意のネットワークゲートウェイを通過するのでセキュリティが強化され、IAM ポリシーとセキュリティグループを使用してアクセスを制御できます。PrivateLink は、データセキュリティ要件があり、低レイテンシーを必要とするアプリケーションに役立ちます。また、オンプレミスネットワークと AWS にまたがるハイブリッド環境から DynamoDB テーブルにアクセスできるようになります。

DynamoDB はリソースベースのポリシーをサポートしていますか?

はい、DynamoDB はテーブルとストリームのリソースベースのポリシーをサポートしています。各テーブルのリソースベースのポリシーには、テーブルのインデックス (グローバルセカンダリインデックスとローカルセカンダリインデックス) のアクセス権限も含まれます。リソースベースのポリシーを使用すると、お客様は AWS アカウントレベルでフルアクセスを許可しなくても、DynamoDB テーブルやその他のリソースに対するきめ細かなアクセス権限を定義できます。これらのポリシーにより、お客様は特定の DynamoDB テーブル、インデックス、ストリームに対して読み取り、書き込み、削除などのアクションを実行できるユーザー、ロール、およびフェデレーションユーザーを制御できます。リソースベースのポリシーは、各 DynamoDB リソース内でアタッチおよび管理されます。

リソースベースのポリシーは、AWS Identity and Access Management (IAM) Access Analyzer および Block Public Access (BPA) との統合をサポートします。IAM Access Analyzer は、お客様が権限を絞り込み、最小特権に従うのに役立ちます。BPA は、お客様が DynamoDB テーブル、インデックス、ストリームへのパブリックアクセスを防ぐのに役立ち、DynamoDB では常に有効になっています。
 

DynamoDB はタグベースの認証のための属性ベースのアクセス制御をサポートしていますか?

DynamoDB は、DynamoDB テーブルとインデックスで一般的に利用可能な属性ベースのアクセス制御をサポートしています。

Amazon DynamoDB を Amazon Virtual Private Cloud (Amazon VPC) で使用できますか?

はい。VPC エンドポイントを使用して Amazon DynamoDB を使用できます。DynamoDB は、ゲートウェイエンドポイントと AWS PrivateLink の使用という 2 種類の VPC エンドポイントをサポートしています。ゲートウェイエンドポイントを使用すると、VPC のインターネットゲートウェイや NAT デバイスを必要とせずに、VPC から DynamoDB にアクセスできます。ただし、ゲートウェイエンドポイントでは、オンプレミスネットワークからのアクセス、他の AWS リージョンのピア接続 VPC からのアクセス、またはトランジットゲートウェイ経由のアクセスは許可されません。このようなシナリオでは、追加料金で利用可能な AWS PrivateLink を使用する必要があります。

Amazon DynamoDB のきめ細かなアクセス制御とは何ですか?

きめ細かなアクセス制御 (FGAC) により、DynamoDB テーブル所有者は、AWS Identity and Access Management (IAM) のポリシーと条件を通じてテーブル内のデータをきめ細かく制御できます。FGAC では、所有者がテーブルの項目または属性、および関連するアクションへのアクセス権限を付与できます。きめ細かなアクセス制御は、セキュリティ認証情報と関連する権限を管理する AWS IAM と連携して使用されます。

Amazon DynamoDB は転送中と保存中にデータを暗号化しますか?

はい。Amazon DynamoDB のすべてのユーザーデータは、転送中も保存中も完全に暗号化されます

Amazon DynamoDB は転送中のデータをどのように暗号化しますか?

HTTPS プロトコルは、セキュアソケットレイヤー暗号化を使用してネットワークトラフィックを保護するために使用されます。

Amazon DynamoDB は保管中のデータをどのように暗号化しますか?

保管時の DynamoDB 暗号化では、AWS Key Management Service (AWS KMS) に保存されている暗号化キーを使用します。保管中のデータは、最高レベルのセキュリティが要求されるゴールドスタンダードである AES-256 を使用して暗号化されます。

保管中の DynamoDB データを暗号化するにはどのようなキータイプを利用できますか?

保管中のデータを暗号化するには、次のキータイプを使用できます。
1.AWS 所有のキー: これらはすべて AWS によって管理され、他にオプションが指定されていない場合はデフォルトで使用されます。これらは無料で使用でき、追加の設定は不要です。
2.AWS マネージドキー: これらは AWS キー管理サービス (KMS) に保存されているカスタマーマスターキー (CMK) で、AWS がお客様に代わって作成、管理、使用するものです。AWS が所有するキーと比較して、制御および監査機能が強化されています。
3.カスタマー管理キー: これらは AWS KMS で作成、所有、管理する CMK です。アクセス制御の作成、更新、無効化、定義など、暗号化キーを最高レベルで制御できます。

これらのキータイプはそれぞれ、利便性、制御、コストのバランスが異なります。AWS が所有するキーは最も簡単に使用できますが、顧客管理型のキーは最も制御可能ですが、管理オーバーヘッドが大きくなります。

保存時の暗号化はデータの保護にどのように役立ちますか?

保存時の暗号化は、機密情報を含むファイルが非アクティブな状態で暗号化されるため、データを保護するのに役立ちます。データが保存時に暗号化されると、権限のない第三者は、データを保存しているデバイスに物理的にアクセスできたとしても、プレーンテキストコンテンツにアクセスできなくなります。これにより、アクセス制御だけでなく、データのセキュリティがさらに強化され、物理デバイスを紛失したり盗まれたりした場合でも、機密情報の機密性が保たれます。

DynamoDB はテーブルの項目レベル変更の監査ログ記録をサポートしていますか?

はい、DynamoDB はテーブルの項目レベル変更の監査ログ記録をサポートしています。DynamoDB は、DynamoDB 内のユーザー、ロール、または AWS サービスによって実行されたアクションの記録を項目レベルで提供するサービスである AWS CloudTrail と統合されています。キャプチャされるその他のログデータには、作成、更新、削除、および条件付きチェックの失敗が含まれます。お客様は CloudWatch Logs に保存されているこれらのログレコードにアクセスし、監査、監視、またはその他の目的で項目レベルの変更を分析するアプリケーションを構築できます。監査ログにより、DynamoDB テーブルの通常の読み取り/書き込みパフォーマンスに影響を与えることなく、データの変更をきめ細かく把握できます。

Amazon DynamoDB は HIPAA 準拠性を要するアプリケーションと使えますか?

はい、Amazon DynamoDB を使用して HIPAA 準拠のアプリケーションを構築し、AWS との履行済み事業提携契約 (BAA) に基づく保護された医療情報を含む医療関連情報を保存できます。

Amazon DynamoDB はどのようなコンプライアンス認証を満たしていますか?

DynamoDB は、HIPAA 適格、FedRAMP、ISO 27001、SOC 1/SSAE 16/ISAE 3402 (以前は SAS 70)、SOC 2 など、多くのコンプライアンス認証を満たしています。詳細については、[DynamoDB の業界別コンプライアンス検証]を参照してください。AWS コンプライアンスレポートは、AWS Artifact からダウンロードできます。

高可用性とレプリケーション

DynamoDB グローバルテーブルとは何ですか?

Amazon DynamoDB グローバルテーブルは、フルマネージド型、サーバーレス、マルチリージョン、マルチアクティブデータベースです。グローバルテーブルにより、99.999% の可用性、アプリケーションの耐障害性の向上、およびビジネス継続性の向上を実現できます。選択した AWS リージョンにわたって DynamoDB テーブルを自動的にレプリケートするので、ローカルで高速な読み取りと書き込みのパフォーマンスを実現できます。グローバルテーブルは単一リージョンの DynamoDB テーブルと同じ API を使用するため、アプリケーションを変更しなくても DynamoDB テーブルを簡単にグローバルに利用できます。

グローバルテーブルを使用する必要があるのはなぜですか?

複数のリージョンにわたるアプリケーションの耐障害性を向上させるには、グローバルテーブルを使用する必要があります。また、グローバルテーブルを使用すると、万が一リージョン全体が孤立したり機能低下したりした場合でも、アプリケーションは高可用性を維持できます。

グローバルテーブルバージョンにはどのような違いがありますか?

DynamoDB グローバルテーブルには、バージョン 2019.11.21 (現在) とバージョン 2017.11.29 (レガシー) の 2 つのバージョンがあります。お客様は、すべての新しいグローバルテーブルにバージョン 2019.11.21 (現在) を使用してください。このバージョンはより効率的で、消費する書き込み容量が少ないためです。バージョン 2017.11.29 (レガシー) を使用している場合は、グローバルテーブルをバージョン 2019.11.21 (現在) にアップグレードする必要があります。

グローバルテーブルをバージョン 2019.11.21 (現在) にアップグレードする方法を教えてください。

AWS マネジメントコンソールで数回クリックするだけで、グローバルテーブルのバージョンをアップグレードできます。バージョン 2017.11.29 (レガシー) からバージョン 2019.11.21 (現在) へのアップグレードは 1 回限りのアクションで、元に戻すことはできません。アップグレードする前に、バージョン間の動作の違いを確認し、必要なテストをすべて実行してください。詳細については、[バージョン 2017.11.29 (レガシー) からバージョン 2019.11.21 (現在) へのグローバルテーブルのアップグレード]を参照してください。

DynamoDB グローバルテーブルは、リージョンが利用できなくなった場合の自動フェイルオーバーをサポートしていますか?

DynamoDB グローバルテーブルでは、リージョン間でマルチアクティブレプリケーションが使用され、グローバルテーブルのすべてのリージョンのすべてのレプリカテーブルが読み取りトラフィックと書き込みトラフィックをサポートします。グローバルテーブルにはプライマリリージョンがないため、読み取りトラフィックと書き込みトラフィックを別のリージョンに転送するときにデータベースのフェイルオーバーは必要ありません。万が一 AWS リージョンが孤立したり劣化したりしても、アプリケーションは影響を受けていないリージョンのレプリカテーブルから読み書きするだけで済みます。詳細については、[DynamoDB グローバルテーブル設計のベストプラクティス] を参照してください。

データ処理

Amazon DynamoDB は変更データキャプチャをサポートしていますか?

はい、Amazon は変更データキャプチャ (CDC) をサポートしています。DynamoDB では、CDC はストリーミングモデルを使用して実装されます。これにより、アプリケーションは DynamoDB テーブルの項目レベルの変更をデータレコードのストリームとしてほぼリアルタイムでキャプチャできます。データレコードの CDC ストリームにより、アプリケーションは DynamoDB テーブルのデータ変更を効率的に処理して応答できます。DynamoDB には、CDC 向けに Amazon DynamoDB StreamsAmazon Kinesis Data Streams for DynamoDB という 2 つのストリーミングモデルが用意されています。アプリケーションに適したソリューションを選択するのに役立つように、チェンジデータキャプチャのストリーミングオプションをご覧ください。

DynamoDB ストリームとは何ですか? また、それを使用して何ができますか?

DynamoDB ストリームは、DynamoDB テーブル内の項目への変更に関する情報の順序付けられたフローです。DynamoDB ストリームは、重複排除された項目レベルの変更の順序を時系列でテーブルに取り込み、この情報を最大 24 時間ログに保存します。DynamoDB ストリームは容量を自動的にスケールし、容量のプロビジョニングと管理の作業を排除します。 DynamoDB ストリーム設定に基づいて、変更前と変更後のデータ項目を表示できます。これらのストリームイベントを使用するアプリケーションを構築し、イベントストリームの内容に基づいてワークフローを呼び出すことができます。

DynamoDB ストリームは、AWS Lambda とのネイティブ統合を使用してトリガーでデータ変更に対応したり、顧客とのやり取りをほぼリアルタイムで追跡および分析したり、アプリケーションのパフォーマンスをほぼリアルタイムで監視したり、順序付けられたイベントのシーケンスをキャプチャしたり、項目レベルのトランザクションデータをレプリケートしてアプリケーションの耐障害性を向上させたりする場合に役立ちます。

Kinesis Data Streams for DynamoDB とは何ですか? また、これを使用して何ができますか?

Kinesis データストリームは、DynamoDB テーブルの項目レベルの変更をキャプチャし、 Kinesis データストリームにレプリケートします。アプリケーションはこのストリームにアクセスして、項目レベルの変更をほぼリアルタイムで確認できます。Amazon Kinesis データストリームを使用すると、特定のニーズに合わせてストリーミングデータを処理または分析するカスタムアプリケーションを構築できます。DynamoDB ストリームとは異なり、Kinesis Data Streams for DynamoDB にはレコードの順序付けや重複排除の保証はありません。レコードの順序付けと重複排除は、項目レベルのレコードの ApproximateCreationDateTime フィールドを使用してクライアントアプリケーションで実装する必要があります。

Kinesis Data Streams for DynamoDB は、より広範な Kinesis エコシステム (Kinesis Client LibraryAmazon Managed Service for Apache FlinkAmazon Data Firehose など) との統合、長期間のデータ保持と再生性 (最大 365 日)、ダウンストリームの消費とストリーミング分析のためのカスタマイズされたシャード管理が必要な場合に役立ちます。

ストリームにはどのような情報が含まれていますか?

DynamoDB テーブルで DynamoDB ストリームまたは Kinesis データストリームが有効になっている場合、テーブルは、そのテーブルのデータへの変更をキャプチャするデータレコードを送信します。このデータレコードには、項目が最近作成、更新、または削除された特定の時間、その項目のプライマリキー、変更前の項目のイメージ、および変更後の項目のイメージが含まれます

DynamoDB ストリームまたは Kinesis データストリームを使用するにはどうすればよいですか?

AWS マネジメントコンソール、AWS SDK、AWS コマンドラインインターフェイス (AWS CLI)、または Kinesis クライアントライブラリ (KCL) を使用して、既存の DynamoDB テーブルのストリームを有効または無効にできます。

DynamoDB ストリームとKinesis データストリームはいつ使用すればよいですか?

特に DynamoDB テーブルの変更を追跡する必要がある場合は、DynamoDB ストリームを選択してください。幅広いストリーミングニーズ、より高いスループット要件、またはより長いデータ保持期間が必要な場合は、Kinesis データストリームを選択してください。

DynamoDB の存続可能時間 (TTL) とは何ですか? また、それを使用して何ができますか?

Amazon DynamoDB Time to Live (TTL) 機能により、関係がなくなった期限切れの項目がテーブルから自動的に削除されるため、ストレージの使用量が削減され、コストが削減されます。TTL では、項目ごとにタイムスタンプを定義して項目が不要になるタイミングを判断できます。DynamoDB は、書き込みスループットを消費することなく、その項目をテーブルから自動的に削除します。項目が作成または更新されるたびに、有効期限を計算して TTL 属性に保存できます。TTL は、特定の時間が経過すると関連性が失われる項目を保存する場合に便利です。

DynamoDB ではどのようなクエリ機能がサポートされていますか?

DynamoDB では、ユーザー定義プライマリキーを使用して GET/PUT オペレーションをサポートしています。プライマリキーはテーブル内の項目の唯一の必須属性です。プライマリキーはテーブルを作成するときに指定し、各項目を一意に識別します。また、DynamoDB は、グローバルセカンダリインデックスローカルセカンダリインデックスを使用してプライマリキー以外の属性をクエリすることが可能な柔軟なクエリ機能も備えています。

プライマリキーは、単一属性パーティションキーまたは複合パーティションソートキーのいずれかになります。例えば、UserID は単一属性パーティションキーです。このような単一属性パーティションキーにより、指定されたユーザー ID に関連付けられた項目のデータをすばやく読み込んだり書き込んだりできます。

DynamoDB では、複合パーティションソートキーがパーティションキー要素およびソートキー要素としてインデックス化されます。このマルチパートキーにより、1 番目の要素値と 2 番目の要素値の間の階層が維持されます。例えば、複合パーティションソートキーは、UserID (パーティション) と Timestamp (ソート) の組み合わせにすることができます。パーティションキー要素を一定に保つことで、ソートキー要素を検索して項目を取得することができます。このような検索により、クエリ API を使用して、例えば、単一の UserID のすべての項目をタイムスタンプの範囲にわたって取得できます。

DynamoDB ではデータ項目に対する更新およびクエリをどのように実行しますか?

DynamoDB コンソールまたは CreateTable API を使用してテーブルを作成したら、PutItem API または BatchWriteItem API を使用して項目を挿入できます。テーブルに追加した項目は、GetItemBatchGetItems を使用して、または Query API を使用して (テーブルで複合プライマリキーが有効化されており使用されている場合) 取得できます。

DynamoDB は、どのオペレーティングシステムで実行するアプリケーションでも使用できますか? >>

はい。DynamoDB は、API を介してアクセスする完全マネージド型のクラウドサービスです。DynamoDB は、どのオペレーティングシステム (Linux、Windows、iOS、Android、Solaris、AIX、HP-UX など) で実行するアプリケーションでも使用できます。DynamoDB の使用を開始するには、AWS SDK の使用をお勧めします。

ウェブページの画像
料金ページにアクセスする

Amazon DynamoDB 料金をご覧ください。

詳細 
アカウントサインアップの画像
無料のアカウントにサインアップする

AWS 無料利用枠にすぐにアクセスできます。 

サインアップ 
ツールボックスの画像
コンソールで構築を開始する

AWS マネジメントコンソールで Amazon DynamoDB を使った構築を始めましょう。

サインイン