コンテンツに移動
データベース

Datastream と MongoDB で、リアルタイムのデータ パイプラインを合理化

2021年7月1日
Google Cloud Japan Team

※この投稿は米国時間 2021 年 6 月 23 日に、Google Cloud blog に投稿されたものの抄訳です。

進化を続けるデジタル社会の中では、必要なときに必要なデータにアクセスできる企業こそがトップに立てると言えます。リアルタイムでデータにアクセスすることで、分析、計画、改善を継続的に行え、より戦略的な決断を下し、全体的なリスクを軽減することにつながります。目的が需要予測の調整であれ、顧客からの問い合わせの解決であれ、あるいはエンドユーザーが必要性を認識する前に分析結果を提供することであれ、必要なインサイトを確保するための最初のステップは、関連データを可能な限り早く可視化することです。

しかし、どんなシステムにもボトルネックがあり、それがスピードアップを妨げています。データが組織の多くの領域やさまざまなプラットフォームに存在する場合、旧式のリレーショナル データベースでは大きな混雑が生じます。しかし、企業は、これらのリレーショナル データストアに保存されたデータや、そこに継続的に書き込みを行うアプリケーションから、膨大な量のビジネス インサイトを引き出すことができますし、またそうしなければなりません。問題は、どのように実現するかです。

Google Cloud のサーバーレス データ変更キャプチャおよびレプリケーション サービスである Datastream と MongoDB Atlas を使えば、既存のリレーショナル データストア(Oracle や MySQL など)から MongoDB Atlas にデータを継続的にストリームミングするリアルタイム解析パイプラインを設定できます。このように、アプリケーションに MongoDB のパワーを活用して、ビジネスの意思決定をさらに改善できます。

MongoDB Atlas は、Google Cloud で利用可能な、グローバル クラウド データベース サービスです。Atlas は、シームレスな自動化と実証済みの手法により、フルマネージドの MongoDB クラスタをデプロイし、最大 99.995% * の可用性、スケーラビリティ、そして最も厳しいデータ セキュリティとプライバシー基準への準拠を保証します。MongoDB Atlas には、全文検索機能をアプリケーションに統合する Atlas Search や、追加ツールを必要とせずに洞察に満ちた可視化を実現する Atlas Charts などの機能があります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_GnTJ96N.max-2000x2000.jpg

スタートガイド

