Amazon DynamoDB とは - Amazon DynamoDB

Amazon DynamoDB とは

Amazon DynamoDB は、サーバーレスのフルマネージド NoSQL データベースで、あらゆる規模で 1 桁ミリ秒のパフォーマンスを実現します。

DynamoDB を使用すると、リレーショナルデータベースのスケーリングと運用の複雑さの課題に対応できます。DynamoDB は、あらゆる規模で一貫したパフォーマンスを必要とするオペレーションワークロード向けに構築され、最適化されています。例えば、DynamoDB は、10 ユーザーの場合でも 1 億ユーザーの場合でも、ショッピングカートのユースケースで一貫した 1 桁ミリ秒のパフォーマンスを提供します。2012 年にリリースされた DynamoDB は、コストの削減と大規模運用におけるパフォーマンスの向上を実現しながら、リレーショナルデータベースからの移行を支援し続けています。

DynamoDB を使用して、すべての規模、業界、地域のお客様が、小規模から始めてグローバルにスケールできる最新のサーバーレスアプリケーションを構築しています。DynamoDB は、ほぼすべてのサイズのテーブルをサポートするようにスケールしながら、一貫した 1 桁ミリ秒のパフォーマンスと高可用性を提供します。

Amazon プライムデーなどのイベントの場合、DynamoDB は、AlexaAmazon.com サイト、すべての Amazon フルフィルメントセンターなど、トラフィックの多い複数の Amazon の施設とシステムを強化します。このようなイベントでは、DynamoDB API は、Amazon の施設とシステムからの数兆にもおよぶ呼び出しを処理してきました。DynamoDB は、ピークトラフィックが 1 秒あたり 50 万件を超えるテーブルで、数百人ものお客様に継続的にサービスを提供しています。また、テーブルサイズが 200 TB を超える数百のお客様に対応し、1 時間あたり 10 億件を超えるリクエストを処理します。

DynamoDB の特徴

サーバーレス

DynamoDB では、サーバーのプロビジョニングや、ソフトウェアへのパッチの適用、ソフトウェアの管理、インストール、保守、運用は必要はありません。DynamoDB はダウンタイムのないメンテナンスを提供します。バージョン (メジャー、マイナー、パッチ) は存在せず、メンテナンスウィンドウもありません。

DynamoDB のオンデマンドキャパシティモードは、読み込みおよび書き込みリクエストの料金が従量制であるため、お客様は使用した分だけを支払います。オンデマンドでは、DynamoDB はテーブルを即座にスケールアップまたはスケールダウンして容量を調整し、管理なしでパフォーマンスを維持します。また、ゼロまでスケールダウンできるため、テーブルにトラフィックがなく、コールドスタートがない場合はスループットに対する料金は発生しません。

NoSQL

DynamoDB は NoSQL データベースで、従来のリレーショナルデータベースと比較して、パフォーマンス、スケーラビリティ、管理性、柔軟性を向上させる目的のために構築されています。DynamoDB は、さまざまなユースケースをサポートするために、key-value モデルとドキュメントデータモデルの両方をサポートしています。

リレーショナルデータベースとは異なり、DynamoDB は JOIN 演算子をサポートしません。クエリへの回答に必要なデータベースのラウンドトリップと処理能力を減らすために、データモデルを非正規化することをお勧めします。NoSQL データベースとして、DynamoDB はエンタープライズグレードのアプリケーションを構築するための強力な読み取り整合性ACID トランザクションを提供します。

フルマネージド型

DynamoDB はフルマネージド型のデータベースサービスで、データベース管理の画一的で負荷の高いを作業を処理し、お客様は顧客への価値の提供に集中できます。DynamoDB は、セットアップ、設定、メンテナンス、高可用性、ハードウェアプロビジョニング、セキュリティ、バックアップ、モニタリングなどをお客様に代わって行います。これにより、DynamoDB テーブルを作成するだけで、本番環境のワークロードに対応できるようになります。DynamoDB は、アップグレードやダウンタイムを必要とせず、可用性、信頼性、パフォーマンス、セキュリティ、機能を継続的に改善します。

あらゆるスケールで 1 桁ミリ秒のパフォーマンス

DynamoDB は、リレーショナルデータベースのパフォーマンスとスケーラビリティを向上させ、あらゆる規模で 1 桁ミリ秒のパフォーマンスを実現することを目的として構築されています。このスケールとパフォーマンスを実現するために、DynamoDB は高パフォーマンスのワークロードに最適化され、データベースの効率的な使用を促進する API を提供します。JOIN オペレーションなど、非効率でパフォーマンスの低い機能を大規模に除外します。DynamoDB は、100 ユーザーの場合でも 1 億ユーザーの場合でも、アプリケーションで一貫した 1 桁ミリ秒のパフォーマンスを提供します。

DynamoDB のユースケース

