メインコンテンツに移動

Amazon DynamoDB

DynamoDB について

DynamoDB は、あらゆる規模で単一桁ミリ秒のパフォーマンスを実現する、サーバーレスでフルマネージド型の分散型 NoSQL データベースサービスです。ゼロインフラ管理、ゼロダウンタイムメンテナンス、ゼロメンテナンス枠を実現しています。 

デベロッパーは DynamoDB を使用して、小規模から始めてグローバルにスケールできるのサーバーレスアプリケーションを構築できます。DynamoDB は、ほぼすべてのサイズのテーブルをサポートするように拡張できます。 可用性、耐久性、耐障害性は組み込まれており、オフにすることはできないため、これらの機能に合わせてアプリケーションを構築する必要がありません。

DynamoDB は、従来のリレーショナルデータベースであれば高い負荷を生じさせていた高パフォーマンスのインターネット規模のアプリケーションを実行するように設計されています。 キーと値およびドキュメントデータモデルをサポートします。DynamoDB には柔軟なスキーマがあるので、ビジネス要件の変化に合わせて、簡単に対応させることができます。リレーショナルデータベースと同様にテーブルスキーマを再定義する必要はありません。

10 年以上にわたって先駆的なイノベーションに投資してきた DynamoDB は、無限のスケーラビリティを備えており、1 桁ミリ秒という一貫したパフォーマンスと最大 99.999% の可用性を実現しています。

パフォーマンスとスケーラビリティ

すべて開く

    DynamoDB には、プロビジョニングやパッチ、管理用のサーバーだけでなく、インストール、メンテナンス、または運用するソフトウェアもありません。DynamoDB にはバージョン (メジャー、マイナー、パッチ) がなく、メンテナンスウィンドウもありません。また、DynamoDB はダウンタイムなしのメンテナンスを提供します。 DynamoDB のオンデマンド料金は従量制料金で、ゼロまでスケールでき、自動的にテーブルをスケールして容量を調整し、管理なしでパフォーマンスを維持できます。

    他のすべてのデータベースシステムと同様に、最初に項目のコレクションであるテーブルを作成します。DynamoDB では、テーブルの各項目には独自のプライマリキーがあります。また、多くのアプリケーションでは、1 つ以上のセカンダリキーを使用することで、他の属性を使用してデータをより効率的に検索できるというメリットもあります。DynamoDB には、グローバルとローカルの両方のセカンダリインデックスを作成するオプションがあり、セカンダリキーまたは代替キーを使用してテーブル内のデータをクエリできます。

    グローバルセカンダリインデックスはスパース型インデックスとも呼ばれます。データへのアクセス方法に最大限の柔軟性をもたらすだけでなく、低コストで優れたパフォーマンスを備えたより低い書き込みスループットを提供することができます。

セキュリティ

すべて開く

    DynamoDB では、お客様の保管中のデータはすべて、デフォルトで暗号化されます。 保管中の暗号化により、AWS Key Management Service (AWS KMS) に保存されている暗号化キーを使用して、データのセキュリティを強化できます。 AWS Database Encryption SDK を追加すると、属性レベルの暗号化を実行して、テーブル内のデータに対してさらにきめ細かなアクセス制御を行うことができます。DynamoDB は、セキュリティを重視したアプリケーションを構築して、暗号化のコンプライアンスと規制の厳格な要件を満たすのに役立ちます。

    暗号化キーは、基盤となるストレージへの不正アクセスからデータを保護することで、データ保護をさらに強化します。 DynamoDB が AWS 所有キー (デフォルトの暗号化タイプ)、AWS マネージドキー、またはカスタマーマネージドキーを使用してユーザーデータを暗号化するかどうかを指定できます。AWS KMS キーを使用するデフォルトの暗号化には、追加料金はかかりません。

    DynamoDB は、AWS Identity and Access Management (IAM) を使用して、リソースへのアクセスを認証および認可します。IAM ポリシーとリソースベースのポリシーを指定し、ポリシーのタグを使用して属性ベースのアクセス制御 (ABAC) を定義するとともに、きめ細かなアクセスを許可する条件を指定して、ID に基づいてテーブル内の特定の項目と属性に対する読み取りまたは書き込みアクセスを制限できます。

    DynamoDB は、VPC 内またはオンプレミスデータセンターからの接続用に、ゲートウェイ仮想プライベートクラウド (VPC) エンドポイントとインターフェイス VPC エンドポイントをサポートしています。AWS PrivateLink で有効になっているインターフェイス VPC エンドポイントを介して、オンプレミスアプリケーションから DynamoDB へのプライベートネットワーク接続を設定できます。これにより、お客様は DynamoDB へのプライベート接続を簡素化し、コンプライアンスを維持できます。

