CData Software Blog

クラウド連携のCData Software の技術ブログです。

Google Cloud Storage(GCS)へのレプリケーション方法について:CData Sync

こんにちは、テクニカルサポートエンジニアの宮本です。

最近、S3やGCSへのレプリケーションはサポートしていますか?という問合せをいくつか受けました。
よく弊社技術ブログでは、RDB 系か BigQuery へのレプリケーションする構成が多めではありますが、ちゃんと S3 や Google Cloud Storage(GCS)、加えて Azure Blob もサポートしています。
そこで 今回は GCS へのレプリケーション方法を解説したいと思います。
※S3 へのレプリケーションについては下記で解説済み

www.cdatablog.jp

Google Cloud Storage(GCS)とは?

GCP が提供するクラウドストレージサービスになり、もちろんですが画像や動画、テキストからそのほかのファイルまで格納できるようになっています。 BigQuery までのつなぎ部分としてデータレイクで利用してるケースも多いと思います。

cloud.google.com

手順

必要なものは下記のとおりです。データソースは Salesforce を使いますが、他のものに置き換えてもOKです。

CDataSync インストール

CData Sync はセルフホスティング or AWS で提供している ETL/ELT ツールで、エンジニアでなくても容易に SaaS データを同期先 DB にレプリケートすることができるツールです。

自動データレプリケーション | CData Software Japan

Windows OS をご利用の場合は以下のハンズオン記事よりインストール手順を参照してみてください。(すぐ終わります)

www.cdatablog.jp

また、最近GCE 上でご利用される機会も増えてきました。GCE で CData Sync をホスティングする場合は以下記事をご参照ください。
www.cdatablog.jp

GCS 側にバケット準備

GCS の管理コンソール画面を開き、バケットを作成をクリックします。

今回はバケット名だけ指定して作成します。※必要であればロケーションなどその他の設定はご変更ください。

これでバケットの作成は完了です。
なお、バケット配下にフォルダを作成してもOKです。その場合はのちの CData Sync 接続設定でフォルダまでパスに加えてあげます。

GCS への接続設定

ではこれから CData Sync で GCS への接続設定を行っていきますので、CData Sync を起動し接続設定画面を開きます。

接続設定画面を開くと、「データソース」と「同期先」というタブが表示され、どちらにも GCS コネクタが存在しています。

データソース側

同期先側

同じコネクタ使っているならどっちを使っても良いのでは?となりそうですが、GCS コネクタの場合はデータソースとして、または同期先としてそれぞれに特化して作成されているコネクタですので、今回のケースでは同期先側を使用して接続設定を行います。

同期先のGCSアイコンをクリックしたら、プロジェクトIDとバケット名を入力します。

本来ならこれで接続テストを行い接続設定が完了します。

もしサービスアカウントで接続したい場合
Auth Scheme を OAuthJWT にして、

