ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →CData SyncとMySQL Heatwave で SaaSなど多様なデータソースを統合
桑島義行はじめに
MySQL HeatWaveは、Oracle社が提供するMySQLベースのクラウド・データベースサービスです。MySQL HeatWaveは超並列でインメモリのハイブリッドな列指向のクエリ処理エンジンを搭載することで大規模なスケーリングとパフォーマンスを実現することが可能です。本記事では、SalesforceなどのSaaSデータをCData Syncを利用してMySQL HeatWaveに統合する手順をご紹介します。
本手順で実現する構成
本手順では、Oracle Cloud InfrastructureOCI(以下、OCI)上にMySQL Heatwave、および、CData Syncを用いたデータパイプライン処理を構築します。
前提
- OCI : MySQL Heatwaveが利用できるプラン
- CData Sync : 30日の無償評価期間あり
- Salesforce Sales Cloud : 無償で利用できる開発者ライセンスあり
手順
MySQL Heatwaveの構築
OCI上へのMySQL Heatwave環境の構築にはこちらのOCIチュートリアルを参考にして作成しました。
OCIインスタンス、および、CData Syncの構築
OCI上のOracle Linuxの構築、および、CData Sync製品の初期設定についてはこちらのスマートスタイル社の記事を参考にして作成しました。
OCIインスタンス上のMySQL ShellからMySQL Heatwaveへの接続確認
OCIインスタンス(Oracle Linux)上にMySQL クライアント、および、MySQL Shellをインストールします。こちらのOCIチュートリアルを参考にしてインストールしました。
OCIインスタンスから以下のコマンドでMySQL HeatwaveのローカルIPアドレス(もしくは、ホスト名)を指定して接続します。
実行コマンド例
mysql -u root -p -h [ローカルIPアドレス]
MySQL Heatwaveの接続ユーザのパスワードを入力して接続が成功することを確認して現在のデータベース一覧を表示する以下のコマンドを実行します。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | mysql_audit | | performance_schema | | sys | +--------------------+ 5 rows in set (0.01 sec)
今回Salesforceのデータを取り込むデータベースを以下のコマンドで作成します。
mysql> CREATE DATABASE sync; Query OK, 1 row affected (0.00 sec)
もう一度データベースのリストを確認してデータベース(本例ではsync)が作成されたことを確認します。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | mysql_audit | | performance_schema | | sync | | sys | +--------------------+ 6 rows in set (0.00 sec)
CData Sync管理コンソールから連携ジョブを作成
OCIインスタンスのPublicアドレスにアクセス可能なマシンのブラウザからCData Syncの管理コンソールにアクセスします。
http://[OCIインスタンスのPublic IPアドレス]:8181/login.rst
[admin / 設定したパスワード]でサインインするとダッシュボード画面が開きます。
左側のメニューの接続を開きます。「+接続を追加」ボタンをクリックします。
コネクタ選択画面にてデータソースタブが開かれていることを確認して、検索窓から「Salesforce」と入力してSalesforceコネクタを選択します。
Salesforceへの接続情報をセットします。CData SyncではOAuthやBasicなど様々な認証方式をサポートしています。詳細はこちらの製品ヘルプをご参照ください。本手順では「ユーザー資格情報およびセキュリティトークン」の方式でSalesforceに接続します。
- 接続名:任意(本例ではSalesforce)
- Auth Scheme:Basic
- User:Salesforceへのログインユーザ
- Password:Salesforceへのログインユーザのパスワード
- Security Token:こちらの手順で取得
項目をセットしたら右上の「作成およびテスト」ボタンをクリックします。
「接続は正常に作成されました。」メッセージが表示されて接続一覧の画面が開き、Salesforceへの接続が追加されていることを確認します。
次にCData SyncからMySQL Heatwaveへの接続を作成します。右上の「+接続を追加」ボタンをクリックします。「コネクタを選択」画面が表示されるのでタブを「データソース」から「同期先」に切り替えて検索ボックスから「MySQL」と入力してMySQLコネクタを選択します。
MySQL Heatwaveへの接続情報をセットします。OCIインスタンス上のCData SyncからMySQL HeatwaveにはプライベートIPアドレスで接続します。
- 接続名:任意(本例ではHeatwave)
- Server:MySQL HeatwaveのプライベートIPアドレス
- Port:MySQL Heatwaveへの接続ポート
- Auth Scheme:Password
- User:MySQL Heatwaveへのログインユーザ
- Password:MySQL Heatwaveへのログインユーザのパスワード
- Database : MySQL Shellで作成したデータベース(本例ではSync)
プライベートIPアドレスとポートについてはMySQL Heatwaveの接続タブから確認できます。
項目をセットしたら右上の「作成およびテスト」ボタンをクリックします。「接続は正常に作成されました。」メッセージが表示されて接続一覧の画面が開き、MySQL Heatwave への接続が追加されていることを確認します。
次に作成したSalesforceとMySQL Heatwaveへの接続を利用したジョブを作成します。左側メニューから「ジョブ」を選択します。
「+ジョブを作成」ボタンをクリックすると「ジョブを追加」ダイアログが表示されるので以下の情報をセットして「ジョブを追加」ボタンをクリックします。
- 名前:任意(本例では、Salesforce2Heatwave)
- データソース:Salesforce
- 同期先:Heatwave
- 種類:標準(個別設定)
作成したジョブの設定画面が開くので「タスク」タブを開きます。
「+タスクを追加」ボタンをクリックすると「タスクを追加」ダイアログが表示されて、Salesforce内のオブジェクトがリストとして表示されます。
本手順では検索ボックスを利用して以下3つのオブジェクトにチェックを入れます。
- Account(取引先)
- Contact(取引先責任者)
- Lead(見込み客)
タスクに上記3つのオブジェクトが追加されたことを確認します。
それでは手動で連携ジョブを実行してみましょう。右上の「▶️実行」ボタンをクリックします。右上にジョブの実行が成功した旨のメッセージが表示されてタスク内の各オブジェクトのLAST RUNに「Successful」が表示されていれば成功です。実際に同期された行数も表示されます。
それでは、実際にMySQL HeatwaveにSalesforceのデータが連携されているかOCIインスタンス上のMySQL Shellから確認してみます。
mysql> USE sync; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +----------------+ | Tables_in_sync | +----------------+ | Account | | Contact | | Lead | +----------------+ 3 rows in set (0.00 sec) mysql> show columns from Account; +-------------------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+---------------+------+-----+---------+-------+ | Id | varchar(18) | NO | PRI | NULL | | | IsDeleted | bit(1) | YES | | NULL | | | MasterRecordId | varchar(18) | YES | | NULL | | | Name | varchar(255) | YES | | NULL | | | Type | varchar(255) | YES | | NULL | | | ParentId | varchar(18) | YES | | NULL | | (省略) | test_txt2__c | varchar(50) | YES | | NULL | | +-------------------------+---------------+------+-----+---------+-------+ 64 rows in set (0.01 sec) mysql> SELECT COUNT(*) FROM Account; +----------+ | COUNT(*) | +----------+ | 47 | +----------+ 1 row in set (0.02 sec) mysql> SELECT Id,Name,Type FROM Account LIMIT 1; +--------------------+------------------------+-------------------+ | Id | Name | Type | +--------------------+------------------------+-------------------+ | 0017F00000iPW5aQAG | United Oil & Gas Corp. | Customer - Direct | +--------------------+------------------------+-------------------+ 1 row in set (0.00 sec) mysql>
CData SyncがMySQL Heatwaveの指定したデータベース内にテーブルを作成してデータをロードしていることが確認できました。
それではCData Syncの管理コンソールに戻り、手動でもう一度ジョブを実行してみましょう。右上の「▶️実行」ボタンをクリックします。タスクの各レコードのLAST RUNの行数を見ると全て0行となっています。これは、デフォルトでは2回目以降の実行では差分抽出&更新されるためです。
差分ではなくデータを洗い替えて全件取り込み直す場合は、ジョブの高度な設定タブ内の「テーブルを削除」もしくは「テーブルテータを削除」を有効にします。
また、ジョブを自動でスケジュール実行する場合にはジョブ設定の「概要」タブを開き、右側のスケジュールの設定ボタンをクリックします。
スケジュールを編集ダイアログが開くので例えば1時間毎(毎時ゼロ分)にジョブを実行する場合は間隔が「毎時」、毎時何分には「0」をセットして保存します。
まとめ
本記事では、SalesforceのデータをCData Syncを利用してMySQL HeatWaveに統合する手順をご紹介しました。CData Syncを利用することでSalesforeやkintone、HubspotなどのSaaS、SAPなどのアプリケーション、MongoDBやDynamoDBなどのNoSQLデータベースといった400種類を超える多種多様なデータソースをMySQL Heatwaveに統合することが可能です。CData Syncはこちらのページからダウンロードすることができます。30日の無償評価期間がありますので是非お手元の環境でお試しください