DynamoDB を使用して、すべての規模、業界、地域のお客様が、小規模から始めてグローバルにスケールできる最新のサーバーレスアプリケーションを構築しています。DynamoDB は、運用上のオーバーヘッドがほとんどないかゼロで、あらゆる規模で一貫したパフォーマンスを必要とするユースケースに最適です。次のリストは、DynamoDB を使用できるいくつかのユースケースを示しています。

  • 金融サービスアプリケーション — ライブ取引とルーティング、ローン管理、トークン生成、取引台帳などのアプリケーションを構築する金融サービス企業の場合、DynamoDB のグローバルテーブルを使用すると、アプリケーションはイベントに応答し、選択した AWS リージョン からのトラフィックを高速なローカル読み取り/書き込みパフォーマンスで処理できます。

    DynamoDB は、可用性要件が最も厳しいアプリケーションに適しています。DynamoDB を使用すると、ストレージやスループットの強化、バージョニング、ライセンスのために。インスタンスを手動でスケーリングする運用上の負担がなくなります。

    DynamoDB トランザクションを使用して、1 回のリクエストで 1 つ以上のテーブルでアトミック性、整合性、分離性、耐久性 (ACID) を実現できます。(ACID) トランザクションは、金融取引の処理や注文の処理を含むワークロードに適しています。DynamoDB はワークロードの増減に瞬時に対応するため、取引時間などの市場状況に合わせてデータベースを効率的にスケーリングできます。

  • ゲームアプリケーション – ゲーム会社では、ゲームの状態、プレイヤーデータ、セッション履歴、リーダーボードなど、ゲームプラットフォームのすべての部分において DynamoDB を使用できます。DynamoDB は、スケーラビリティ、一貫したパフォーマンス、およびサーバーレスアーキテクチャによる操作の容易性を提供します。DynamoDB は、ゲームの成功に必要なスケールアウトアーキテクチャに適しています。DynamoDB は、ゲームのスループットをすばやくスケールインおよびスケールアウト (コールドスタートなしでゼロにスケーリング) します。このスケーラビリティにより、ピークトラフィックをスケールアウトする場合も、ゲームプレイの使用量が少ない場合にスケールバックする場合も、アーキテクチャの効率が最適化されます。

  • ストリーミングアプリケーション – メディアおよびエンターテイメント企業は、コンテンツのメタデータインデックス、コンテンツ管理サービス、スポーツのスタッツのほぼリアルタイムの提供のために DynamoDB を使用することができます。また、DynamoDB を使用して、ユーザーのウォッチリストとブックマークサービスを提供し、レコメンデーションを生成するために 1 日に数十億の顧客イベントを処理することができます。これらのお客様は、DynamoDB のスケーラビリティ、パフォーマンス、耐障害性からメリットを得られます。DynamoDB は、ワークロードの増減に合わせてスケールし、あらゆるレベルの需要に対応できるストリーミングメディアのユースケースを可能にします。

さまざまな業界における DynamoDB のお客様事例の詳細については、「Amazon DynamoDB Customers」および「This is My Architecture」を参照してください。

DynamoDB の機能

グローバルテーブルによるマルチアクティブレプリケーション

グローバルテーブルは、99.999% の可用性で、選択した AWS リージョン 全体でデータのマルチアクティブレプリケーションを提供します。グローバルテーブルは、マルチリージョン、マルチアクティブデータベースをデプロイするためのフルマネージドソリューションです。独自のレプリケーションソリューションを構築および管理する必要はありません。グローバルテーブルを使用すると、テーブルを利用できる AWS リージョン リージョンを指定できます。DynamoDB は、進行中のデータ変更をこれらのすべてのテーブルにレプリケートします。

グローバルに分散されたアプリケーションは、選択したリージョン内のデータにローカルにアクセスして、1 桁ミリ秒の読み取りおよび書き込みパフォーマンスを実現します。グローバルテーブルはマルチアクティブであるため、プライマリテーブルは必要ありません。つまり、リージョン間でアプリケーションをフェイルオーバーする場合、複雑なフェイルオーバーやフェイルオーバーの遅延、データベースのダウンタイムはありません。

ACID トランザクション

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

イベント駆動型アーキテクチャ向けの変更データキャプチャ

DynamoDB は、項目レベルの変更データキャプチャ (CDC) レコードのストリーミングをほぼリアルタイムでサポートします。DynamoDB には、DynamoDB StreamsDynamoDB 用 Kinesis Data Streams の 2 つの CDC 用 ストリーミングモデルがあります。アプリケーションがテーブル内の項目を作成、更新、または削除するたびに、ストリームは項目レベルのすべての変更の時系列シーケンスをほぼリアルタイムで記録します。これにより、DynamoDB Streams は、イベント駆動型アーキテクチャのアプリケーションでの変更の消費と変更への対応に適しています。

