データ ドリブン企業では、バックエンドと分析のシステムを顧客向けアプリケーションとほぼリアルタイムで同期させておく必要があります。 トランザクション、更新、変更の影響は、エンドツーエンドのプロセス、関連アプリケーション、およびオンライン トランザクション処理 (OLTP) システムを通じて正確に反映される必要があります。 OLTP アプリケーションの変更が、データを使用するダウンストリーム システムに反映されるまでに許容できる待ち時間は、ほんの数分である場合があります。
この記事では、レイクハウス データを同期させておくために、ほぼリアルタイムのデータ処理を行うエンド ツー エンドのソリューションについて説明します。このソリューションでは、データの処理と分析に Azure Event Hubs、Azure Synapse Analytics、および Azure Data Lake Storage を使用します。
Apache® および Apache Spark は、Apache Software Foundation の米国およびその他の国における登録商標です。 これらのマークを使用することが、Apache Software Foundation による保証を意味するものではありません。
アーキテクチャ
このアーキテクチャの Visio ファイルをダウンロードします。
データフロー
変更データ キャプチャは、ソース システムが変更をリッスンするための前提条件です。 Debezium コネクタは、さまざまなソース システムに接続し、発生した変更を引き出すことができます。 このコネクタは、変更をキャプチャし、さまざまなリレーショナル データベース管理システム (RDBMS) からイベントを生成できます。 Debezium コネクタをインストールするには、Kafka 接続システムが必要です。
コネクタは変更データを抽出し、キャプチャしたイベントを Azure Event Hubs に送信します。 Event Hubs は、複数のソースから大量のデータを受信できます。
Event Hubs は、Azure Synapse Analytics Spark プールにデータを直接ストリーミングするか、未加工の形式で Azure Data Lake Storage ランディング ゾーンにデータを送信できます。
他のバッチ データ ソースは、Azure Synapse パイプラインを使用して、データを Data Lake Storage にコピーし、処理に使用できるようにします。 エンド ツー エンドの抽出、変換、読み込み (ETL) ワークフローでは、異なるステップの連結や、ステップ間の依存関係の追加が必要になる場合があります。 Azure Synapse パイプラインは、処理フレームワーク全体内でワークフローの依存関係を調整できます。
Azure Synapse Spark プールでは、完全にサポートされている Apache Spark 構造化ストリーミング API を使用して、Spark ストリーミング フレームワーク内のデータを処理します。 データ処理ステップには、データ品質チェックと高度なビジネス ルール検証が組み込まれています。
Data Lake Storage には、検証済みのデータが Delta Lake のオープンな形式で格納されています。 Delta Lake は、既存のデータ レイクに対して、アトミック性、一貫性、分離性、持続性 (ACID) のセマンティクスとトランザクション、スケーラブルなメタデータ処理、および統合ストリーミングとバッチ データ処理を提供します。
クエリ アクセラレーションにインデックスを使用すると、パフォーマンスのさらなる強化で Delta が補強されます。 また、Data Lake Storage 検証済みゾーンからのデータは、高度な分析と機械学習のソースにもなることができます。
Data Lake Storage 検証済みゾーンからのデータは、より多くのルールで変換および強化され、最終的な処理済みの状態になり、大規模な分析クエリを実行するために専用 SQL プールに読み込まれます。
Power BI では、専用 SQL プールから公開されるデータを使用して、エンタープライズ グレードのダッシュボードとレポートを作成します。
また、Data Lake Store ランディング ゾーンでキャプチャされた生データと Delta 形式で検証済みのデータを以下のために使用することもできます。
- Azure Synapse SQL サーバーレス プールを使用したさらなるアドホックおよび探索的分析。
- Azure Machine Learning を使用した機械学習。
一部の低遅延インターフェイスでは、1 桁のサーバー待機時間のためにデータを非正規化する必要があります。 この使用シナリオは、主に API の応答用です。 このシナリオでは、Azure Cosmos DB などの NoSQL データストア内のドキュメントに 1 桁のミリ秒の応答を照会します。
Azure Cosmos DB のパーティション分割戦略は、一部のクエリ パターンに合わない場合があります。 その場合は、API がアクセスする必要があるデータのインデックスを Azure Cognitive Search で作成することで、ソリューションを拡張できます。 Azure Cosmos DB と Cognitive Search は、待機時間が短いクエリ応答を必要とするほとんどのシナリオに対応できます。
コンポーネント
このソリューションでは、次の Azure コンポーネントを使用します。
Event Hubs は、大量のデータを取り込むためのスケーリングが可能な、管理された分散インジェスト サービスです。 Event Hubs のサブスクライバー パブリッシャー メカニズムを使用すると、さまざまなアプリケーションが Event Hubs のトピックにメッセージを送信でき、ダウンストリーム コンシューマーは接続してメッセージ処理できます。 Event Hubs Capture 機能は、着信時にメッセージを AVRO 形式で Data Lake Storage に書き込むことができます。 この機能により、マイクロバッチ処理と長期保有シナリオが容易になります。 Event Hubs では、Kafka 互換 API も用意され、スキーマ レジストリがサポートされます。
Data Lake Storage は、生および検証済みの形式ですべてのデータを格納するストレージ サブシステムを形成します。 Data Lake Storage は大規模なトランザクションを処理でき、さまざまなファイル形式とサイズをサポートします。 階層型名前空間は、データを使い慣れたフォルダー構造に整理するのに役立ち、Portable Operating System Interface for UniX (POSIX) アクセス許可をサポートします。 Azure Blob Filesystem (ABFS) ドライバーには、Hadoop 互換 API が用意されています。
Azure Synapse Analytics は、データ統合、エンタープライズ データウェア ハウス、およびビッグ データ分析が 1 つにまとめられた無制限の分析サービスです。 このソリューションでは、Azure Synapse Analytics エコシステムの次の機能を使用します。
Azure Synapse Spark プールには、オープン ソースの Spark に組み込みのパフォーマンス強化を追加するオンデマンド Spark ランタイムが用意されています。 お客様は、柔軟な自動スケール設定を構成し、Apache Livy エンドポイントを介してリモートでジョブを送信し、対話型エクスペリエンスに Synapse Studio ノートブック インターフェイスを使用できます。
Azure Synapse SQL サーバーレス プールは、使い慣れた T-SQL 構文を使用してレイクハウス データにクエリを実行するためのインターフェイスを提供します。 セットアップするインフラストラクチャはなく、Azure Synapse ワークスペースのデプロイによってエンドポイントが自動的に作成されます。 Azure Synapse SQL サーバーレス プールは、適所でのデータの基本的な検出と探索を可能にし、ユーザー アドホック クエリ分析に適したオプションです。
Azure Synapse 専用 SQL プールは、列指向ストレージを使用してリレーショナル テーブルにデータを格納します。 専用 SQL プールでは、スケールアウト アーキテクチャを使用して、データ処理を複数のノードに分散します。 PolyBase クエリにより、データは SQL プール テーブルに持ち込まれます。 このテーブルは、分析とレポートのために Power BI に接続できます。
Power BI には、レポートとダッシュボードを作成してアクセスするためのビジュアル インターフェイスが用意されています。 Power BI Desktop は、さまざまなデータ ソースに接続し、ソースを結合して 1 つのデータ モデルにし、レポートまたはダッシュボードを構築できます。 Power BI を使用すると、ビジネス要件に基づいてデータを変換し、Power BI サービスを通じてビジュアルやレポートを他のユーザーと共有できます。
Azure Cosmos DB は、MongoDB や Cassandra などのオープン API をサポートするマネージド マルチモーダル NoSQL データベースです。 このソリューションでは、1 桁のミリ秒の応答時間と高可用性を必要とするアプリケーションに Azure Cosmos DB を使用します。 Azure Cosmos DB では、すべての Azure リージョンでマルチリージョン書き込みが提供されます。 Azure Synapse Link for Azure Cosmos DB を使用すると、分析情報を導き出し、リアルタイムでデータに対して分析を実行できます。
Azure Cognitive Search は、アプリケーションと API に必要なデータのインデックスを作成できるクラウド検索サービスです。 Cognitive Search には、テキスト抽出に役立ち、非テキスト ファイルからテキストを推測するオプションの AI エンリッチメント機能があります。 Cognitive Search は、Azure Data Lake Storage や Azure Cosmos DB などのサービスと統合され、データに簡単にアクセスしてインデックスを付けることができます。 REST API または .NET SDK を使用して、インデックス付きデータに対してクエリを実行できます。 2 つの異なるインデックスからデータを取得するには、それらを 1 つのインデックスに結合するか、複合データ型を使用できます。
シナリオの詳細
ほぼリアルタイムで変更を処理するエンドツーエンドのワークフローには、次のものが必要です。
- 変更データ キャプチャ (CDC) テクノロジ。 OLTP アプリケーションでは、SQL Server、MySQL、Oracle など、バックエンド データ ストアが異なる場合があります。 最初の手順では、発生した変更をリッスンし、前方に伝達します。
- 変更イベントを大規模に公開するためのインジェスト バッファー。 このサービスには、メッセージの着信時に大量のデータを処理する機能が必要です。 個々のサブスクライバーは、このシステムに接続してデータを処理できます。
- 生の形式でそのままのデータ用のスケーラブルな分散ストレージ。
- ユーザーが再起動して状態を管理できるようにする、効率的な分散ストリーム処理システム。
- ビジネス上の意思決定を強化するために大規模に実行される分析システム。
- セルフサービス分析インターフェイス。
- 待ち時間の短い API 応答の場合、非正規化されたデータの表現を格納する NoSQL データベース。
- 場合によっては、データのインデックスを作成し、一定の間隔でインデックスを更新し、最新のデータをダウンストリームで使用できるようにするシステム。
上記のすべてのテクノロジでは、境界セキュリティ、認証、承認、およびデータ暗号化に関連するセキュリティコンストラクトを使用する必要があります。
考えられるユース ケース
このソリューションは、次の場合に適しています。
- OLTP からオンライン分析処理 (OLAP) に変更を伝達する必要がある業界。
- データ変換またはエンリッチメントを必要とするアプリケーション。
リアルタイム データ処理シナリオは、金融サービス業界に特に重要です。 たとえば、保険、クレジット カード、銀行の顧客が支払いを行ってから、すぐにカスタマー サービスに連絡する場合、カスタマー サポート エージェントには最新の情報が必要です。
同様のシナリオが、小売、コマース、医療の業界に当てはまります。 これらのシナリオを有効にすると、運用が効率化され、組織の生産性が向上し、顧客満足度が向上します。
考慮事項
以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。
[信頼性]
信頼性により、顧客に確約したことをアプリケーションで確実に満たせるようにします。 詳細については、「信頼性の重要な要素の概要」を参照してください。
Event Hubs では、プレミアム レベルと専用レベルで 90 日間のデータ保持期間が提供されます。 フェールオーバー シナリオでは、ペアのリージョンにセカンダリ名前空間を設定し、フェールオーバー時にアクティブ化できます。
Azure Synapse Spark プール ジョブは、メンテナンスのためにノードが停止されるので 7 日ごとにリサイクルされます。 システムに関連付けられているサービス レベル アグリーメント (SLA) に取り組むときは、このアクティビティを検討してください。 この制限は、目標復旧時間 (RTO) が約 15 分である多くのシナリオでは問題ではありません。
コストの最適化
コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。
ワークロードの特性に基づいて、さまざまな Event Hubs レベルの中から選択できます。 Event Hubs では、Data Lake Storage に格納されているデータの量に基づいて、Capture ストレージが別個に課金されます。
Azure Data Lake Storage のレベルを使用したオブジェクトのライフサイクル管理を検討します。 データが古くなるにつれて、分析のために最近のデータにアクセスする必要があるホット層から、価格がかなり低いコールド ストレージ層にデータを移動できます。 コールド ストレージ層は、長期保有のためのコスト効率の高いオプションです。
専用 SQL プールは、開発環境またはテスト環境で使用していないときに一時停止できます。 必要に応じてプールを一時停止するスクリプトをスケジュールすることも、ポータルを使用してプールを手動で一時停止することもできます。
Azure Cosmos DB には、サーバーレス、手動プロビジョニング スループット、自動スケーリングなど、さまざまなプロビジョニング モデルが用意されています。 開発とテストのワークロードにサーバーレス プロビジョニングを使用することを検討してください。 また、自動スケーリングを使用することもできます。この場合、コンテナーで 1 秒あたりの最大要求ユニット数 (RU/秒) を設定できます。 コンテナーのスループットは、最大 RU/秒の 10% を低いしきい値として、構成された最大 RU/秒までの間で自動的にスケーリングされます。
パフォーマンス効率
パフォーマンス効率とは、ユーザーによって行われた要求に合わせて効率的な方法でワークロードをスケーリングできることです。 詳細については、「パフォーマンス効率の柱の概要」を参照してください。
パーティション分割を使用して Event Hubs をスケーリングできます。 コミット ログを使用してイベントの順序を保持するために、データのパーティション分割を検討してください。 パーティション分割を使用すると、使用可能なスループット容量を最大化することで、複数の並列ログを作成できます。
ワークロードに基づいて、小、中、大の仮想マシン (VM) SKU を使用して、Azure Synapse Spark プールを設定できます。 また、スパイクの多いワークロードに対処するように、Azure Synapse Spark プールで自動スケーリングを構成することもできます。 もっと多くのコンピューティング リソースが必要な場合、クラスターは需要に合わせて自動的にスケールアップし、処理が完了した後にスケールダウンします。
専用 SQL プール内のテーブルを設計するためのベスト プラクティスを使用します。 SQL プールが実行されているレベルに基づいて、関連するパフォーマンスとスケーラビリティの制限が適用されます。
Azure Cosmos DB では、パーティションを使用して、パーティション キーに基づいてコンテナーをスケーリングします。 パーティション キーに基づくすべてのデータは、論理パーティションを形成します。 ワークロードの要件に基づいて、正しいパーティション分割戦略を選択してください。 また、インデックスを使用してデータの取得を高速化することもできます。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- Pratima Valavala | クラウド ソリューション アーキテクト
その他の共同作成者:
- Rajesh Mittal | クラウド ソリューション アーキテクト
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。
次のステップ
- Apache Spark 用の Azure Event Hubs コネクタ
- Event Hubs によるスケーラビリティ
- Azure Cosmos DB のデータにインデックスを作成する
- Azure Synapse Link for Azure Cosmos DB とは
- 専用 SQL プールのベスト プラクティス
- サーバーレス SQL プールのベスト プラクティス
- Azure Synapse でデータをモデル化、クエリ、探索する
- Azure Synapse サーバーレス SQL プールを使用して Data Analytics ソリューションを構築する