編集

次の方法で共有


Azure Synapse Analytics を使用して MongoDB Atlas 上の運用データを分析する

Azure App Service
Azure Data Lake Storage
Azure Event Grid
Azure Synapse Analytics
Power BI

この記事では、MongoDB Atlas の運用データから分析情報を導き出すソリューションについて説明します。 このソリューションは、MongoDB Atlas を Azure Synapse Analytics に接続します。 この接続により、データをバッチでリアルタイムで転送できます。 リアルタイムアプローチにより、Azure Synapse Analytics 専用 SQL プールが MongoDB Atlas データ ソースの変更と同期されます。

Apache®、Apache Spark、および炎のロゴは、米国およびその他の国の Apache Software Foundation の登録商標または商標です。 これらのマークの使用によって、Apache Software Foundation による保証は示されません。

MongoDB Atlas ロゴは MongoDB の商標です。 このマークの使用によって保証は示されません。

建築

次の図は、MongoDB Atlas データを Azure Synapse Analytics にリアルタイムで同期する方法を示しています。

MongoDB Atlas から分析アプリへのデータ フローを示すアーキテクチャ図。中間段階には、変更ストリーム API と Azure Synapse Analytics が含まれます。

この記事のすべての図の PowerPoint ファイルをダウンロードします。

データフロー

このソリューションには、MongoDB Atlas オペレーション データ ストア (ODS) のリアルタイムの変更をキャプチャし、データを同期するパイプラインをトリガーするための 2 つのオプションが用意されています。 次の手順では、両方のオプションの概要を示します。

  1. 変更は、MongoDB Atlas に格納されている運用データとトランザクション データで発生します。 Mongo Atlas 変更ストリーム API は、サブスクライブしているアプリケーションに変更をリアルタイムで通知します。

  2. カスタム Azure App Service Web アプリは、MongoDB 変更ストリームをサブスクライブします。 Web アプリには、Event Grid と ストレージ、ソリューションのバージョンごとに 1 つずつ、2 つのバージョンがあります。 どちらのアプリ バージョンも、Atlas の挿入、更新、または削除操作によって発生する変更をリッスンします。 アプリは、変更を検出すると、変更されたドキュメントを BLOB として Azure Data Lake Storage に書き込みます。これは Azure Synapse Analytics と統合されています。 アプリの Event Grid バージョンでは、Atlas で変更が検出されると、Azure Event Grid に新しいイベントも作成されます。

  3. どちらのバージョンのソリューションでも、Azure Synapse Analytics パイプラインがトリガーされます。

    1. Event Grid バージョンでは、Azure Synapse Analytics でカスタムイベントベースのトリガーが構成されます。 そのトリガーは、Web アプリが発行する Event Grid トピックをサブスクライブします。 そのトピックの新しいイベントによって Azure Synapse Analytics トリガーがアクティブ化され、Azure Synapse Analytics データ パイプラインが実行されます。
    2. ストレージ バージョンでは、ストレージ ベースのトリガーが Azure Synapse Analytics で構成されます。 統合された Data Lake Storage フォルダーで新しい BLOB が検出されると、そのトリガーがアクティブになり、Azure Synapse Analytics データ パイプラインが実行されます。
  4. コピー アクティビティでは、Azure Synapse Analytics パイプラインによって、変更されたドキュメント全体が Data Lake Storage BLOB から専用 SQL プールにコピーされます。 この操作は、選択した列に対して アップサート を実行するように構成されます。 列が専用 SQL プールに存在する場合は、アップサートによって列が更新されます。 列が存在しない場合は、アップサートによって列が挿入されます。

  5. 専用 SQL プールは、データ パイプラインが更新するテーブルをホストするエンタープライズ データ ウェアハウス機能です。 パイプラインのコピー データ アクティビティにより、そのテーブルは対応する Atlas コレクションと同期されます。

  6. Power BI のレポートと視覚化には、現在およびほぼリアルタイムの分析が表示されます。 また、データはダウンストリーム アプリケーションにもフィードされます。 MongoDB Atlas は、Azure Synapse Analytics データ パイプライン シンク コネクタを使用してシンクとして機能します。 Atlas は、リアルタイム データを使用してカスタム アプリを提供します。