セカンダリインデックス

DynamoDB は、グローバルセカンダリインデックスとローカルセカンダリインデックスの両方を作成するオプションを備えており、代替キーを使用してテーブルデータをクエリできます。これらのセカンダリインデックスを使用すると、プライマリキー以外の属性でデータにアクセスできるため、データに最大限の柔軟性がもたらされます。

サービス統合

DynamoDB は複数の AWS のサービス と広く統合されており、データからより多くの価値を引き出し、画一的で負荷の高い作業を排除して、ワークロードの大規模な運用に役立ちます。これらのサービスには、AWS CloudFormation、Amazon CloudWatch、Amazon S3、AWS Identity and Access Management (IAM)、AWS Auto Scaling が含まれます。以下のセクションでは、DynamoDB を使用して実行できるサービス統合の一部について説明します。

サーバーレス統合

エンドツーエンドのサーバーレスアプリケーションを構築するために、DynamoDB は多数のサーバーレス AWS のサービス とネイティブに統合できます。例えば、DynamoDB を AWS Lambda と統合すると、DynamoDB Streams のイベントに自動的に応答するコードであるトリガーを作成することができます。トリガーを使用すると、DynamoDB テーブル内のデータ変更に対応するイベント駆動型アプリケーションを構築できます。コストを最適化するために、Lambda が DynamoDB ストリームから処理するイベントをフィルタリングできます。

次のリストは、DynamoDB とのサーバーレス統合の例を示しています。

Amazon S3 との間のデータのインポートとエクスポート

DynamoDB を Amazon S3 と統合することで、分析と機械学習のためにデータを Amazon S3 バケットに簡単にエクスポートできます。DynamoDB は、テーブルのフルエクスポートと増分エクスポートをサポートし、指定した期間に変更、更新、または削除されたデータをエクスポートできます。また、新しい DynamoDB テーブルに Amazon S3 からデータをインポートすることもできます。

ゼロ ETL 統合

DynamoDB は、Amazon Redshift および Amazon OpenSearch Service とのゼロ ETL 統合をサポートしています。これらの統合により、複雑な分析を実行し、DynamoDB テーブルデータで高度な検索機能を使用できます。例えば、全文検索とベクトル検索、および DynamoDB データに対するセマンティック検索を実行できます。ゼロ ETL 統合は、DynamoDB で実行されている本番稼働ワークロードには影響しません。

キャッシュ

DynamoDB Accelerator (DAX) は、DynamoDB 用に構築されたフルマネージド型の高可用性キャッシュサービスです。DAX は、1 秒あたり数百万のリクエストの場合でも、最大 10 倍のパフォーマンス向上 (ミリ秒からマイクロ秒) を実現します。DAX は、ユーザーによるキャッシュの無効化の管理、データの入力、クラスターの管理を必要とすることなく、DynamoDB テーブルへのインメモリアクセラレーションの追加に必要なすべての作業を行います。

セキュリティ

DynamoDB は IAM を使用して、DynamoDB リソースへのアクセスをコントロールします。IAM を使用すると、DynamoDB ユーザーがアクセスできるリソースをコントロールするアクセス許可を一元的に管理できます。IAM を使用して、誰を認証 (サインイン) し、誰にリソースの使用を認可する (アクセス許可を付与する) かを制御します。DynamoDB は IAM を使用するため、DynamoDB にアクセスするためのユーザー名やパスワードは必要ありません。管理すべき複雑なパスワードローテーションポリシーがないため、セキュリティ体制が簡素化されます。また IAM では、きめ細かなアクセスコントロールを有効にして、属性レベルでの認証を行うことができます。IAM Access Analyzerブロックパブリックアクセス (BPA) をサポートするリソースベースのポリシーを定義して、ポリシー管理を簡素化することもできます。

デフォルトで、DynamoDB は保管中の顧客データをすべて暗号化します。保管時の暗号化は、AWS Key Management Service (AWS KMS) に保存されている暗号化キーを使用して、データのセキュリティを強化します。保管時に暗号化することで、セキュリティを重視したアプリケーションを構築して、暗号化のコンプライアンスと規制の厳格な要件を満たすことができます。暗号化されたテーブルにアクセスすると、DynamoDB はテーブルデータを透過的に復号化します。暗号化されたテーブルの使用あるいは管理のためにコードやアプリケーションを変更する必要はありません。DynamoDB は、期待される 1 桁ミリ秒のレイテンシーを継続的に提供し、すべての DynamoDB クエリは、暗号化されたデータでシームレスに機能します。

DynamoDB でのユーザーデータの暗号化には、AWS 所有のキー (デフォルトの暗号化キー)、AWS マネージドキー、またはカスタマーマネージドキーのいずれかの使用を指定できます。AWS 所有の KMS キーを使用したデフォルトの暗号化は、追加料金なしで利用できます。クライアント側の暗号化には、AWS Database Encryption SDK を使用できます。

