MongoDB Atlas と Google Cloud 間のデータ変換

Last reviewed 2023-12-13 UTC

多くの企業は、MongoDB を運用データストアとして使用し、データに対して複雑な分析を実行してそのデータの価値を高めたいと考えています。これを行うには、MongoDB データを集約して、分析を実行できるデータ ウェアハウスに移動する必要があります。このリファレンス アーキテクチャでは、Google Cloud でこの統合パイプラインを構成する方法について説明します。

このアーキテクチャでは、Dataflow テンプレートを使用して、MongoDB Atlas のデータを BigQuery に統合します。これらの Dataflow テンプレートは、MongoDB で使用されるドキュメント形式を、BigQuery で使用されるカラム型形式に変換します。これらのテンプレートは、Apache Beam ライブラリを使用してこの変換を行います。したがって、このドキュメントは、MongoDB を理解し、Dataflow と Apache Beam についてある程度の知識を持っていることを前提としています。

アーキテクチャ

次の図は、このソリューションをデプロイするときに使用するリファレンス アーキテクチャを示しています。この図は、さまざまな Dataflow テンプレートが MongoDB から BigQuery データ ウェアハウスにデータを移動し、変換する方法を示しています。

MongoDB Atlas と Google Cloud 間のデータ変換のアーキテクチャ

図に示すように、このアーキテクチャは、次の 3 つのテンプレートに基づいています。

  • MongoDB to BigQuery テンプレート。この Dataflow テンプレートは、MongoDB からドキュメントを読み取り、そのデータを分析できる BigQuery に書き込むバッチ パイプラインです。必要に応じて、JavaScript でユーザー定義関数(UDF)を記述して、このテンプレートを拡張できます。UDF の例については、運用効率をご覧ください。
  • BigQuery to MongoDB テンプレート。この Dataflow テンプレートは、分析されたデータを BigQuery から読み取り、MongoDB に書き込むために使用できるバッチ テンプレートです。
  • MongoDB to BigQuery(CDC)テンプレート。この Dataflow テンプレートは、MongoDB 変更ストリームと連携するストリーミング パイプラインです。MongoDB 変更ストリームから Pub/Sub に変更を push するパブリッシャー アプリケーションを作成します。パイプラインは Pub/Sub から JSON レコードを読み取り、BigQuery に書き込みます。MongoDB to BigQuery テンプレートと同様に、UDF を記述してこのテンプレートを拡張できます。

    MongoDB to BigQuery(CDC)テンプレートを使用すると、MongoDB コレクションで発生したすべての変更を Pub/Sub にパブリッシュできます。MongoDB 変更ストリームを設定するには、MongoDB ドキュメントの変更ストリームの手順に沿って操作します。

ユースケース

BigQuery を使用して MongoDB Atlas データを分析すると、金融サービス、小売、製造、物流、ゲーム アプリケーションなど、さまざまな業界で役立ちます。

金融サービス

Google Cloud と MongoDB Atlas は、今日の金融機関における複雑で絶えず変化するデータニーズに対応するソリューションを提供します。BigQuery を使用して MongoDB Atlas の金融データを分析することで、次のタスクのソリューションを開発できます。

  • 不正行為のリアルタイム検出。金融機関は、不正な取引をリアルタイムで検出して防止したいと考えています。機械学習(ML)を使用し、BigQuery で顧客の行動データを分析することで、不正行為を示すパターンを特定できます。
  • パーソナライズされたカスタマー エクスペリエンス。金融機関はパーソナライズされたカスタマー エクスペリエンスの提供にも関心を持っています。BigQuery で顧客データを保存して分析することで、パーソナライズされたおすすめ情報を生成してカスタマイズされたプロダクトやサービスを提供し、より優れたカスタマー サポートを実現するソリューションを作成できます。
  • リスク管理。金融機関は常に、リスクの特定と軽減に役立つプロセスを求めています。BigQuery でさまざまなソースからのデータを分析することで、潜在的なリスクを示すパターンと傾向を特定できます。

小売

