はじめに
CData Virtualityは、エンタープライズグレードのデータ仮想化プラットフォームです。データ仮想化によるリアルタイムデータアクセスとデータレプリケーションのバイモーダルによるデータ連携を提供します。本記事では、CData Virtualityで異なるデータベースのテーブルから取得したデータを結合したViewを作成する方法をご紹介します。
事前準備
CData Virtualityには、インストール版とフルマネージドクラウド(SaaS)版がございます。入手および初期設定方法は以下の記事をご参照ください。
- CData Virtuality - 製品のインストール、および、初期設定方法 (Windows版)
- CData Virtuality - 無償トライアル、および、初期設定方法 (SaaS版)
Viewとは
CData Virtualityでは、複数のデータソース(例えば、MySQL内のテーブルとPostgreSQL内のテーブル)を結合して取得した結果から仮想的なテーブル、つまりViewを作成することが出来ます。
Viewの作成手順
本記事では、CData Virtuality Web Interface、および、CData Virtuality Studioでの作成方法をご紹介します。
CData Virtuality Web InterfaceでのViewの作成
「Code Editor」を開き、ツールバー内の「View Builder」ボタンをクリックします。
「View Builder」が起動するので左側のメニューより「Open a table selection dialog」ボタンをクリックします。
「Table Slection」画面が表示されます。サンプルデータベースとして準備されているMySQLから「Customers」、PostgreSQLから「Orders」テーブルを選択して「Add」ボタンをクリックします。
View Builderの画面に戻り、Customers(MySQL)とOrders(PostgreSQL)2つのテーブルが追加されていることを確認できます。
Customersテーブル内のcustomeridフィールドをドラッグしてOrders内のcustomeridフィールドの場所でドロップします。
Join Setting画面が表示されるので、以下のデフォルトのままSaveボタンをクリックします。
- Join Type : Inner Join
- "Customers" table column : customerid:integer, Cast
- Operator : =
- "Orders" table column : customerid:integer, Cast
CustomersとOrders間にリレーションが作成されたことを確認し、CustomersとOrders内の取得したい項目にチェックしたら左側のメニューの「Create View」ボタンをクリックします。
Schemaの選択と、View名を入力(本例では、CustomersOrder)して「Create View」ボタンをクリックします。
作成したViewを利用してデータを取得してみましょう。左メニューのBrowserタブ > Virtual Schemas > Viewsをクリックします。
上記手順で作成したView(例:CustomersOrder)右の縦3点をクリックして「Generate Statement」を選択します。
以下のSQLがEditorに生成されます。
SELECT "customerid", "companyname", "address", "country", "city", "sector", "industry", "city_id", "orderid", "orderdate", "cost", "subtotal", "taxes", "total", "uuid_group", "segment" FROM "views.CustomersOrder";;
「Run Script」ボタンをクリックします。「Result」エリアにMySQL内のCustomerとPostgreSQL内のOrderが結合された結果データを確認できます。
上記メニュー内の「Data Lineage」ボタンをクリックします。
Data Lineage画面が表示され、Query(SELECT)により、どのようなデータソースから取得したデータかをグラフィカルに確認することが出来ます。
Data Lineage画面を閉じて右隣の「Query Plan」ボタンをクリックします。
Queryの実行プランをグラフィカルに確認することが出来ます。このクエリの例では、データソースの各テーブルから取得したデータをINNER JOIN時にMERGE JOINで結合していることを確認できます。
Query Planを閉じます。左側のVirtual Schema viewsから作成したview右横の縦3点ボタンをクリックして、Editボタンをクリックします。
Editorが新規に開き、以下のSQLが生成されます。Viewの定義の変更は同SQLを変更して実行することで可能です。
CREATE OR REPLACE VIEW "views.CustomersOrder" AS
SELECT
"Customers.customerid","Customers.companyname","Customers.address","Customers.country","Customers.city","Customers.sector","Customers.industry","Customers.city_id","Orders.orderid","Orders.orderdate","Orders.cost","Orders.subtotal","Orders.taxes","Orders.total","Orders.uuid_group","Orders.segment"
FROM
"mysql.Customers" INNER JOIN "postgres.Orders" ON "Customers.customerid" = "Orders.customerid"
;;
CData Virtuality Web Interface画面でのViewの作成方法は以上です。
CData Virtuality StudioでのViewの作成
次にCData Virtuality StudioからViewを作成します。
CData Virtuality Studioを起動します。左側のData explorerから Virtual schemas > views > Tables / viewsを開きます。先にCData Virtuality Web Interfaceでviewを作成した場合は、作成済みのviewが表示されます。表示されない場合は右上の「Refresh the views / Refresh the datasources 」ボタンをクリックください。
上部アイコン内の「Open View builder」ボタンをクリックします。
「View builder」が起動します。Schemaを選択し、View名を入力(本例では、CustomersOrder_builder)します。なお、view名はユニークな名称である必要がありますのでご注意ください。
Table「+」ボタンをクリックすると「Create virtual views」画面が表示されます。サンプルデータベースとして準備されているMySQLから「Customers」、PostgreSQLから「Orders」テーブルを選択して「Add」ボタンをクリックします。
View Builderの画面に戻り、Customers(MySQL)とOrders(PostgreSQL)2つのテーブルが追加されていることを確認できます。
Customersテーブル内のcustomeridフィールドをドラッグしてOrders内のcustomeridフィールドの場所でドロップします。
Join Setting画面が表示されるので、以下のデフォルトのままOKボタンをクリックします。
- "Customers" table column : customerid:integer
- Operator : =
- "Orders" table column : customerid:integer
CustomersとOrders間にリレーションが作成されたことを確認し、CustomersとOrders内の取得したい項目にチェックしたら左側のメニューの「Create View」ボタンをクリックします。
正しくviewが作成された旨のダイアログが表示されたらOKボタンをクリックします。
views Window右上の「Refresh current views」ボタンをクリックして表示を最新化して作成したviewが表示されることを確認します。
作成したViewを利用してデータを取得してみましょう。作成したview(本例では、CustomerOrder_builder)を選択して右クリックから「Generate SELECT statement」を選択します。
以下のSQLがEditorに生成されます。
SELECT "customerid", "companyname", "address", "country", "city", "sector", "industry", "city_id", "iso3_country_code", "orderid", "Orders_customerid", "orderdate", "cost", "subtotal", "taxes", "total", "uuid_group", "segment" FROM "views.CustomersOrder_builder";;
緑色の再生ボタン「Run Script」をクリックします。「Result」エリアにMySQL内のCustomerとPostgreSQL内のOrderが結合された結果データを確認できます。
上記メニュー内の「Data Lineage」ボタンをクリックします。
Data Lineage画面が表示され、Query(SELECT)により、どのようなデータソースから取得したデータかをグラフィカルに確認することが出来ます。
次に「Data Lineage」ボタン左隣の「Show query Plan」ボタンをクリックします。
Queryの実行プランをグラフィカルに確認することが出来ます。このクエリの例では、データソースの各テーブルから取得したデータをINNER JOIN時にMERGE JOINで結合していることを確認できます。
Views一覧タブに戻り、作成したviewを選択するとDefinitionにViewの定義が表示されます。Viewの定義の変更は同SQLを変更して実行することで可能です。
CREATE OR REPLACE VIEW "views.CustomersOrder_builder" AS
SELECT
"Customers.customerid",
"Customers.companyname",
"Customers.address",
"Customers.country",
"Customers.city",
"Customers.sector",
"Customers.industry",
"Customers.city_id",
"Customers.iso3_country_code",
"Orders.orderid",
"Orders.customerid" AS "Orders_customerid",
"Orders.orderdate",
"Orders.cost",
"Orders.subtotal",
"Orders.taxes",
"Orders.total",
"Orders.uuid_group",
"Orders.segment"
FROM
"mysql.Customers" INNER JOIN "postgres.Orders" ON "Customers.customerid" = "Orders.customerid"
CData Virtuality StudioでのViewの作成方法は以上です。
まとめ
本記事では、CData Virtualityで異なるデータベースのテーブルから取得したデータを結合したViewを作成する方法をご紹介しました。CData Virtualityはフルマネージドクラウド(SaaS)版、および、インストール版で無償トライアルを提供しています。無償トライアルを始められる場合や設定を進める中でご不明な点が出てきた際には弊社
テクニカルサポートまでお問い合わせください。
関連コンテンツ