このドキュメントでは、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] ページに移動します。
[テンプレートからジョブを作成] をクリックします。
[テンプレートからジョブを作成] ページで、次の操作を行います。
- [ジョブ名] に、一意のジョブ名を入力します(例: 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