また、DynamoDB は HIPAA、PCI DSS、GDPR などの複数のコンプライアンス標準に準拠しているため、規制要件も満たすことができます。

レジリエンス

デフォルトで、DynamoDB は 3 つのアベイラビリティーゾーンにデータを自動的にレプリケートし、高い耐久性と 99.99% の可用性 SLA を提供します。DynamoDB は、ビジネス継続性とディザスタリカバリの目標の達成に役立つ追加機能も備えています。

DynamoDB には、データの耐障害性とバックアップのニーズのサポートに役立つ以下の機能が含まれています。

グローバルテーブル

DynamoDB グローバルテーブルは、99.999% の可用性 SLA とマルチリージョンレジリエンスを実現します。これにより、回復力の高いアプリケーションを構築し、目標復旧時間 (RTO) と目標復旧時点 (RPO) を最小限に抑えるように最適化できます。また、グローバルテーブルは AWS Fault Injection Service (AWS FIS) と統合し、グローバルテーブルワークロードでフォールトインジェクションテストを行います。例えば、レプリカテーブルへのグローバルテーブルレプリケーションを一時停止します。

継続的バックアップとポイントインタイムリカバリ

継続的バックアップは、秒単位の粒度とポイントインタイムリカバリを開始する機能を提供します。ポイントインタイムリカバリを使用すると、過去 35 日間の任意の時点に、秒単位でテーブルを復元することができます。

継続的バックアップとポイントインタイム復元の開始では、プロビジョニングされたキャパシティは使用されません。また、アプリケーションのパフォーマンスや可用性にも影響しません。

オンデマンドバックアップと復元

オンデマンドバックアップと復元を使用して、テーブルの完全なバックアップを作成し、規制やコンプライアンス要件を満たすための長期間の保存とアーカイブを行うことができます。バックアップはテーブルのパフォーマンスには影響せず、任意のサイズのテーブルをバックアップできます。AWS Backup 統合では、AWS Backup を使用して DynamoDB のオンデマンドバックアップのライフサイクルのスケジューリング、コピー、タグ付け、管理を自動的に行えます。AWS Backup を使用すると、アカウント間およびリージョン間でオンデマンドバックアップをコピーし、古いバックアップをコールドストレージに移行してコストを最適化できます。

DynamoDB にアクセスする

DynamoDB は、AWS Management ConsoleAWS Command Line InterfaceDynamoDB 用の NoSQL Workbench、または DynamoDB API を使用して操作することができます。

詳細については、「DynamoDB にアクセスする」を参照してください。

DynamoDB の料金

DynamoDB では、テーブル内のデータの読み取り、書き込み、保存、および有効化されたオプション機能に対して料金が発生します。DynamoDB にはオンデマンドプロビジョニング済みという 2 種類のキャパシティーモードがあり、それぞれのモードにおけるテーブルの読み書き処理について個別の請求オプションがあります。

また、DynamoDB には、25 GB のストレージを提供する無料利用枠もあります。無料利用枠には、25 個のプロビジョニング済み書き込みキャパシティーユニット、および 25 個のプロビジョニング済み読み込みキャパシティーユニット (WCU、RCU) も含まれています。これは、1 か月あたり 2 億件のリクエストを処理するのに十分なキャパシティです。

詳細については、「Amazon DynamoDB 料金」を参照してください。

DynamoDB の使用開始

DynamoDB を初めて使用するユーザーは、初めに以下のトピックを読むことをお勧めします。

  • DynamoDB の使用開始 – DynamoDB のセットアップ、サンプルテーブルの作成、データのアップロードのプロセスについて説明します。このトピックでは、AWS Management Console、AWS CLI、NoSQL Workbench、および DynamoDB API を使用して基本的なデータベースオペレーションを実行する方法についても説明します。

  • DynamoDB のコアコンポーネント — DynamoDB の基本的な概念について説明します。

  • DynamoDB を使用した設計とアーキテクチャの設計に関するベストプラクティス – NoSQL の設計、DynamoDB の Well-Architected レンズ、テーブルの設計、その他のいくつかの DynamoDB 機能に関するベストプラクティスについて説明します。これらのベストプラクティスは、DynamoDB を使用する際のパフォーマンスを最大化し、スループットコストを最小限に抑えるのに役立ちます。

DynamoDB を理解するためのエンドツーエンドの一連の手順について説明する、以下のチュートリアルもお勧めします。これらのチュートリアルは、AWS の無料利用枠でご覧いただけます。

DynamoDB に移行するためのリソース、ツール、戦略については、DynamoDB への移行」を参照してください。最新のブログとホワイトペーパーを読むには、「Amazon DynamoDB リソース」を参照してください。