こんにちは!長畑です
先日Google Cloud Platformにて、Datastreamが正式版としてGAされました。
以前よりベータ版として公開はされていましたが、正式版リリースを機に動作検証を行いました。
概要
Datastreamは既存データベース⇒BigQuery間でのデータ転送を簡単な手順で実現できてしまうサービスです。
DB間のデータ転送をフルスクラッチする場合、検討する課題も多くそれなりに時間と費用とかけて開発を行い、安定稼働するまで監視、改善、チューニングといったことを続ける必要があります。
Datastreamはそういった問題を一気に解決してくれるサービスです。
検証
検証手順
1.AWSにRDSとEC2を準備します。
2.BigQueryにデータセットを作成します。
2.Datastreamの設定を行います。
3.AWSのRDSにデータを登録してBigQueryにデータ転送されるか検証します。
全体図
まず今回検証する全体像ですが、次の構成としています。AWS上にRDSとEC2を構築。EC2は踏み台サーバとします。RDSはPostgreSQLを選択しています。
SSHポートフォワーディングで踏み台サーバ経由でRDSに接続するような形としています。
BigQueryの事前準備
BigQueryにデータセットも用意しておきます。
今回はdatastream_testというデータセットを作成しました。
AWS PostgreSQLの事前準備
レプリケーションを利用する場合、PostgreSQLのログレベルが’logical’に設定されている必要があります。以下のSQLで確認します。
SELECT name, setting FROM pg_settings WHERE name='wal_level';
‘logical’でなければ、パラメータグループから設定をwal_levelをlogicalに変更してデータベースの再起動を行います。
wal_sender_timeoutは、10分以上が推奨されています。無効にする場合は0分を指定します。
こちらは再起動は不要です。
ストリームの設定中にもガイドが現れますが、レプリケーションスロット、パブリケーション名、ストリーミング対象となるテーブルを設定します。
こちらは公式ドキュメントをリンクします。
レプリケーションスロット、パブリケーション名はストリームの設定で必要となります。
テーブルを作成して、適当なデータを入れておきます。
接続方法について
接続方法は以下の3つがあります。それぞれメリット・デメリットがあります。
今回は設定の楽さ、比較的安全なSSHポートフォワードで接続したいと思います。
接続方法 | メリット | デメリット |
VPNピアリング | 安全なプライベート接続 | DBとGCP間でプライベート接続が必要となる。 |
SSHポートフォワード | 安全 | 踏み台サーバが必要となる。 |
IP許可リスト | 構成が容易 | DBがパブリックに公開されてしまう。 暗号化されない。など。 |
Datastreamの設定
接続プロファイルの設定
始めに転送元のデータベースへの接続情報を入力します。
接続プロファイルより、プロファイルの作成を選択します。
サポートされているデータベースを選択することが可能です。
ここではPostgreSQLを選択します。
接続先の情報を登録します。
まずはデータベースへの接続情報を登録します。
次に踏み台サーバの設定です。
フォワードSSHトンネルを選択し、踏み台サーバへの接続情報を登録します。
認証方法としては、公開鍵/秘密鍵のペアかパスワード認証がありますが、
パスワード認証だとエラーで接続できなかったため秘密鍵で接続しました。
※ サポートに問い合わせたところ、エラーになるとのこと。修正に期待しましょう。
※AWS側のセキュリティグループにGCPのリージョンのIPを登録しておく必要があります。
接続テストテスト成功であれば作成ボタンを押下して接続プロファイルを作成しましょう。
作成が終わると接続プロファイル一覧に表示されます。この段階ではストリームと紐づけていない為、アクティビティに0個のストリームと表示されます。
ストリームの作成
ストリームを作成します。必要な情報を入力します。
ソースタイプに今回連携するPostgreSQLを選択、宛先はBigQueryとします。
接続プロファイルを設定します。前項で設定した接続プロファイルを選択します。
転送の設定を行います。
レプリケーションスロット、パプリケーション名の設定、転送元のテーブルの選択を行います。
BigQueryの接続プロファイルの定義を行います。新規作成の場合は妥当な名前を登録します。
転送先のデータセットを選択します。
作成と開始ボタンを押下します。
しばらく待つとバックフィルが開始されBigQueryにテーブルが自動的に作成され、ストリームが開始します。
BigQueryの対象のデータセットにテーブルが作成されています。
テーブルの中身を見るとデータが連携されていることがわかります。
データ転送確認
インサート
インサートしたデータが転送されるかの確認です。
BigQueryは3件存在しています。
レプリケーション元テーブルに1件インサートして、少し待ちます。
するとBigQuery側にデータが反映されています。
アップデート
次にアップデートしたデータが転送されるかの確認です。
データをアップデートして、少し待ちます。
アップデートした箇所が反映されていることがわかります。
デリート
次にデリートです。
同じように削除して、少し待ちます。
データが削除されていることがわかります。
価格体系
Datastream for BigQueryはデータの連携量によって料金が変動します。
また2つの手段によりデータ転送を行っています。
バックフィル:転送元のスナップショットを取込みます。
CDC :転送元の変更をリアルタイムでキャプチャします。
項目 | 費用(GBあたり) | 備考 |
CDC 0-2.5 TB/month | $2.568 | |
CDC 2.5-5 TB/month | $1.926 | |
CDC 5-10 TB/month | $1.541 | |
CDC 10+ TB/month | $1.027 | |
バックフィル | $0.514 | 500GBまで無料 |
仮にテーブルサイズが800GBで、データの更新で仮に2倍の更新量があるとして約400GBのデータ連携量があったと想定した際の料金は以下です。
バックフィル料金:(800GB – 500GB) * $0.514 = $154.2
CDC料金 :400GB * $2.568 = $1027.2
合計: $154.2 + $1027.2 = $1181.4 (約170,994円)※円換算は変動します。
まとめ
この記事では、正式リリースされたDatastreamの動作を確認しました。簡易な操作でデータ連携が可能になります。他にも料金はイニシャルコストは不要かつランニングコストだけと考えた場合、安価にデータ転送の機能を実現できるため、このサービスは非常に魅力的と言えるのではないでしょうか。
Google および Google Cloud Platform™ service は Google LLC の商標であり、この記事は Google によって承認されたり、Google と提携したりするものではありません。
コメント