顧客データをスマートに利用して商品データと組み合わせ、リアルタイムでパーソナライズされたエンゲージメントを実行することで、将来の e コマースが生まれます。小売業者が顧客のニーズを満たすには、データを収集し分析するデータドリブンな意思決定が必要です。BigQuery と MongoDB Atlas を使用すると、顧客データを使用して、次のようなパーソナライズのイノベーションを推進できます。

  • オムニチャネル コマース。MongoDB を使用して、オンライン ストア、オフライン ストア、モバイルアプリ、ソーシャル メディアなどのさまざまなソースからデータを保存し、管理します。このデータの保存と管理と BigQuery 分析の組み合わせは、すべてのチャネルで顧客にシームレスなエクスペリエンスを提供する必要があるオムニチャネルの小売業者に最適です。
  • リアルタイムの分析情報。BigQuery を使用すると、顧客、在庫、販売実績に関するリアルタイムの分析情報を取得できます。これらの分析情報は、価格設定、プロモーション、プロダクト プレースメントに関する意思決定に役立ちます。
  • パーソナライズされたおすすめ情報。パーソナライズされたレコメンデーション エンジンは、小売業者が売上と顧客満足度を向上させるうえで役立ちます。顧客データを保存して分析することで、個々の顧客が関心を持つ可能性が高い商品のレコメンデーションに使用できるパターンと傾向を特定できます。

製造と物流

BigQuery で MongoDB データを分析すると、製造業界と物流業界にも次のようなメリットがあります。

  • リアルタイムの可視性。オペレーションをリアルタイムで把握できます。これにより、本番環境、在庫、配送についてより適切な意思決定を行うことができます。
  • サプライ チェーンの最適化。サプライ チェーンの不確実性を管理し、さまざまなソースからのデータを分析することで、費用を削減し、効率を改善できます。

ゲーム

また、ゲーム デベロッパーやパブリッシャーは BigQuery での分析により、最先端のゲームを作成し、次のような卓越したゲーム エクスペリエンスを提供できます。

  • リアルタイムのゲームプレイ。分析結果を使用してリアルタイムのゲームプレイ エクスペリエンスを作成し、リーダーボード、マッチメーカー システム、マルチプレーヤー機能を生成できます。
  • パーソナライズされたプレーヤー エクスペリエンス。人工知能(AI)と ML を使用して、ターゲットを絞ったレコメンデーションを提供し、プレーヤー向けにゲーム エクスペリエンスをパーソナライズできます。
  • ゲームの分析。ゲームデータを分析して、ゲームデザイン、ゲームプレイ、ビジネス上の意思決定の改善に役立つ傾向とパターンを特定できます。

代替案を設計する

MongoDB から BigQuery への統合パイプラインとして Dataflow テンプレートを使用する代わりに、BigQuery サブスクリプションを使用した Pub/Sub と Confluent Cloud の 2 つの選択肢があります。

BigQuery サブスクリプションを使用した Pub/Sub

Dataflow テンプレートを使用する代わりに、Pub/Sub を使用して MongoDB クラスタと BigQuery 間の統合パイプラインを設定することもできます。Dataflow の代わりに Pub/Sub を使用する手順は次のとおりです。

  1. MongoDB の変更ストリームからメッセージを取り込む Pub/Sub スキーマとトピックを構成します。
  2. 受信時に既存の BigQuery テーブルにメッセージを書き込む Pub/Sub で BigQuery サブスクリプションを作成します。BigQuery サブスクリプションを使用しない場合は、pull または push サブスクリプションと、メッセージを読み取り、BigQuery に書き込むサブスクライバー(Dataflow など)が必要です。

  3. MongoDB に挿入された新しいドキュメントをリッスンし、Pub/Sub に使用されるスキーマと一致する変更ストリームを設定します。

この代替案の詳細については、Pub/Sub BigQuery サブスクリプションを使用して MongoDB 変更ストリーム用のデータ パイプラインを作成するをご覧ください。

Confluent Cloud

MongoDB 変更ストリームをモニタリングするために独自のパブリッシャー アプリケーションを作成したくない場合は、代わりに Confluent Cloud を使用できます。このアプローチでは、Confluent を使用して、MongoDB データ ストリームを読み取るように MongoDB Atlas ソースコネクタを構成します。次に、Confluent クラスタから BigQuery にデータをシンクするように BigQuery シンクコネクタを構成します。

この代替案の詳細については、Confluent コネクタを使用して MongoDB から BigQuery にデータをストリーミングするをご覧ください。

設計上の考慮事項

MongoDB Atlas から BigQuery へのソリューションを作成する場合は、次の領域を考慮する必要があります。

セキュリティ、プライバシー、コンプライアンス

