Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

ハイブリッドなデータベースシステムを実装するためのベストプラクティス

状況によっては、1 つ以上のリレーショナルデータベース管理システム (RDBMS) から DynamoDB へ移行することは有効ではない場合があります。このような場合は、ハイブリッドシステムを作成することをお勧めします。

すべてを DynamoDB に移行したくない場合は

たとえば、組織によっては、会計や運用に必要な多数のレポートを生成するコードに多額の資金を投資している場合があります。レポートの生成に要する時間は重要ではありません。リレーショナルシステムの柔軟性はこのような類のタスクに適しており、NoSQL コンテキストでこれらのレポートをすべて作成し直すことは非常に困難かもしれません。

また、一部の組織では、何十年にも渡って取得または継承してきた、従来のさまざまなリレーショナルシステムが使用され続けています。これらのシステムからデータを移行することは、あまりにも危険なだけでなく、高価なため、その労力を正当に評価できない場合があります。

ただし、このような組織の業務は、高トラフィックのお客様向けウェブサイトに依存していること分かります。ここでは、ミリ秒単位の対応が不可欠です。リレーショナルシステムでは、巨大な (多くの場合は承認できない) 費用がある場合を除き、この要件を満たすようにスケーリングすることはできません。

このような状況では、DynamoDB で 1 つ以上のリレーショナルシステムに格納されたデータのマテリアライズドビューを作成し、このビューに対して高トラフィックのリクエストを処理するハイブリッドシステムを作成することができます。このタイプのシステムでは、お客様向けのトラフィックを処理するために以前必要だったサーバーハードウェアやメンテナンスおよび RDBMS ライセンスを排除することで、潜在的なコストを削減できます。

ハイブリッドシステムの実装方法

DynamoDB では、DynamoDB ストリームと AWS Lambda を利用して、1 つ以上の既存のリレーショナルデータベースシステムとシームレスに統合できます。

DynamoDB を既存の SQL システムと統合する方法を示す図。

DynamoDB ストリームと AWS Lambda を統合するシステムには、いくつかの利点があります。

  • マテリアライズドビューの永続キャッシュとして機能する。

  • データがクエリされるときや、SQL システムでデータが変更されるときに、そのデータを徐々に満たすように設定することができる。つまり、ビュー全体を事前に設定する必要はありません。これにより、プロビジョニングされたスループットのキャパシティーが効率的に利用される可能性が高くなります。

  • 管理コストが低く、高い可用性と信頼性を備えています。

このような統合を実装するには、本質的に 3 種類の相互運用を実現する必要があります。

DynamoDB と既存の SQL システムを統合するために必要なコーディング。
  1. DynamoDB キャッシュを段階的に埋めます。項目をクエリする場合は、DynamoDB で最初に検索します。存在しない場合は、SQL システムで検索し、DynamoDB にロードします。

  2. DynamoDB キャッシュを通じて書き込みます。顧客が DynamoDB で値を変更すると、Lambda 関数がトリガーされ、新しいデータが SQL システムに書き戻されます。

  3. SQL システムから DynamoDB を更新します。在庫管理や価格設定などの内部プロセスで SQL システムの値が変更されると、ストアドプロシージャがトリガーされ、DynamoDB マテリアライズドビューに変更が反映されます。

これらの操作は簡単です。すべてのシナリオでこれらの操作がすべて必要とは限りません。

ハイブリッドソリューションは、主に DynamoDB を使用する場合にも便利ですが、クエリを一度のみ実行する場合、または特別なセキュリティが必要なオペレーションや、時間が重要でないオペレーションに対しては、小さなリレーショナルシステムを維持する場合もあります。