CData Software Blog

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

データ仮想化基盤 Denodo Platform でSQLServer・kintone・Salesforceの顧客データを仮想データ統合してみた

はじめに

CData Japan技術ディレクターの桑島です。本記事では、データ仮想化基盤 Denodo Platformを使用して、企業内のRDBMS、および、SaaSアプリケーションに分散する顧客データを横断的に参照可能な顧客ビューを作成する方法をご紹介します。

f:id:kuwazzy:20200215083340p:plain

Denodo Platform とは

Denodo Platform は、Denodo社が提供するデータ仮想化を実現するプロダクトです。同社によるとデータ仮想化とは、「異なるシステムにまたがるすべてのエンタープライズデータを統合し、一元化されたセキュリティとガバナンスのために統一データを管理し、リアルタイムでビジネスユーザーに配信する論理データレイヤです。」と説明しています(Denodo社Webサイトより)。データ仮想化によって、データを物理的に複製すること無くデータ統合を論理データレイヤで行うことで、リアルタイムデータ配信や多種多様なデータソースにまたがるデータを統合を迅速かつ安価に提供することが可能となります。

f:id:kuwazzy:20200215155122p:plain

利用するプロダクト

手順

Denodo Platform 環境の準備

Denodo PlatformのTrial環境は、Denodo側で全てを準備した環境と顧客クラウドアカウントで利用出来る環境を選択できます。今回はデータソースを追加したいので、顧客クラウドアカウントで利用出来る環境を選択します。クラウド環境は、AWS、Azure、GCPからVMを選択出来るようですが、今回はAWSを利用しました。

f:id:kuwazzy:20200215175155p:plain

www.denodo.com

Denodo PlatformのVMにRDPでアクセスしてショートカットからDenodo Platorm Control Centerを開き、全てのサービスを起動します。

f:id:kuwazzy:20200215175842p:plain

Denodo virtual DataPort Administrator Toolへのアクセス

Virtual PortタブのLaunchボタンをクリックしてDenodo Virtual DataPort Administrator Toolを起動します。

f:id:kuwazzy:20200215180604p:plain

以下のクレデンシャル初期値でログインします。

項目
Login: admin
Password : admin
Server URI: //localhost:9999/

SQLServerのVirtual Portの作成

今回は、Donodo PlatformからSQLServerへの接続にはODBCドライバを利用します。Microsoft社のWebページからダウンロードしてインストールします。

www.microsoft.com

ODBCドライバのインストールが完了したらODBC Data Source Administrator(64bit)を開き、SQLServerへのDSN設定を作成します。本手順では詳細は割愛します。

f:id:kuwazzy:20200215181636p:plain

Denodo Virtual DataPort Administrator Toolに戻り、Server Explorer 内のadminアイコンを右クリックして「New > Data Sourve > ODBC」を選択します。

f:id:kuwazzy:20200215181216p:plain

SQLServerへのVirtual Portを作成します。

