Amazon DynamoDB の特徴

DynamoDB を選ぶ理由

Amazon DynamoDB は、key-valueドキュメントデータモデルをサポートするサーバーレスの NoSQL データベースサービスです。デベロッパーは DynamoDB を使用して、小規模から始めてグローバルにスケールできる最新のサーバーレスアプリケーションを構築できます。DynamoDB は、自動水平スケーリングにより、事実上あらゆるサイズのテーブルをサポートするようにスケールされます。

可用性、耐久性、フォールトトレランスが組み込まれており、オフにすることはできないため、これらの機能を備えるようにアプリケーションを構築する必要はありません。

DynamoDB は、従来のリレーショナルデータベースであれば高い負荷を生じさせていた高パフォーマンスのインターネット規模のアプリケーションを実行するように設計されています。10 年を超える期間にわたって先駆的なイノベーションに投資してきた DynamoDB は、無限のスケーラビリティを備えており、1 桁ミリ秒という一貫したパフォーマンスと最大 99.999% の可用性を実現しています。

新しい特徴と機能の詳細については、DynamoDB の最新情報のお知らせにアクセスしてください。

無限のスケーラビリティを備えたサーバーレスのパフォーマンス

DynamoDB では Key-value およびドキュメントデータモデルのいずれもサポートされています。NoSQL データベースである DynamoDB には柔軟なスキーマがあるため、各項目にさまざまな属性を持たせることができます。柔軟なスキーマにより、ビジネス要件の変化に合わせて、簡単に対応させることができます。リレーショナルデータベースと同様にテーブルスキーマを再定義する必要はありません。

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

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

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

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

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

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

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

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

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

セキュリティと信頼性

DynamoDB では、ユーザー名やパスワードはありません。DynamoDB は AWS Identity and Access Management (IAM) を使用して、リソースを認証および作成したり、リソースにアクセスしたりします。IAM ポリシーリソースベースのポリシー と条件を指定することで、きめ細かなアクセスを可能にし、そのユーザーの ID に基づいてテーブル内の特定の項目や属性への読み取りまたは書き込みアクセスを制限できます。これにより、お客様はコードレベルでセキュリティポリシーを強制できます。

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

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

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

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

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

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

低コスト

DynamoDB は、オンデマンドとプロビジョンドのキャパシティモードを各テーブルに提供します。

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

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

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

プロビジョンドキャパシティを使用するテーブルの場合、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 サービスを使用してデータを分析し、実用的なインサイトを引き出すことができます。

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

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

よくある質問

DynamoDB の特有の利点には、1 桁ミリ秒のパフォーマンスと最大 99.999% の可用性を実現する、実績のあるフルマネージド型のスケールツーゼロサーバーレスデータベースであることが含まれます。DynamoDB は、大規模かつ一貫したパフォーマンスを備えているため、極めて厳しい要件を満たす必要があるグローバルアプリケーションに必要なセキュリティ、耐久性、信頼性も組み込まれています。

その使いやすさにより、DynamoDB は、新しいモダンなアプリケーションでも、無限のスケーラビリティで一貫した高速パフォーマンスを求める、確立されたインターネット規模のアプリケーションでも、よく利用されています。

DynamoDB はデベロッパー向けに構築されており、サーバーレスであるため、テクニカルドキュメントを参照して簡単にセットアップできます