下記赤枠部分に必要な情報をセットします。(今回はOAuth認証なので未入力で良いです

ファイルフォーマットについて

GCS コネクタではもう少し色々と接続オプションを指定することができますので Advanced タブを開いてみていきます。

File フォーマット
レプリケーションジョブ実行後に作成されるファイルの種類を3種類の中から選択することができます。今回は CSV を選択しましょう。

Include Columns Headers
出力ファイルにヘッダー行を入れるかどうかを選択できます。今回はTrueにします。

Insert Mode
出力ファイル保存時の挙動を指定します。FilePerBatch の場合はジョブ実行ごとにファイルが作成され、SingleFile の場合は必ず中身が上書きされます。
今回は SingleFile を指定しましょう。

一通り入力したところで設定タブに戻り「次に接続」をクリックし、

接続許可を行い、

接続成功のメッセージが表示されたら接続設定を保存します。

これでGCSの接続設定が完了です。
残りのデータソース側については以下ハンスオン記事の「1.Salesforce へのコネクションを作成」を参照して作成してみてください。
CData Sync ハンズオン資料 - CData Software Blog

ジョブ作成

任意のジョブ名を入力し、データソース、同期先にそれぞれ先ほど作成した接続設定を選択して作成をクリックします。

次に「テーブルを追加」をクリックし、今回は Lead を選択します。※データソース側からどのデータを取得するかをここで設定しています。

すると、以下のように自動でレプリケート用のクエリが作成されます。

このままでももちろんジョブは実行できますが、今回は連携項目の絞り込みと項目名の変更を行います。

項目の絞り込み
では作成したクエリの行をクリックし、カラムマッピングタブを表示させます。不要なカラムから削っていきたいと思いますが、マウスを矢印部分にマウスオーバーすると×に反転しますのでそれをクリックします。

今回はわかりやすく以下のカラムだけに絞りました。カラム絞り込み後、OKボタン押すことで以下のように選択した項目だけが表示されるようになります。

項目名の変更
CDataSync では日本語のカラム名に変換することも可能ですので、今回はすべて ID 以外を変更します。その後、OK をクリックすると、

変更したクエリがセットされました。

最後にジョブオプションを開き、テーブル削除を ON にして保存します。

これでジョブ実行前の準備が整いました。

ジョブの実行と結果確認

ジョブ実行は対象クエリにチェックを入れて実行ボタンをクリックするだけです。ジョブが成功すると右側に何件レプリケートしたかが表示されます。今回は 24 件レプリケートされました。

ではお待ちかねの GCS 側を確認してみましょう。
指定したバケット配下に指定した名前で CSV ファイルが作成されています。

中身を確認してみると、指定したカラム名で出力されているのが確認できました。

Insert Mode が SingleFile の時にファイル名に実行日を付与したい場合

Insert Mode が SingleFile のときはファイルが毎回上書きされる形になるとお伝えしましたが、ジョブ実行ごとに作成するファイル名を変更することでそれぞれ独立して保存されるようになります。

以下の記事では CData Sync の環境変数を使用して、連携テーブル名にジョブ実行月を付与してレプリケーションをしています。
www.cdatablog.jp

同じ手法を用いることでGCS上に作成されるCSVファイル名にもyyyyMMDD などの接頭辞をつけることが可能になります。

Insert Mode を FilePerBatch にした場合

接続設定の際に少し紹介したInsert Mode=FilePerBatch のパターンも試してみます。
GCSの接続設定でInsert Mode を FilePerBatch に変更します。

次にジョブオプションでテーブル削除のチェックを外します。こうすることで、差分連携が可能になります。

ではこれでジョブを実行したあとにGCSをみてみると、Lead というフォルダが作成されCSVファイルが "yyyyMMddhhmmssSSS_batchId" の形式で作成されているのが確認できました。

続けて実行すると、このように0件になります。
※もし差分更新が効いていない場合は「IncrementalCheckColumns=更新日時項目」のオプションを入れてみてください。
REPLICATE [Lead] WITH IncrementalCheckColumns='LastModifiedDate' SELECT [Id], [AnnualRevenue] AS [年間売上], [Company] AS [会社名], [Email] AS [メールアドレス], [LastModifiedDate] AS [最終更新日時], [Name] AS [名前], [Status] AS [ステータス] FROM [Lead]


ではSalesforce のデータを1件更新してみたので再度実行してみると、ちゃんと1件だけがレプリケートされた結果になりました。

GCS の方は新たにファイルが追加されました。

CSVファイルの中身をみると変更分の1件だけが保存されていました。

おわりに

いかがでしたでしょうか。今回は Google Cloud Storage(GCS)へのレプリケーション方法を解説してみました。各種プロパティによってファイルの保持方法に合わせたレプリケーションを柔軟に対応できるようになっています。
ご紹介したCData Sync は下記リンクより30日間無償トライアルが可能ですので、GCS へのレプリケーションをぜひお試しください!

Data Sync Apps | CData Software Japan