耐障害性

すべて開く

    ポイントインタイムリカバリ (PITR) を使用することで、オペレーションによって DynamoDB テーブルが誤って上書きされたり、削除されたりしないようにできます。 PITR は DynamoDB テーブルデータの連続バックアップを提供します。このテーブルは、過去 35 日間の特定の時点に 2 つ目まで復元できます。

    PITR はプロビジョニングされた容量を使用しないため、アプリケーションのパフォーマンスや可用性には影響しません。PITR を有効にしたり、バックアップや復元オペレーションを開始したりするのは、AWS マネジメントコンソールでの 1 つのステップ 1 回の API コールと同じくらい簡単です。

    オンデマンドバックアップおよび復元で、DynamoDB テーブルのデータの完全なバックアップを作成してアーカイブできます。これを利用して企業および行政の規制要件を満たすことができます。数メガバイトから数百テラバイトまでのデータを持つテーブルを、本番アプリケーションのパフォーマンスや可用性に影響を及ぼすことなくバックアップできます。 AWS Backup との統合により、アカウント間およびリージョン間のオンデマンドバックアップのコピー、バックアップのコスト配分タグの作成、およびコールドストレージへのバックアップの移行も可能です。

    DynamoDB グローバルテーブルでは、99.999% の可用性で、選択した AWS リージョン間にデータをアクティブ/アクティブにレプリケーションできます。グローバルテーブルはマルチアクティブなので、どのレプリカからでも読み取りと書き込みが可能です。グローバルに分散しているアプリケーションは選択したリージョンのデータにローカルにアクセスできるため、1 桁ミリ秒の読み取りおよび書き込みパフォーマンスを実現できます。

    また、グローバルテーブルは、マルチリージョンのワークロードに合わせて自動的に容量をスケールします。グローバルテーブルはアプリケーションのマルチリージョンの耐障害性を向上させるため、組織の事業継続性戦略の一部として検討する必要があります。

    DynamoDB は、複雑なビジネスロジックを必要とするアプリケーションの不可分性、一貫性、独立性、永続性 (ACID) トランザクションのサポートなど、ミッションクリティカルなワークロード向けに構築されています。DynamoDB は、トランザクションのためのサーバー側のネイティブサポートを提供しているため、テーブル内およびテーブル間の複数の項目を調整したり、変更しないといった、開発者のエクスペリエンスを簡素化します。

    DynamoDB はトランザクションあたり 100 のアクションをサポートしており、デベロッパーの生産性を高めています。トランザクションのサポートにより、開発者は、DynamoDB のスケール、パフォーマンス、およびエンタープライズの利点を、より広範なミッションクリティカルなワークロードに拡張することができます。

低コスト

すべて開く

    オンデマンドキャパシティモードを使用するテーブルの場合、以前に到達したトラフィックレベルまでワークロードが上昇または下降すると、DynamoDB は瞬時に対応します。ワークロードのトラフィックレベルが新しいピークに達すると、DynamoDB はワークロードに対応するように迅速に対応します。また、オプションで個々のオンデマンドテーブルと関連するセカンダリインデックスの最大読み取りまたは書き込み (または両方の) スループットを設定できるようになりました。これにより、コストとパフォーマンスのバランスを取ることが容易になります。オンデマンドキャパシティーモードは、新しいテーブルと既存のテーブルの両方で使用できるだけでなく、コードを変更せずに既存の DynamoDB API を引き続き使用することができます。

    アクセス頻度が低いデータについては、Amazon DynamoDB Standard-IA テーブルクラスを使用できます。これにより、DynamoDB のコストを最大 60% 削減できます。ストレージコストの低い Standard-IA テーブルは、アプリケーションログ、過去のゲームデータ、古いソーシャルメディアの投稿など、アクセス頻度の低いデータを長期間保存するように設計されています。Amazon DynamoDB Standard テーブルと同じ可用性、耐久性、パフォーマンスを備えています。これは、ほとんどのワークロードにとってデフォルトで最も費用対効果の高いオプションです。

    DynamoDB には、オンデマンドとプロビジョンドのキャパシティーモードがテーブルごとに用意されています。

    • 高使用率になるかどうか不明で、予測が困難なワークロードについては、オンデマンドキャパシティモードによってキャパシティを管理することができます。支払うのは実際に消費した分だけです。
    • プロビジョンドキャパシティモードを使用するテーブルでは、読み込みおよび書き込みキャパシティを設定する必要があります。指定したプロビジョンドキャパシティを活用できると分かっている場合には、プロビジョンドキャパシティモードの方がコスト効率は高くなります。 

    プロビジョンドキャパシティーを使用するテーブルの場合、DynamoDB は、アプリケーションのパフォーマンス状況を監視して、以前に設定されたキャパシティーに基づき、スループットとストレージの自動スケーリングを実現します。

    • アプリケーションのトラフィックが増加すると、DynamoDB は負荷に対応できるようにスループットを増大します。
    • アプリケーションのトラフィックが低下すると、DynamoDB によってスケールダウンされるため、不要なキャパシティーにかかる支払いを削減することができます。