項目
Name 任意の値(本例ではSQLServer
Database Adapter Generic
Connection Type DSN
DSN 上記手順で作成したODBC DSNを選択(本例ではSQLServer : System DSN)
Login SQLServerのログインID(本例ではadmin)
Password SQLServerのログインPassword

接続情報をセットしたらTest connectionボタンをクリックして、テストが成功することを確認して保存(Save)してください。

f:id:kuwazzy:20200215182047p:plain

作成されたSQLServerへのVirtualPortのCreate base viewボタンをクリックします。SQLServer内のスキーマ、および、その中にはテーブルオブジェクトがツリーリストとして表示されるので今回は顧客データであるCustomerテーブルを選択します。チェックボックスをオンにしてCreate selecledボタンをクリックします。

f:id:kuwazzy:20200215182941p:plain

View schemaタブ内にCustomerテーブルのカラム一覧が表示されます。ViewNameをSQLServer_Customersに変更して、CustomerIDをPKにして保存します。

f:id:kuwazzy:20200215183332p:plain

それでは作成したSQLServerのVIewを使用してデータが参照出来るか確認してみます。Execute panelボタンをクリックすると下の方にExecuteウィンドウが表示されます。

f:id:kuwazzy:20200215183605p:plain

Current sentence欄にはSQLのようなDenodoのクエリ言語VQLが表示さます。

SELECT * FROM "SQLServer_Customers" CONTEXT ('i18n'='us_pst', 'cache_wait_for_load'='true')

Executeボタンをクリックして本VQLを実行します。Query Resultsタブが開き、SQLServerのCustomerテーブル内のデータ(本例では、91レコード)が表示されました。

f:id:kuwazzy:20200215184214p:plain

Unicode設定

kintoneの接続設定に入る前に日本語名のテーブル名、および、カラム名を利用出来るようにする設定を行います。Denodo virtual DataPort Administrator Toolメニューバーの「Administration > Server Configuration」を開き、Identifiers charsetがデフォルトでRestricted - Case insensive になっているので、Unicode - Case sensitive に変更して保存します。

f:id:kuwazzy:20200215193345p:plain

これで、下記のようなkintoneの日本語アプリ名およびフィールド名がDenodoで利用出来るようになります。 f:id:kuwazzy:20200215194114p:plain

kintone のVirtual Portの作成

kintoneへ接続はCData kintone JDBC Driverを使用します。CDataの下記WebサイトからJDBC Driver(評価版)をダウンロードしてインストールします。

www.cdata.com

JDBCドライバファイル(cdata.jdbc.kintone.jar)、および、ライセンスファイル(cdata.jdbc.kintone.lic)ファイルをDenodo内のディレクトリにコピーします。

ディレクトリパス
コピー元 C:\Program Files\CData\CData JDBC Driver for kintone 2019J\lib
コピー先 C:\Denodo\DenodoPlatform7.0\lib-external\jdbc-drivers\cdatakintone-19

※ cdatakintone-19ディレクトリを新規に作成

JDBCドライバの追加方法はDonodo社の製品マニュアルの以下の章を参考にしました。

community.denodo.com

Denodo Virtual DataPort Administrator Toolに戻り、Server Explorer 内のadminアイコンを右クリックして「New > Data Sourve > JDBC」を選択します。

f:id:kuwazzy:20200215185446p:plain

kintoneへのVirtual Portを作成します。

項目
Name: 任意の値(本例ではKintone)
Database Adapter: Generic
Driver class path: 'C:\Denodo\DenodoPlatform7.0\lib-external\jdbc-drivers\cdatakintone-19'
Driver class: cdata.jdbc.kintone.KintoneDriver
Database URI: jdbc:kintone:User=XXX;Password=XXX;URL=https://XXX.cybozu.com/; (接続情報XXXは自身の環境に合わせてください)

※kintoneへの接続情報は以下CData社の製品マニュアルをご覧ください。

cdn.cdata.com

接続情報をセットしたらTest connectionボタンをクリックして、テストが成功することを確認して保存(Save)してください。

f:id:kuwazzy:20200215185840p:plain

作成されたkintoneへのVirtualPortのCreate base viewボタンをクリックします。kintone内のアプリ(テーブル)がツリーリストとして表示されるので今回は顧客アプリである顧客管理(営業支援パック)テーブルを選択します。チェックボックスをオンにしてCreate selecledボタンをクリックします。

f:id:kuwazzy:20200215190554p:plain

View schemaタブ内に顧客管理(営業支援パック)テーブルのカラム一覧が表示されます。View nameをkintone_顧客管理(営業支援パック)に変更して保存します。

f:id:kuwazzy:20200215194440p:plain

kintoneのVIewを使用してデータが参照出来るか確認してみます。VQLは以下の通りです。

SELECT * FROM "kintone_顧客管理(営業支援パック)" CONTEXT ('i18n'='us_pst', 'cache_wait_for_load'='true') TRACE

kintoneの顧客管理(営業支援パック)アプリ内のデータ(本例では、20レコード)が表示されました。

f:id:kuwazzy:20200215194707p:plain

Salesforce のVirtual Portの作成

Salesforceへ接続は、Denodoビルトインのデータソース もありますが、今回はCData Salesforce JDBC Driverを使用します。CDataの下記WebサイトからJDBC Driver(評価版)をダウンロードしてインストールします。

www.cdata.com

JDBCドライバファイル(cdata.jdbc.salesforce.jar)、および、ライセンスファイル(cdata.jdbc.salesforce.lic)ファイルをDenodo内のディレクトリにコピーします。

ディレクトリパス
コピー元 C:\Program Files\CData\CData JDBC Driver for salesforce 2019J\lib
コピー先 C:\Denodo\DenodoPlatform7.0\lib-external\jdbc-drivers\cdatasalesforce-19

※ cdatasalesforce-19ディレクトリを新規に作成

Denodo Virtual DataPort Administrator Toolに戻り、Server Explorer 内のadminアイコンを右クリックして「New > Data Sourve > JDBC」を選択します。

f:id:kuwazzy:20200215185446p:plain

SalesforceへのVirtual Portを作成します。

項目
Name: 任意の値(本例ではSalesforce
Database Adapter: Generic
Driver class path: 'C:\Denodo\DenodoPlatform7.0\lib-external\jdbc-drivers\cdatakintone-19'
Driver class: cdata.jdbc.salesforce.SalesforceDriver
Database URI: jdbc:salesforce:User=XXXX;Password=XXXX;SecurityToken=XXXX; (接続情報XXXは自身の環境に合わせてください)

salesforceへの接続情報は以下CData社の製品マニュアルをご覧ください。

cdn.cdata.com

接続情報をセットしたらTest connectionボタンをクリックして、テストが成功することを確認して保存(Save)してください。

f:id:kuwazzy:20200215195501p:plain

作成されたsalesforceへのVirtualPortのCreate base viewボタンをクリックします。Salesforce内のオブジェクト(テーブル)がツリーリストとして表示されるので今回は取引先であるAccountテーブルを選択します。チェックボックスをオンにしてCreate selecledボタンをクリックします。

f:id:kuwazzy:20200215195627p:plain

View schemaタブ内にAccountテーブルのカラム一覧が表示されます。View nameをsalesforce_Accountに変更して保存します。

f:id:kuwazzy:20200215195742p:plain

SalesforceのVIewを使用してデータが参照出来るか確認してみます。VQLは以下の通りです。

SELECT * FROM "Salesforce_Account" CONTEXT ('i18n'='us_pst', 'cache_wait_for_load'='true')

Salesforceの取引先(Account)内のデータ(本例では、1008レコード)が表示されました。

f:id:kuwazzy:20200215195915p:plain

顧客ビューの作成

SQLServer・kintone・Salesforceのそれぞれの顧客データにアクセス出来るViewは揃いましたので、今度はそれらを横断的に検索出来る一つのViewを作成していきます。Denodo Virtual DataPort Administrator ToolのServer Explorer 内のadminアイコンを右クリックして「New > Union」を選択します。

f:id:kuwazzy:20200215200053p:plain

右側のペインに、上記手順で作成した3つのView(本手順では、SQLServer_Customers, kintone_顧客管理(営業支援パック)、Salesforce_Account)をドラッグ&ドロップ操作で配置します。

f:id:kuwazzy:20200215200809p:plain

以下の項目を紐つけます。

SQLServer_Customers kintone_顧客管理(営業支援パック) Salesforce_Account
CustomerID RecordId Id
CustomerName 顧客名 Name
Phone TEL Phone

Outputタブに赤いエラーマークがついているんで出力項目を以下の3つのみとして顧客ビューという名前をつけて保存します。

PK View Name Field Name
ON SQLServer_Customers CustomerID
SQLServer_Customers CustomerName
SQLServer_Customers Phone

作成した顧客ビューを実行してみます。ResultsにSQLServer・kintone・Salesforceの顧客データの全て(本例では、1119レコード)が表示されました。

f:id:kuwazzy:20200215201535p:plain

DATA CATALOG からの参照

Denodoには、DATA CATALOGと呼ばれる定義されたViewを参照出来るWebベースのアプリケーションがあります。DATA CATALOGから上記手順で作成した顧客ビューにアクセスしてみます。Denodo Platform Control CenterのVirtual DataPortタブ内のData Catalogリンクを開きます。

f:id:kuwazzy:20200215201808p:plain

USER NAME, PASSWORD, VIRTUAL DATAPORT SERVERのデフォルト値は以下の通りです。

項目
USER NAME admin
PASSWORD admin
VIRTUAL DATAPORT SERVER localhost

DATA CATALOGにSign Inします。

メニューバーのSearchタブを開き、左側ペインのApplyボタンをクリックすると作成したViewの一覧が表示されます。

f:id:kuwazzy:20200215202422p:plain

上記で定義したViewが表示されない場合は、メニューバーのAdministrator > Synchronize with VDP Serverを開き、変更があったメタデータを最新化します。

f:id:kuwazzy:20200215202214p:plain

上記で作成した顧客ビューを選択します。Queryエディタが表示されるのでドラッグ&ドロップ操作で表示項目やフィルタを定義することができます。今回は、CustomerID、CompanyName、Phoneの3つの項目をOutput columnsにセットして実行(Run)してみます。

f:id:kuwazzy:20200215202608p:plain

SQLServer・kintone・Salesforceの顧客データをまとめて取得することができました。

f:id:kuwazzy:20200215202831p:plain

まとめ

本記事では、SQLServer・kintone・Salesforceの顧客データを例にご紹介しましたが、同じ方式でCData JDBC Driversが提供する150を超えるデータソース に接続することができます。Denodo Platformがサポートしていないデータソース 、特にSaaSアプリケーションのデータ統合が必要となる場合は是非お試しください。

f:id:kuwazzy:20200217094015p:plain

www.cdata.com