Amazon QLDB からのジャーナルデータのストリーミング - Amazon Quantum Ledger Database (Amazon QLDB)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon QLDB からのジャーナルデータのストリーミング

Amazon QLDB では、イミュータブルトランザクションログ (ジャーナル) をデータストレージに使用します。ジャーナルは、コミット済みデータへの変更をすべて追跡し、完全かつ検証可能な変更履歴を一定の期間にわたって維持します。

ジャーナルへコミットされたドキュメントリビジョンをすべてキャプチャするストリーミングを QLDB で作成し、このデータを Amazon Kinesis Data Streams にほぼリアルタイムで配信できます。QLDB ストリーミングは、台帳のジャーナルから Kinesis データストリームリソースへの連続的なデータのフローです。

その後、Kinesis ストリーミングプラットフォームまたは Kinesis Client Library を使用して、ストリーミングの消費、データレコードの処理、およびデータコンテンツの分析を行います。QLDB ストリーミングは、コントロール、ブロックサマリー、およびリビジョンの詳細という 3 種類のレコードで Kinesis Data Streams にデータを書き込みます。詳細については、「Kinesis での QLDB ストリーミングレコード」を参照してください。

一般的なユースケース

ストリーミングを使用すると、ジャーナルデータを他のサービスと統合しながら、検証可能な信頼できる唯一の情報源として QLDB を使用できます。QLDB ジャーナルストリーミングでサポートされている一般的ユースケースの一部を以下に示します。

  • イベント駆動型アーキテクチャ - デカップリングされたコンポーネントを使用して、イベント駆動型アーキテクチャスタイルでアプリケーションを構築します。たとえば、銀行は AWS Lambda 関数を使用して、口座残高がしきい値を下回ったときに顧客に警告する通知システムを実装できます。このようなシステムでは、口座残高は QLDB 台帳に維持され、残高の変更はジャーナルに記録されます。この AWS Lambda 関数は、ジャーナルにコミットされて Kinesis データストリームに送信される残高更新イベントを消費したときに、通知ロジックをトリガーできます。

  • リアルタイム分析 - イベントデータに対してリアルタイム分析を実行する Kinesis コンシューマーアプリケーションを構築します。この機能により、ほぼリアルタイムでインサイトを取得し、変化するビジネス環境に迅速に対応できます。たとえば、e コマースウェブサイトでは、商品の販売データを分析し、販売が制限に達するとすぐに割引商品の広告を停止できます。

  • 履歴分析 - 履歴イベントデータを再生することで、Amazon QLDB のジャーナル指向アーキテクチャを活用します。QLDB ストリーミングを過去の任意の時点から開始するように選択し、その時点以降のすべてのリビジョンが Kinesis Data Streams に配信されるようにできます。この機能を使用すると、履歴データの分析ジョブを実行する Kinesis コンシューマーアプリケーションを構築できます。たとえば、e コマースの Web サイトでは、必要に応じて分析を実行して、これまで取得されていなかった過去の売上指標を生成できます。

  • 目的別データベースへのレプリケーション - QLDB ジャーナルストリーミングを使用して、QLDB 台帳を他の目的別データストアに接続します。たとえば、Kinesis ストリーミングデータプラットフォームを使用して、QLDB ドキュメントの全文検索機能を提供できる Amazon OpenSearch Service と統合します。また、カスタム Kinesis コンシューマーアプリケーションを構築して、異なるマテリアライズドビューを提供する他の目的別データベースにジャーナルデータをレプリケートすることもできます。たとえば、リレーショナルデータの場合は Amazon Aurora、グラフベースのデータの場合は Amazon Neptune にレプリケートします。

ストリームの消費

データレコードの大量のストリーミングの連続的な消費、処理、分析には、Kinesis Data Streams を使用します。Kinesis Data Streams に加えて、Kinesis ストリーミングデータプラットフォームには Amazon Kinesis Data FirehoseAmazon Kinesis Data Analytics があります。このプラットフォームを使用して、Amazon OpenSearch Service、Amazon Redshift、Amazon S3、Splunk などのサービスにデータレコードを直接送信できます。詳細については、「Amazon Kinesis Data Streams デベロッパーガイド」の「Amazon Kinesis Data Streams コンシューマー」を参照してください。

Kinesis Client Library (KCL) を使用して、カスタムな方法でデータレコードを処理するストリーミングコンシューマーアプリケーションを構築することもできます。KCL は、低レベルの Kinesis Data Streams API の上で役に立つ抽象化を提供することによりコーディングを簡素化します。KCL の詳細については、Amazon Kinesis Data Streams デベロッパーガイドの「Kinesis Client Library を使用する」を参照してください

配信の保証

QLDB at-least-onceストリームは配信保証を提供します。QLDB ストリーミングで生成された各データレコードは、Kinesis Data Streams に少なくとも 1 回配信されます。同じレコードが Kinesis データストリームに複数回表示されることがあります。したがって、ユースケースで必要な場合は、コンシューマーアプリケーションレイヤーに重複除外ロジックが必要です。

また、注文の保証はありません。状況によっては、QLDB ブロックとリビジョンが Kinesis データストリーム内で誤った順序で生成されることがあります。詳細については、「 out-of-order重複およびレコードの処理」を参照してください。

配信遅延に関する考慮事項

QLDB ストリーミングは、通常、ほぼリアルタイムで Kinesis Data Streams にアップデートを配信します。ただし、以下のシナリオでは、新たにコミットされた QLDB データが Kinesis データストリームに出力されるまでにさらに遅延が発生する可能性があります。

  • Kinesis は、Kinesis データストリームのプロビジョニングに応じて、QLDB からストリーミングされるデータを制限できます。たとえば、単一の Kinesis データストリームに書き込む QLDB ストリームが複数あり、QLDB のリクエストレートが Kinesis ストリームリソースの容量を超える場合に発生する可能性があります。Kinesis のスロットリングは、オンデマンドプロビジョニングを使用する場合も、15 分以内にスループットが前回のピークの 2 倍以上に増加した場合にも発生する可能性があります。

    この超過スループットは、Kinesis メトリクスを監視することで測定できますWriteProvisionedThroughputExceeded。詳細および可能な解決策については、「Kinesis Data Streams のスロットリングエラーのトラブルシューティング方法を教えてください」を参照してください。

  • QLDB ストリームでは、開始日時が過去のもので、終了日時がない無期限のストリームを作成できます。設計上、QLDB は、指定された開始日時の以前のデータがすべて正常に配信された後にのみ、新たにコミットされたデータを Kinesis Data Streams に出力し始めます。このシナリオで待ち時間が長くなる場合は、前のデータが配信されるのを待つ必要があるかもしれません。または、開始日時を遅らせてストリームを開始することもできます。

ストリームの使用開始

Kinesis Data Streams へのジャーナルデータのストリーミングを開始するために必要な手順の概要を次に示します。

  1. Kinesis Data Streams リソースを作成します。詳細については、「Amazon Kinesis Data Streams デベロッパーガイド」の「データストリームの作成および更新」を参照してください。

  2. QLDB が Kinesis データストリームの書き込み許可を引き受けることができる IAM ロールを作成します。手順については、「QLDB のストリーミング許可」を参照してください。

  3. QLDB ジャーナルストリーミングを作成します。手順については、「QLDB でのストリーミングの作成と管理」を参照してください。

  4. 前のセクション「ストリームの消費」で説明したように、Kinesis データストリームを消費します。Kinesis Client Library または AWS Lambda の使用方法を示すコード例については、「QLDB でのストリーミングを使用した開発」を参照してください。