前提条件

  • MongoDB Atlas アカウント(無料枠の作成

  • リレーショナル データソース

  • Google Cloud アカウント

MongoDB Atlas クラスタの作成

MongoDB Atlas クラスタの作成について詳しくは、Get Started with Atlas(Atlas のスタートガイド)チュートリアルをご参照ください。このブログ投稿での説明用に、Google Cloud を使用して M10 MongoDB Atlas クラスタを作成しました。クラスタを設定する際は、お近くの GCP リージョンを選択することをおすすめします。

クラスタを作成したら、接続を確立するために、ネットワーク アクセスとデータベース アクセスの 2 つの設定を構成する必要があります。

ネットワーク アクセス

デフォルトでは、新しい MongoDB Atlas クラスタはネットワーク接続を受け入れません。Dataflow から MongoDB Atlas への安全なネットワーク アクセスを許可するのには 2 つの方法があります。Google VPC ネットワーク ピアリングを使用する方法と、Google Cloud から Atlas クラスタへの特定の IP 接続のみを許可して接続を保護する方法です。このブログでは、Atlas が任意の IP(0.0.0.0)からの接続を許可するように設定します。本番環境では、VPC ネットワーク ピアリングを使用するか許可リストにある IP を指定することをおすすめします。MongoDB Atlas のセキュリティに関しては、Security Features and Setup(セキュリティの機能と設定)をご覧ください。

MongoDB Atlas で外部接続を受け入れるには、Network Access メニューの [IP Access List] 入力ダイアログを起動し、[Allow access from anywhere] を選択します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_0BmInvA.max-1500x1500.jpg

ネットワーク アクセスを構成すると、Google Cloud から MongoDB Atlas への接続に使用されるユーザー アカウントも構成できます。Database Access メニューで、ユーザー認証を構成します。

データベース アクセス

MongoDB Atlas への認証には、ユーザー名やパスワード、証明書、Identity and Access Management(IAM)認証メソッドを利用できます。Google Cloud からの接続に使うユーザー名とパスワードを作成するには、Database Access メニューから [+ Add new Database User] を選びます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_GhdZS6U.max-600x600.jpg

ユーザー名とパスワードを入力し、メモしておきます。これらの認証情報は、本投稿の後半でご紹介する Dataflow Flex テンプレートで必要になります。

ソース リレーショナル データベースの構成

Datastream は、MySQL と Oracle を含めさまざまなデータベースや安全な接続方法をサポートしています。始める前に、これらのデータベースを変更データ キャプチャ(CDC)用に構成する必要があります。ここでは、MySQL をデータソースとして使用し、オンライン ドキュメントに沿って CDC を有効にしました。

Datastream 接続プロファイルの構成

変更データ キャプチャ用にデータベースの設定が終わったら、Datastream MySQL ソースと Cloud Storage の宛先の接続プロファイルを構成できます。今回の例では、「source_mysql」と「dest_cloudstorage」と呼ぶことにします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_BaklVB7.max-1400x1400.jpg

Datastream 接続プロファイルを構成するには、Datastream 接続プロファイル UI の [Create Profile] をクリックして、送信元または宛先に該当するタイプを選びます。

MySQL 接続プロファイルの構成

接続プロファイルに名前を付け、それが存在するリージョンと MySQL 接続の詳細を選択します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/5_ZsWAdmg.max-2000x2000.jpg

Cloud Storage 接続プロファイルの構成

接続プロファイルに名前を付け、それが存在するリージョンとバケットのロケーションを選択します。リージョンは、ソースの接続プロファイルと使用されるストリームが同じリージョンである必要があります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/6_mQ0iudK.max-2000x2000.jpg

注: セキュリティ上の理由から、コンピューティング サービス アカウントまたは目的の Dataflow ワーカー サービス アカウントに IAM 権限を設定する必要があります。以下の手順を必ず行ってください。

  • IAM のサービス アカウントに Datastream 管理者ロールを付与します(オーナーは req 権限も付与します)

  • Datastream バケットに、objectReader IAM 権限を付与します

2 つの接続プロファイルが作成されると、接続プロファイル リストに表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/7_Eyrq6Iy.max-700x700.jpg

ストリームを構成する

[Stream] メニューの [Create Stream] をクリックして、参照元から宛先へのストリームを作成します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/8_gz5sjSR.max-1200x1200.jpg

ストリーム名と ID を入力します。[Source type] はリレーショナル データベースのソースで、この例では MySQL です。ウィザードの指示に沿って、先ほど作成した MySQL と Cloud Storage のプロファイルを選択します。正しく構成されると、Datastream は MySQL からデータの変更を随時 pull し、Cloud Storage バケットに書き込んでいきます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/9_OpCgxNA.max-400x400.jpg

この時点で、Dataflow MongoDB テンプレートを構成する準備が整いました。しかし、Cloud Storage にまだファイルが保存されているため、Cloud Storage の Pub/Sub 通知を使用するのが最善の方法です。この機能により、Dataflow はバケット全体で新しいファイルを探すために Cloud Storage を継続的にスキャンするのではなく、新しいファイルが利用可能になったときにその存在を知らせることで、Dataflow をより効率的にすることができます。

Pub/Sub 通知を作成する

Google Cloud Console には利用可能な UI がないため、Pub/Sub 通知を作成するには、gcloudgsutil コマンドライン ツールを使用する必要があります。Pub/Sub トピックとサブスクリプションを作成し、Cloud Storage バケットに通知を作成して、通知を有効にしてみましょう。以下は、構成スクリプトの例です。

読み込んでいます...

: この構成は、後で gcloud dataflow デプロイコマンドの -パラメータ セクションで使用します。

読み込んでいます...

通知は、Datastream を実行する前に設定する必要があります。Datastream がすでに実行されている場合、ストリームを再作成するのではなく、Cloud Storage にファイルのコピーを作成します。これにより、通知メカニズムがトリガーされます。Dataflow がすべてのファイルを処理したら、コピーは削除できます。

Dataflow テンプレートの作成

Datastream と Cloud Storage を作成、構成したので、Dataflow の構成に進みます。まだ行っていない場合は、gcloud services enable dataflow.googleapis.com で Dataflow を有効にしてください。

Dataflow では、テンプレートを利用することで、ソースやターゲット、データに適用する変換やその他のロジックを簡単に定義できます。また、独自のカスタム JavaScript 関数をプラグインして、カスタム変換を実施することもできます。  

Dataflow MongoDB テンプレートを活用するには、GitHub リポジトリに移動し、README ファイルの手順に沿って操作します。ここでは、Dataflow flex のテンプレート イメージを作成し、Google Container Registry に配置する方法をご説明します。次に、この Flex テンプレートを必要なパラメータで実行する方法をご説明します。スクリプトでは、いくつかのパラメータを考慮する必要があります。

README の指示に沿ってテンプレートを実行すると、Dataflow のジョブ UI にジョブが作成されているのが確認できます。Dataflow MongoDB テンプレートをデプロイすると、ジョブの実行が開始されることに注意してください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/10_eCULj0K.max-600x600.jpg

ジョブを選択すると、ジョブグラフ、指標、実行などの詳細が確認できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/11_tSYI6bx.max-2000x2000.jpg

実際のフローを見るために、リレーショナル データベースに何行か追加して、MongoDB Atlas にどう表示されるのかを確認してみましょう。

ビジネスの意思決定をリアルタイムで改善

この投稿では、Google Cloud と MongoDB Atlas のコンポーネントの設定、構成方法を学びました。これにより、MySQL から MongoDB にデータをストリームすることが可能になります。リアルタイムのデータの動きを効率化することで、ビジネス インサイトをより早く入手し、よりスマートで戦略的な意思決定を行うことができます。業界に関係なく、MongoDB Atlas と Google Cloud が業界をリードするお手伝いをします。

Google Cloud で MongoDB をデプロイ、管理、拡大する方法について詳しくは、Google のパートナーのページをご覧ください。

-MongoDB パートナー ソリューション アーキテクト Paresh Saraf

-MongoDB コネクタおよびシングス担当シニア プロダクト マネージャー Robert Walters

投稿先