コンポーネント

  • MongoDB Atlas は、MongoDB のサービスとしてのデータベース オファリングです。 このマルチクラウド アプリケーション データ プラットフォームは、トランザクション処理、関連性ベースの検索、リアルタイム分析、モバイルからクラウドへのデータ同期を提供します。 MongoDB には、オンプレミス のソリューションである MongoDB Enterprise Advanced も用意されています。

  • MongoDB Atlas で 変更ストリームを使用すると、アプリケーションはリアルタイムのデータ変更にアクセスできるため、アプリはそれらの変更にすぐに対応できます。 変更ストリームは、アプリケーションが特定のコレクション、データベース、またはデプロイ クラスター全体への変更に関する通知を受け取る方法を提供します。

  • App Service とその Web Apps、Mobile Apps、API Apps の機能により、Web アプリ、モバイル アプリ、REST API を構築、デプロイ、スケーリングするためのフレームワークが提供されます。 このソリューションでは、ASP.NET でプログラミングされた Web アプリを使用します。 このコードは GitHub で入手できます。

  • Azure Synapse Analytics は、このソリューションがデータ インジェスト、処理、分析に使用するコア サービスです。

  • Data Lake Storage は、データを格納および処理するための機能を提供します。 Data Lake Storage は、Blob Storage上に構築されたデータ レイクとして、複数の異種ソースから大量のデータを管理するためのスケーラブルなソリューションを提供します。

  • Azure Synapse Analytics パイプライン は、データに対する抽出、変換、読み込み (ETL) 操作を実行するために使用されます。 Azure Data Factory にも同様のサービスが用意されていますが、Synapse Studio 内に Azure Synapse Analytics パイプラインを作成できます。 同じパイプライン内で複数のアクティビティを使用できます。 依存関係エンドポイントを作成して、パイプライン内の別のアクティビティと 1 つのアクティビティを接続することもできます。

  • マッピング データ フロー は、Azure Synapse Analytics で視覚的に設計されたデータ変換です。 データ フローは、データ エンジニアがコードを記述せずにデータ変換ロジックを開発する方法を提供します。 結果のデータ フローは、スケールアウトされた Apache Spark クラスターを使用する Azure Synapse Analytics パイプライン内のアクティビティとして実行できます。 既存の Azure Synapse Analytics のスケジュール設定、制御、フロー、および監視機能を使用して、データ フロー アクティビティを操作できます。

  • 専用 SQL プール は、データの処理と正規化後のデータウェアハウス機能を提供します。 Azure Synapse Analytics のこの機能は、以前は SQL Data Warehouse として知られていました。 専用 SQL プールを使用すると、絞り込まれたデータをエンド ユーザーとアプリケーションで使用できるようになります。

  • Azure Synapse Analytics トリガー パイプラインを実行する自動化された方法を提供します。 これらのトリガーをスケジュールできます。 また、ストレージ イベント トリガー やカスタム イベント トリガーなど、イベントベースのトリガーを設定することもできます。 このソリューションでは、両方の種類のイベント ベースのトリガーが使用されます。

  • Event Grid は、非常にスケーラブルなサーバーレス イベント ブローカーです。 Event Grid を使用して、サブスクライバーの宛先にイベントを配信できます。

  • Power BI は、分析情報を表示するソフトウェア サービスとアプリのコレクションです。 このソリューションでは、Power BI は、処理されたデータを使用して高度な分析を実行し、分析情報を導き出す方法を提供します。

シナリオの詳細

MongoDB Atlas は、多くのエンタープライズ アプリケーションの運用データレイヤーとして機能します。 このクラウド データベースには、内部アプリケーション、顧客向けサービス、および複数のチャネルのサードパーティ API からのデータが格納されます。 Azure Synapse Analytics パイプラインを使用すると、MongoDB Atlas データを他の従来のアプリケーションのリレーショナル データや、ログなどのソースからの非構造化データと組み合わせることができます。

Batch 統合

Azure Synapse Analytics では、MongoDB オンプレミス インスタンスと MongoDB Atlas をソースまたはシンク リソースとしてシームレスに統合できます。 MongoDB は、Azure Synapse Analytics と Data Factory 用のソースコネクタとシンク コネクタを備える唯一の NoSQL データベースです。

