翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ハイブリッドなデータベースシステムを実装するためのベストプラクティス
状況によっては、1 つ以上のリレーショナルデータベース管理システム (RDBMS) から Amazon DynamoDB へ移行することは有効ではない場合があります。このような場合は、ハイブリッドシステムを作成することをお勧めします。
すべてを DynamoDB に移行したくない場合
例えば、組織によっては、会計や運用に必要な多数のレポートを生成するコードに多額の資金を投資している場合があります。レポートの生成に要する時間は重要ではありません。リレーショナルシステムの柔軟性はこのような類のタスクに適しており、NoSQL コンテキストでこれらのレポートをすべて作成し直すことは非常に困難かもしれません。
また、一部の組織では、何十年にも渡って取得または継承してきた従来のさまざまなリレーショナルシステムが使用され続けています。これらのシステムからデータを移行することは、あまりにも危険なだけでなく、高価なため、その労力を正当に評価できない場合があります。
ただし、このような組織の業務は、高トラフィックのお客様向けウェブサイトに依存していること分かります。ここでは、ミリ秒単位の対応が不可欠です。リレーショナルシステムでは、巨大な (多くの場合は承認できない) 費用がある場合を除き、この要件を満たすようにスケーリングすることはできません。
このような状況では、DynamoDB で 1 つ以上のリレーショナルシステムに格納されたデータのマテリアライズドビューを作成し、このビューに対して高トラフィックのリクエストを処理するハイブリッドシステムを作成することができます。このタイプのシステムでは、お客様向けのトラフィックを処理するために以前必要だったサーバーハードウェアやメンテナンスおよび RDBMS ライセンスを排除することで、潜在的なコストを削減できます。
ハイブリッドシステムの実装方法
DynamoDB では、DynamoDB Streams と を活用して AWS Lambda 、既存のリレーショナルデータベースシステムとシームレスに統合できます。
DynamoDB Streams と を統合するシステムには、いくつかの利点 AWS Lambda があります。
-
マテリアライズドビューの永続キャッシュとして機能する。
-
データがクエリされるときや、SQL システムでデータが変更されるときに、そのデータを徐々に満たすように設定することができる。つまり、ビュー全体を事前に入力する必要はありません。したがって、プロビジョンドスループット性能が効率的に使用される可能性が高くなります。
-
管理コストが低く、高い可用性と信頼性を備えています。
このような統合を実装するには、本質的に 3 種類の相互運用を実現する必要があります。
-
DynamoDB キャッシュを段階的に埋めます。項目をクエリする場合は、最初に DynamoDB で検索します。存在しない場合は、SQL システムで検索し、DynamoDB にロードします。
-
DynamoDB キャッシュを通じて書き込みます。顧客が DynamoDB で値を変更すると、Lambda 関数がトリガーされ、新しいデータが SQL システムに書き戻されます。
-
SQL システムから DynamoDB を更新します。インベントリ管理や価格設定などの内部プロセスで SQL システムの値が変更されると、ストアドプロシージャがトリガーされ、DynamoDB マテリアライズドビューに変更が反映されます。
これらのオペレーションは簡単です。また、すべてのシナリオでこれらのオペレーションがすべて必要とは限りません。
ハイブリッドソリューションは、主に DynamoDB を使用する場合にも便利ですが、クエリを一度のみ実行する場合、または特別なセキュリティが必要なオペレーションや、時間が重要でないオペレーションに対しては、小さなリレーショナルシステムを維持する場合もあります。