このドキュメントでは、MongoDB Atlas と Google Cloud の間のデータ変換をデプロイする方法について説明します。ここでは、MongoDB Atlas から BigQuery へのデータの抽出、変換、読み込み(ETL)プロセスをデプロイします。
この手順は、MongoDB Atlas に保存されている運用データに対し、BigQuery を使用して複雑な分析を行うことを考えているデータ管理者を対象としています。MongoDB Atlas、BigQuery、Dataflow について十分に理解している必要があります。
アーキテクチャ
次の図は、このソリューションをデプロイするときに使用するリファレンス アーキテクチャを示しています。
図に示すように、インテグレーション プロセスを処理する 3 つの Dataflow テンプレートがあります。最初のテンプレートである MongoDB to BigQuery は、MongoDB からドキュメントを読み取り、BigQuery に書き込むバッチ パイプラインです。2 番目のテンプレートの BigQuery to MongoDB は、分析されたデータを BigQuery から読み取り、MongoDB に書き込むために使用できるバッチ テンプレートです。3 番目のテンプレートの MongoDB to BigQuery(CDC)は、MongoDB 変更ストリームと連携して運用データの変更を処理するストリーミング パイプラインです。詳細については、MongoDB Atlas と Google Cloud の間のデータ変換をご覧ください。
目標
次のデプロイ手順では、MongoDB to BigQuery テンプレートを使用して MongoDB Atlas から BigQuery へのデータの ETL プロセスを実行する方法を示します。この ETL プロセスをデプロイするには、次のタスクを行います。
- Google Cloud に MongoDB Atlas クラスタをプロビジョニングする。
- MongoDB クラスタにデータを読み込む。
- クラスタ アクセスを構成する。
- Google Cloud で BigQuery テーブルを設定する。
- MongoDB データを BigQuery に転送する Dataflow ジョブを作成してモニタリングする。
- BigQuery で出力テーブルを検証する。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
MongoDB から BigQuery へのデータ変換アーキテクチャの環境を設定するには、次の手順を行います。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataflow APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataflow APIs.
MongoDB Atlas をインストールする
このセクションでは、Cloud Marketplace を使用して MongoDB Atlas インスタンスをインストールします。以下の手順は、既存の MongoDB アカウントがないことを前提としています。サブスクリプションの設定と、Google 請求先アカウントと MongoDB アカウントのリンクの詳細については、MongoDB ドキュメントの Google Cloud Self-Serve Marketplace をご覧ください。
- Google Cloud コンソールでナビゲーション メニューを開き、[マーケットプレイス] を選択します。
- Marketplace の検索ボックスに「MongoDB Atlas」と入力します。
- 検索結果で、[MongoDB Atlas (pay-as-you-go)] を選択します。
- [MongoDB Atlas (pay-as-you-go)] ページで利用規約の概要を確認し、[Sign up with MongoDB] をクリックします。
- MongoDB のサブスクリプション ページで、請求先アカウントを選択し、利用規約に同意して [登録] をクリックします。
- [Register with MongoDB] ボタンをクリックし、MongoDB アカウントを作成します。
- 組織を選択するページで、Google Cloud 請求先アカウントをリンクする MongoDB 組織を選択します。
- Google Cloud による組織の同期が完了するまで待ちます。
アカウントが同期されると、Google Cloud コンソールの [MongoDB Atlas (pay-as-you-go)] ページが更新され、[プロバイダで管理] ボタンが表示されます。
MongoDB Atlas クラスタを作成する
このセクションでは、MongoDB クラスタを作成します。作成中に、次の情報を選択します。
- クラスタタイプ。インフラストラクチャの要件に基づいてクラスタ階層を選択します。
- クラスタの優先リージョン。自分の物理的ロケーションに最も近いリージョンを選択することをおすすめします。
無料の MongoDB クラスタを作成してデプロイする方法については、MongoDB ドキュメントの Deploy a Free Cluster をご覧ください。
クラスタを作成して設定する手順は次のとおりです。
- Google Cloud コンソールの [MongoDB Atlas (pay-as-you-go)] ページで、[プロバイダで管理] をクリックします。
MongoDB ログインページで [Google] をクリックし、MongoDB Atlas のインストールに使用した Google アカウントをクリックします。
新規ユーザーの場合、MongoDB UI の [Database Deployments] ページが自動的に開きます。
Atlas UI の [Database Deployments] ページで、[Create] をクリックします。
[Create a Cluster] ページで、[Shared] をクリックします。
[Shared] オプションを選択すると無料のクラスタが提供されます。それを使用してこのリファレンス アーキテクチャをテストできます。
[Create a Shared Cluster] ページの [Cloud Provider & Region] セクションで、次の操作を行います。
- [Google Cloud] を選択します。
- 地理的に最も近く、必要な条件を満たすリージョンを選択します。
[Cluster Tier] セクションで、[M0] オプションを選択します。
M0
クラスタは無料で、小規模な概念実証アプリケーションに適しています。[Cluster Name] にクラスタの名前を入力します。
[Create Cluster] をクリックしてクラスタをデプロイします。
MongoDB クラスタを設定する
このセクションでは、次の手順を実施します。
- クラスタにサンプルデータを読み込む。
- クラスタへのアクセスを構成する。
- クラスタに接続する。
MongoDB クラスタにサンプルデータを読み込む
MongoDB クラスタを作成したら、そのクラスタにデータを読み込む必要があります。MongoDB ではさまざまなサンプル データセットが提供されます。これらのデータセットのいずれを使用してもデプロイをテストできますが、本番環境のデプロイで使用する実際のデータに似たデータセットを使用することをおすすめします。
サンプルデータの読み込み方法の詳細については、MongoDB ドキュメントの Load the Sample Data をご覧ください。
サンプルデータを読み込む手順は次のとおりです。
- Atlas UI の [Database Deployments] ページで、デプロイしたクラスタを見つけます。
省略記号(...)ボタンをクリックし、[Load Sample Dataset] をクリックします。
サンプルデータの読み込みには約 5 分かかります。
サンプル データセットを確認し、このデプロイのテストに使用するコレクションをメモします。
クラスタ アクセスを構成する
クラスタを接続するには、データベース ユーザーを作成し、クラスタの IP アドレスを設定する必要があります。
- データベース ユーザーは MongoDB ユーザーとは別のものです。このデータベース ユーザーを Google Cloud から MongoDB に接続する必要があります。
- このリファレンス アーキテクチャでは、CIDR ブロック
0.0.0.0/0
を IP アドレスとして使用します。この CIDR ブロックはどこからでもアクセス可能で、今回のような概念実証のデプロイにのみ適しています。ただし、このアーキテクチャを本番環境バージョンとしてデプロイする場合は、アプリケーションに適した IP アドレス範囲を入力してください。
データベース ユーザーと、クラスタの IP アドレスの設定方法については、MongoDB ドキュメントの Configure cluster access with the QuickStart Wizard をご覧ください。
クラスタ アクセスを構成する手順は次のとおりです。
- 左側のナビゲーション パネルの [Security] セクションで、[Quickstart] をクリックします。
- [Username and Password] ページで、次の手順に沿ってデータベース ユーザーを作成します。
- [Username] に、データベース ユーザーの名前を入力します。
- [Password] に、データベース ユーザーのパスワードを入力します。
- [Create User] をクリックします。
[Username and Password] ページで、次の手順に沿ってクラスタの IP アドレスを追加します。
[IP Address] に「0.0.0.0/0」と入力します。
本番環境の場合は、その環境に適した IP アドレスを入力します。
(省略可)[Description] にクラスタの説明を入力します。
[Add Entry] をクリックします。
[Finish and Close] をクリックします。
クラスタに接続する
クラスタへのアクセスが構成されたら、クラスタに接続する必要があります。クラスタに接続する方法の詳細については、MongoDB ドキュメントの Connect to Your Cluster をご覧ください。
クラスタに接続する手順は次のとおりです。
- Atlas UI の [Database Deployments] ページで、デプロイしたクラスタを見つけます。
- [Connect] を選択します。
- [Connect] ページで、[Compass] オプションをクリックします。
[Copy the connection string] フィールドを見つけ、MongoDB の接続文字列をコピーして保存します。この接続文字列は、Dataflow テンプレートの実行中に使用します。
接続文字列の構文は次のとおりです。
mongodb+srv://<UserName>:<Password>@<HostName>
接続文字列には、前の手順で作成したデータベース ユーザーのユーザー名が自動的に設定されます。ただし、この文字列を使用して接続するときに、データベース ユーザーのパスワードの入力を求められます。
[Close] をクリックします。
BigQuery でデータセットを作成する
BigQuery では、データセット名を入力し、データセットの地理的位置を選択するだけで、データセットを作成できますが、データセットに設定可能なオプション フィールドがあります。これらのオプション フィールドの詳細については、データセットの作成をご覧ください。
Google Cloud コンソールで [BigQuery] ページに移動します。
[エクスプローラ] パネルで、データセットを作成するプロジェクトを選択します。
オプションを開いて、[データセットを作成] をクリックします。
[データセットを作成する] ページで、次の操作を行います。
Dataflow バッチジョブの作成、モニタリング、検証
Dataflow で、次の手順に沿って MongoDB から BigQuery にサンプルデータを読み込む 1 回限りのバッチジョブを作成します。バッチジョブを作成したら、Dataflow モニタリング インターフェースでジョブの進行状況をモニタリングします。モニタリング インターフェースの使用方法については、Dataflow モニタリング インターフェースを使用するをご覧ください。
Google Cloud コンソールで [Dataflow] ページに移動します。
[CREATE JOB FROM TEMPLATE] をクリックします。
[テンプレートからジョブを作成] ページで、次の操作を行います。
- [ジョブ名] に、一意のジョブ名を入力します(例: mongodb-to-bigquery-batch)。プロジェクトで、同じ名前の他の Dataflow ジョブが現在実行されていないことを確認してください。
- [リージョン エンドポイント] で、作成した BigQuery データセットと同じロケーションを選択します。
- [Dataflow テンプレート] の [Process Data in Bulk (batch)] リストで [MongoDB to BigQuery] を選択します。
[必須パラメータ] セクションで、次のパラメータを入力します。
- [MongoDB Connection URI] に、Atlas MongoDB 接続文字列を入力します。
- [MongoDB database] に、前に作成したデータベースの名前を入力します。
- [MongoDB collection] に、先ほどメモしたサンプル コレクションの名前を入力します。
- [BigQuery output table] で [参照] をクリックし、前の手順で作成した BigQuery テーブルを選択します。
[User option] で [NONE] または [FLATTEN] を選択します。
NONE は、JSON 文字列形式でドキュメント全体を BigQuery に読み込みます。FLATTEN は、ドキュメントを 1 レベルにフラット化します。UDF を指定しない場合、FLATTEN オプションは固定スキーマを持つドキュメントでのみ機能します。
ジョブを開始するには、[ジョブを実行] をクリックします。
次の手順で Dataflow モニタリング インターフェースを開くと、バッチジョブの進行状況を確認でき、ジョブがエラーなしで完了したかどうかを検証できます。
- Google Cloud コンソールで、このデプロイメントのプロジェクトのナビゲーション メニューを開きます。
- [分析] で、[Dataflow] をクリックします。
パイプラインが正常に実行されたら、次の手順でテーブル出力を検証します。
- BigQuery で [エクスプローラ] ペインを開きます。
プロジェクトを開き、データセットをクリックして、テーブルをダブルクリックします。
これで、テーブルに MongoDB データを表示できるようになりました。
クリーンアップ
MongoDB アカウントと Google Cloud アカウントに課金されないようにするには、MongoDB Atlas クラスタを一時停止または終了し、このリファレンス アーキテクチャ用に作成した Google Cloud プロジェクトを削除する必要があります。
MongoDB Atlas クラスタを一時停止または終了する
ここでは、クラスタを一時停止する基本的な手順について説明します。詳細については、MongoDB ドキュメントの Pause, Resume, or Terminate a Cluster をご覧ください。
- Atlas UI で、Atlas プロジェクトの [データベースのデプロイ] ページに移動します。
- 一時停止するクラスタで をクリックします。
- [Pause Cluster] をクリックします。
- [Pause Cluster] をクリックして、選択内容を確定します。
プロジェクトを削除する
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
次のステップ
- テンプレートをカスタマイズする場合、GitHub で Google Dataflow テンプレートを検索する。
- MongoDB Atlas と Google Cloud ソリューションの詳細について Cloud Skills Boost で学習する。
- このリファレンス アーキテクチャで使用される Google Cloud プロダクトの詳細を確認する。
- Cloud アーキテクチャ センターで、リファレンス アーキテクチャ、図、ベスト プラクティスを確認する。
寄稿者
著者:
- ISV パートナー エンジニア Saurabh Kumar
- シニア ソリューション アーキテクト(MongoDB)Venkatesh Shanbhag
その他の寄稿者:
- サポート性に関するテクニカル リーダー Jun Liu
- Maridi (Raju) Makaraju | サポート性に関するテクニカル リーダー
- ソリューション アーキテクト Sergei Lilichenko
- グループ プロダクト マネージャー Shan Kulandaivel