履歴データを使用すると、すべてのデータを一度に取得できます。 バッチ モードでフィルターを使用して、特定の期間のデータを増分的に取得することもできます。 その後、Azure Synapse Analytics の SQL プールと Apache Spark プールを使用して、データを変換および分析できます。 分析またはクエリの結果を分析データ ストアに格納する必要がある場合は、Azure Synapse Analytics のシンク リソースを使用できます。

コンシューマーから Azure Synapse Analytics および MongoDB データ ストレージにデータを接続するソースコネクタとシンク コネクタを示すアーキテクチャ図。

コネクタを設定および構成する方法の詳細については、次のリソースを参照してください。

ソース コネクタは、MongoDB または Atlas に格納されている運用データの上に Azure Synapse Analytics を実行する便利な方法を提供します。 ソース コネクタを使用して Atlas からデータを取得した後は、Parquet、Avro、JSON、テキスト、または CSV ファイルとして Data Lake Storage BLOB ストレージにデータを読み込むことができます。 その後、これらのファイルを変換したり、マルチデータベース、マルチクラウド、ハイブリッド クラウド環境の他のデータ ソースの他のファイルと結合したりできます。

MongoDB Enterprise Advanced または MongoDB Atlas から取得したデータは、次のシナリオで使用できます。

  • バッチ内の MongoDB から特定の日付からすべてのデータを取得します。 その後、Data Lake Storage にデータを読み込みます。 そこから、サーバーレス SQL プールまたは Spark プールを分析に使用するか、データを専用 SQL プールにコピーします。 このバッチを取得した後、データフローの説明に従って、変更をデータの発生時 適用できます。 このソリューションの一部として、Storage-CopyPipeline_mdb_synapse_ded_pool_RTS サンプル パイプライン を使用できます。 この 1 回限りの読み込み目的で、GitHub からパイプラインをエクスポートできます。

  • 特定の頻度 (たとえば、毎日または時間単位のレポート) で分析情報を生成する。 このシナリオでは、分析パイプラインを実行する前に、定期的にデータを取得するようにパイプラインをスケジュールします。 MongoDB クエリを使用してフィルター条件を適用し、特定のデータのサブセットのみを取得できます。

リアルタイム同期

企業には、古いデータではなく、リアルタイム データに基づく分析情報が必要です。 分析情報の配信に数時間の遅延が発生すると、意思決定プロセスが維持され、競争上の優位性が失われる可能性があります。 このソリューションは、MongoDB トランザクション データベースで発生した変更をリアルタイムで専用 SQL プールに反映することで、重要な意思決定を促進します。

このソリューションには、次のセクションで説明する 3 つの部分があります。

MongoDB Atlas の変更をキャプチャする

MongoDB 変更ストリームは、データベースで発生した変更をキャプチャします。 変更ストリーム API は、変更ストリームをサブスクライブする App Service Web アプリで使用できる変更に関する情報を提供します。 これらのアプリは、変更を Data Lake Storage BLOB ストレージに書き込みます。

Azure Synapse Analytics に変更を反映するパイプラインをトリガーする

このソリューションには、BLOB が Data Lake Storage に書き込まれた後に Azure Synapse Analytics パイプラインをトリガーするための 2 つのオプションが用意されています。

  • ストレージ ベースのトリガー。 変更を含む BLOB が書き込まれるとすぐにパイプラインがトリガーされるため、リアルタイム分析が必要な場合は、このオプションを使用します。 ただし、大量のデータ変更がある場合は、このオプションをお勧めできない場合があります。 Azure Synapse Analytics では、同時に実行できるパイプラインの数が制限されます。 大量のデータ変更がある場合は、その制限に達する可能性があります。

  • イベント ベースのカスタム トリガー。 この種類のトリガーには、Azure Synapse Analytics の外部にあるという利点があるため、制御が容易になります。 Event Grid バージョンの Web アプリは、変更されたデータ ドキュメントを BLOB ストレージに書き込みます。 同時に、アプリは新しい Event Grid イベントを作成します。 イベント内のデータには、BLOB のファイル名が含まれています。 イベントがトリガーするパイプラインは、ファイル名をパラメーターとして受け取り、そのファイルを使用して専用 SQL プールを更新します。