統合パイプラインを実行すると、Dataflow は次の 2 つのサービス アカウントを使用してセキュリティと権限を管理します。

  • Dataflow サービス アカウント。Dataflow サービスは、プロジェクトの割り当ての確認や、ユーザーの代理でのワーカー インスタンスの作成など、ジョブ作成リクエストの一部として Dataflow サービス アカウントを使用します。また、Dataflow サービスは、このアカウントを使用してジョブ実行中のジョブを管理します。このアカウントは、Dataflow サービス エージェントとも呼ばれます。
  • ワーカー サービス アカウント。ワーカー サービス アカウントは、ユーザーがジョブを送信した後にワーカー インスタンスが入力リソースや出力リソースにアクセスする目的で使用されます。デフォルトでは、ワーカーはプロジェクトの Compute Engine のデフォルト サービス アカウントをワーカー サービス アカウントとして使用します。ワーカー サービス アカウントには roles/dataflow.worker が必要です。

また、Dataflow パイプラインが Google Cloud リソースにアクセスできる必要があります。このアクセスを許可するには、必要なロールを Dataflow プロジェクトのワーカー サービス アカウントに付与して、Dataflow ジョブの実行中にプロジェクトがリソースにアクセスできるようにする必要があります。たとえば、ジョブで BigQuery に書き込む場合、サービス アカウントには、更新するテーブルやその他のリソースに対する roles/bigquery.dataEditor 以上のロールも必要です。

費用の最適化

Dataflow テンプレートの実行費用は、スケジュールされるワーカーノードとパイプラインのタイプによって異なります。費用については、Dataflow の料金をご覧ください。

各 Dataflow テンプレートは、1 つの MongoDB コレクション間で 1 つの BigQuery テーブルへのデータ移動を処理します。したがって、コレクションの数が増えると、Dataflow テンプレートの使用コストも増加する可能性があります。

業務の効率化

MongoDB データを効率的に使用、分析するには、そのデータのカスタム変換が必要になる場合があります。たとえば、ターゲット スキーマに合わせて MongoDB データを再フォーマットする、センシティブ データを秘匿化する、あるいは出力から一部の要素をフィルタリングすることが必要になる場合があります。このような変換を行う必要がある場合は、UDF を使用して、テンプレート コードを変更することなく、MongoDB to BigQuery テンプレートの機能を拡張できます。

UDF は JavaScript 関数です。UDF は JSON 文字列を受け取って返す必要があります。次のコードは変換例を示しています。

/**
* A simple transform function.
* @param {string} inJson
* @return {string} outJson
*/
function transform(inJson) {
   var outJson = JSON.parse(inJson);
   outJson.key = "value";
   return JSON.stringify(outJson);
}

UDF の作成方法の詳細については、Dataflow テンプレートのユーザー定義関数を作成するをご覧ください。

UDF の作成後は、次の手順で MongoDB to BigQuery テンプレートを拡張し、この UDF を使用する必要があります。

  • まず、UDF を含む JavaScript ファイルを Google Cloud Storage に読み込む必要があります。
  • テンプレートから Dataflow ジョブを作成するときに、次のテンプレート パラメータを設定する必要があります。
    • javascriptDocumentTransformGcsPath パラメータを JavaScript ファイルの Cloud Storage のロケーションに設定します。
    • javascriptDocumentTransformFunctionName パラメータを UDF の名前に設定します。

UDF によるテンプレートの拡張の詳細については、MongoDB to BigQuery テンプレートをご覧ください。

パフォーマンスの最適化

MongoDB から BigQuery への変換のパフォーマンスは、次の要因に依存します。

  • MongoDB ドキュメントのサイズ。
  • MongoDB コレクションの数。
  • 変換が固定スキーマに依存するのか、変化するスキーマに依存するのか。
  • JavaScript ベースの UDF を使用するスキーマ変換に関する実装チームの知識。

デプロイ

このリファレンス アーキテクチャをデプロイするには、MongoDB と Google Cloud 間のデータ変換をデプロイするをご覧ください。

次のステップ

  • Google Dataflow テンプレートをカスタマイズするには、GitHub のテンプレートをご覧ください。
  • MongoDB Atlas と Google Cloud ソリューションの詳細については、Cloud Skills Boost をご覧ください。
  • このリファレンス アーキテクチャで使用される Google Cloud プロダクトの詳細を確認する。
  • Cloud アーキテクチャ センターで、リファレンス アーキテクチャ、図、ベスト プラクティスを確認する。

寄稿者

著者:

その他の関係者:

  • サポート性に関するテクニカル リーダー Jun Liu
  • サポート性に関するテクニカル リーダー Maridi Raju Makaraju
  • ソリューション アーキテクト Sergei Lilichenko
  • グループ プロダクト マネージャー Shan Kulandaivel