AWS サービスとの統合

すべて開く

    Amazon Simple Storage Service (Amazon S3) からの一括インポートおよびエクスポートを行うと、DynamoDB テーブルをあるアプリケーション、アカウント、またはリージョンから別のアプリケーション、アカウント、またはリージョンに移動、変換、コピーするコードを記述する必要がなくなるため、データからより多くの価値を引き出すことができます。一括インポートおよびエクスポートはテーブルの読み取りまたは書き込みキャパシティを使用しないため、追加のキャパシティを準備またはプロビジョニングする必要はありません。一括インポートおよびエクスポートプロセスは DynamoDB によって完全に管理されます。

    Amazon S3 からの一括インポートにより、CSV、DynamoDB JSON、Amazon Ion などのサポートされている形式を使用して、MB から TB まで、あらゆる規模のデータをインポートできます。 Amazon S3 からの一括インポートにより、プロビジョニングされた容量を使用するクライアントベースの書き込みと比較して、お客様は最大 66% 節約できます。

    Amazon S3 への一括エクスポートでは、過去 35 日間の任意の時点の PITR が有効になっているテーブルから、1 秒単位の精度でデータをエクスポートできます。DynamoDB から Amazon S3 にデータをエクスポートすると、Amazon Athena や Amazon SageMaker など、他の AWS サービスを使用してデータを分析し、実用的なインサイトを引き出すことができます。

    DynamoDB Streams は変更データキャプチャ機能です。アプリケーションがテーブル内の項目を作成、更新、削除するたびに、DynamoDB Streams はすべての項目レベルの変更の時系列をほぼリアルタイムで記録します。これは、イベント駆動型アーキテクチャアプリケーションが変更内容を取り込んで処理するのに最適です。すべての変更内容は 24 時間保存され、重複内容は取り除かれる設定になっています。

    アプリケーションはこのログにアクセスして、変更前と変更後のデータ項目をほぼリアルタイムで表示することもできます。DynamoDB Streams では、各ストリームレコードがストリームに 1 回だけ表示され、変更された各項目について、ストリームレコードは項目への実際の変更と同じ順序で表示されます。

    Amazon Kinesis Data Streams for DynamoDB は、DynamoDB テーブルの項目レベルの変更をキャプチャして、ライブダッシュボードを強化し、メトリクスを生成し、データレイクにデータを配信します。Kinesis Data Streams により、リアルタイムのログ集計、リアルタイムのビジネス分析、IoT データキャプチャなどのアドバンストストリーミングアプリケーションを構築することが可能になります。

    Amazon Kinesis Data Streams を通じて、Amazon Kinesis Data Firehose を使用し DynamoDB データを Amazon S3、Amazon OpenSearch Service、Amazon Redshift などの他の AWS サービスに自動的に配信することもできます。

    データベースのパフォーマンスを簡単にモニタリングできるように、DynamoDB は Amazon Cloudwatch と統合されています。Cloudwatch は、未加工のデータベースパフォーマンスデータを収集して処理します。CloudWatch を使用して、DynamoDB データベースのメトリクスとアラームのカスタマイズされたビューとダッシュボードを作成できます。このモニタリング機能はデフォルトで提供されており、無料です。メトリクスのパフォーマンスに基づいて自動的に送信されるアラームを作成することもできます。

    Amazon CloudWatch Contributor Insights を利用すると、データベースやアプリケーションのパフォーマンスに影響を及ぼしている人や原因をすばやく特定できます。この機能により、運用イベント中に問題を迅速に特定、診断、是正することがより容易になります。