変更を専用 SQL プールに反映する

Azure Synapse Analytics パイプラインは、変更を専用 SQL プールに反映します。 このソリューションは、Blob の変更を Data Lake Storage から専用 SQL プールにコピーする CopyPipeline_mdb_synapse_ded_pool_RTS パイプラインを GitHub に提供します。 このパイプラインは、ストレージトリガーまたは Event Grid トリガーによってトリガーされます。

潜在的なユース ケース

このソリューションのユース ケースは、次の多くの業界および分野に及びます。

  • 小売

    • 製品バンドルと製品プロモーションにインテリジェンスを組み込む
    • IoT ストリーミングを使用するコールド ストレージの最適化
    • 在庫補充の最適化
    • オムニチャネル分散への価値の追加
  • 銀行と金融

    • 顧客金融サービスのカスタマイズ
    • 不正な可能性のあるトランザクションの検出
  • 電気通信

    • 次世代ネットワークの最適化
    • エッジ ネットワークの価値を最大化する
  • 自動車

    • コネクテッド 車両のパラメーター化の最適化
    • コネクテッド 車両での IoT 通信の異常の検出
  • 加工

    • 機械の予測メンテナンスの提供
    • ストレージとインベントリの管理の最適化

次の 2 つの具体的な例を示します。

  • この記事では、Batch 統合で前述したように、MongoDB データをバッチで取得し、変更が発生したときにデータを更新できます。 この機能により、リアルタイムの分析情報を使用して、Just-In-Time の意思決定と結論を得ることができます。 この機能は、金融取引や不正検出データなどの機密情報や重要な情報の分析に役立ちます。
  • Batch 統合 説明されているように、MongoDB データを定期的に取得するようにパイプラインをスケジュールできます。 この機能は、在庫レベルを日次売上データで更新するなどの小売シナリオで役立ちます。 このような場合、分析レポートとダッシュボードは重要ではなく、リアルタイム分析は労力を必要としません。

次のセクションでは、2 つの小売業界のユース ケースについて詳しく説明します。

製品バンドル

製品の販売を促進するために、バンドルの一部として他の関連製品と共に製品を販売できます。 目標は、販売パターン データを使用して、製品をパッケージにバンドルするための戦略を開発することです。

次の 2 つのデータ ソースがあります。

  • MongoDB からの製品カタログ データ
  • Azure SQL からの売上データ

どちらのデータ セットも、Azure Synapse Analytics パイプラインを使用して Azure Synapse Analytics 専用 SQL プールに移行されます。 トリガーと変更データ キャプチャは、移行された 1 回限りのデータに対してほぼリアルタイムのデータ同期を実現するために使用されます。

次の Power BI グラフは、製品と販売パターンの間のアフィニティを示しています。 ペンとインクベースのリフィルのアフィニティが高い。 売上データは、ペンが指定された領域で高い売上を持っていることを示しています。

パイプライン ステージと、製品、年、地域、アフィニティ別のペンの売上を示すグラフを示す図。ペンの売上は南部で2022年に最も高くなっています。

この分析では、より良い売上を得るための 2 つの提案が行われます。

  • ペンとインクベースのリフィルをバンドルする
  • 特定の領域でのバンドルの昇格

製品のプロモーション

製品の販売を促進するために、関連製品に関心のある顧客に製品を推奨できます。 目標は、売上データと顧客購入パターン データを使用して、顧客に製品を推奨するための戦略を策定することです。

Azure Synapse Analytics を使用すると、AI モデルと機械学習モデルを開発して、顧客に推奨する製品を決定できます。

次の図は、さまざまな種類のデータを使用してモデルを作成し、代替製品の推奨事項を決定する方法を示しています。 データには、顧客の購入パターン、利益、製品アフィニティ、製品の販売量、および製品カタログ のパラメーターが含まれます。

AI モデルのパイプライン ステージとワークフローを示す図。データ フィールドには、顧客 ID、価格、売上、利益が含まれます。

モデルの精度が高い場合は、顧客に推奨できる製品の一覧が提供されます。

考慮 事項

これらの考慮事項は、Azure Well-Architected Framework の柱を実装します。これは、ワークロードの品質を向上させるために使用できる一連の基本原則です。 詳細については、Microsoft Azure Well-Architected Frameworkの に関するページを参照してください。

安全

セキュリティは、意図的な攻撃や貴重なデータとシステムの悪用に対する保証を提供します。 詳細については、「セキュリティの柱の概要」を参照してください。

ソリューション内の Azure コンポーネントのセキュリティ要件と制御の詳細については、各製品のドキュメントのセキュリティセクションを参照してください。

コストの最適化

コストの最適化は、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳細については、「コスト最適化の柱の概要」を参照してください。

  • Azure 製品と構成のコストを見積もる場合は、Azure 料金計算ツールを使用します。
  • Azure では、時間の経過に伴う支出を分析し、過剰に支出することなくビジネス ニーズを満たすようにスケーリングすることで、ニーズに適したリソースの数を特定することで、不要なコストを回避できます。 たとえば、負荷が発生しない場合は、専用 SQL プールを一時停止できます。 後で再開できます。
  • App Service を Azure Functions に置き換えることができます。 Azure Synapse Analytics パイプライン内で関数を調整することで、コストを削減できます。
  • Spark クラスターのコストを削減するには、適切なデータ フローコンピューティングの種類を選択します。 一般的なオプションとメモリ最適化オプションを使用できます。 また、適切なコア数と Time to Live (TTL) 値も選択します。
  • 主要なソリューション コンポーネントのコスト管理の詳細については、次のリソースを参照してください。

パフォーマンス効率

パフォーマンス効率は、ワークロードをスケーリングして、ユーザーが効率的な方法で要求を満たす能力です。 詳細については、「パフォーマンス効率の柱の概要を参照してください。

大量の変更がある場合、コレクション内のすべての変更に対して Azure Synapse Analytics で何千ものパイプラインを実行すると、キューに登録されたパイプラインのバックログが発生する可能性があります。 このシナリオのパフォーマンスを向上させるには、次の方法を検討してください。

  • ストレージ ベースの App Service コードを使用します。このコードは、Data Lake Storage への変更を含む JSON ドキュメントを書き込みます。 ストレージ ベースのトリガーをパイプラインにリンクしないでください。 代わりに、2 分または 5 分間隔など、短い間隔でスケジュールされたトリガーを使用します。 スケジュールされたトリガーが実行されると、指定された Data Lake Storage ディレクトリ内のすべてのファイルが取得され、それぞれの専用 SQL プールが更新されます。
  • Event Grid App Service コードを変更します。 ファイル名を含むメタデータを含む新しいトピックをイベントに追加する前に、BLOB ストレージに約 100 の変更のマイクロバッチを追加するようにプログラムします。 この変更により、100 個の変更を含む 1 つの BLOB に対して 1 つのパイプラインのみがトリガーされます。 シナリオに合わせてマイクロバッチ サイズを調整できます。 小さなマイクロバッチを高頻度で使用して、リアルタイムに近い更新プログラムを提供します。 または、更新の遅延とオーバーヘッドの削減のために、より低い頻度でより大きなマイクロバッチを使用します。

Azure Synapse Analytics パイプラインのコピー アクティビティのパフォーマンスとスケーラビリティの向上の詳細については、「コピー アクティビティのパフォーマンスとスケーラビリティに関するガイド を参照してください。

このシナリオをデプロイする

このソリューションの実装については、「Real-Time Sync Solution for MongoDB Atlas integration with Synapse」を参照してください。

貢献

この記事は Microsoft によって管理されています。 もともとは次の共同作成者によって作成されました。

主な作成者:

その他の共同作成者:

非公開の LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次の手順

ソリューションの詳細については、partners@mongodb.comにお問い合わせください。

MongoDB の詳細については、次のリソースを参照してください。

  • MongoDB を する
  • MongoDB Atlas の
  • MongoDB の水平方向のユース ケースの
  • MongoDB 業界固有のユース ケース する

Azure ソリューション コンポーネントの詳細については、次のリソースを参照してください。

  • エンタープライズ ビジネス インテリジェンス の
  • 自動エンタープライズ BI の