CData Virtuality - マテリアライゼーションの作成

000

はじめに

CData Virtualityは、エンタープライズグレードのデータ仮想化プラットフォームです。データ仮想化によるリアルタイムデータアクセスとデータレプリケーションのバイモーダルによるデータ連携を提供します。CData Virtualityでは、マテリアライゼーションと呼ばれる分析ストレージを利用したキャッシング機能があり、ユーザからのデータ取得を高速化することができます。本記事では、マテリアライゼーションの種類、および、設定方法についてご紹介します。

 

事前準備

CData Virtualityには、インストール版とフルマネージドクラウド(SaaS)版がございます。入手および初期設定方法は以下の記事をご参照ください。

- CData Virtuality - 製品のインストール、および、初期設定方法 (Windows版)
- CData Virtuality - 無償トライアル、および、初期設定方法 (SaaS版)

CData Virtualityに付属のMySQLおよびPostgreSQLデータベースは参照のみ可能な設定となっております。本手順ではデータソース側へのレコードの追加が必要なため、外部のMicrosoft SQL Server (Northwindデータベース)をデータソースに追加しています。

002

 

マテリアライゼーションについて

CData Virtualityでは、マテリアライゼーションと呼ばれる分析ストレージを利用したキャッシング機能があり、ユーザからのデータ取得を高速化することができます。マテリアライゼーションを実行すると、データソース内のテーブルやビュー、および、CData Virtuality Serverにて定義した仮想ビューの取得結果をAnalytical Storageと呼ばれる外部データベースに1:1の複製テーブル(マテリアライズドテーブル)を作成します。
001
マテリアライゼーションの目的は、パフォーマンス(レスポンスタイム)とデータソース側への影響(高負荷)を考えずにデータにアクセスできるようになることです。なお、データを活用するユーザは、どこからデータを取得しているかを意識する必要なく、ビジネスロジックに手を入れることなく、CData Virtuality Serverを通じてデータを活用することが出来るようになります。
(製品マニュアル) : Materialization
 
 

マテリアライゼーションのタイプ

マテリアライゼーションには2つのタイプがあります。

- Complate(完全): 毎回、全レコードがマテリアライズドテーブルにコピーされます。
- Incremental(増分): 新しく追加されたレコードのみがマテリアライズドテーブルにコピーされます。

「Complate(完全)」は、シンプルな方法ですが、ソースデータが非常に大きい場合にジョブの実行時間が長くなる可能性があります。一方で「Incremental(増分)」は、ソースに新しく追加されたレコードのみをコピーするため効率的です。

 

マテリアライゼーションの作成

本記事では、CData Virtuality Web Interfaceから設定する手順をご紹介します。

Code Editorを開き、マテリアライゼーションしたいデータソース内のテーブルやビュー、もしくは、仮想スキーマ(Virtual Schemas)内のビューを選択して縦3点ボタンをクリックします。 ※本手順では、Microsoft SQL Server内の「Customers」テーブルを選択します。

003

「Materialize > Now」を選択します。Materializationのプロセスが正常に開始した旨のダイアログが表示されます。

004

Materializationタブに移動して、作成されたMaterializationがリストに追加されていることを確認します。

005

マテリアライズドテーブルはAnalytical Storage内に作成されます。Analytical Storage内には「MAT_TABLE_5_ST0」のような名称のテーブルが作成されますので実際にテーブルにデータが格納されているかプレビューしてみてください。

006

それでは、SQL ServerのCustomerテーブルのデータにアクセスした場合に、Analytical Storage内のマテリアライズドテーブルからデータを取得しているかを確認してみましょう。

007

Code Editorタブに移動して、Browser > Microsoft SQL Serverのデータソース(本例では「mssql」)> マテリアライゼーションしてテーブル(本例では「Customers」)を選択、縦3点をクリックして「Generate Statement」を選択します。

008


Editorが開き、以下のような指定してテーブルからのSELECT文が生成されます。

SELECT "CustomerID", "CompanyName", "ContactName", "ContactTitle", "Address", "City", "Region", "PostalCode", "Country", "Phone", "Fax" FROM "mssql.Customers";;

メニュー内の再生(右向きの三角)ボタンをクリックして同SQLを実行します。テーブルデータが下のResultsエリアに表示されれば成功です。

009

では、この取得されたデータが、Analytical Storage内のマテリアライズドテーブルから取得されたものなのかをQuery Plan機能で確認してみましょう。メニュー内の「Query Plan」ボタンをクリックします。

010

Query Planウィンドウが起動します。Source Accessの緑色はマテリアライズドテーブルからの取得を表します。Detailを開いてみましょう。

011

以下の通り、Analytical Storage内のどのマテリアライズドテーブルから取得しているかを確認することが可能です。

- Model Name : snowflake(Analytical Storage)
- DV_EXT0 : snowflake.JP_DV.PUBLIC.MAT_TABLE_1_ST0

今度は、同データソースのテーブル(本例ではMicrosoft SQL ServerのCustomersテーブル)にアクセスした場合にマテリアライズドテーブルではなく、データソースから直接データを取得する設定、つまり、Materializationをオフにしてみたいと思います。

012

一度Query Planを閉じてMaterialization画面に移動します。

013

Materializationリスト内の対象レコード右側の「enable」ボタンをクリックして「Disable Materialization」に切り替えます。

014

再度Code Editorを開き、対象テーブルへのSELECT文のQuery Planを確認してみましょう。Query Planウィンドウが起動します。Source Accessの青色はマテリアライズドテーブルからではなくデータソースからの取得を表します。Detailを開いてみましょう。

015

以下の通り、Analytical Storage内のマテリアライズドテーブルではなくデータソース(mssql)から取得していることを確認することが可能です。

- Model Name : mssql

マテリアライゼーションの作成手順は以上となります。

 

マテリアライゼーションのジョブ化 「Complate(完全)」

マテリアライゼーションの実行をスケジュール実行するためにはJobを作成する必要があります。Materializationリスト内の該当レコードのDetailを開き、「+Create Materialization Job」ボタンをクリックします。

017

Create New Materialization Job画面が開くので、タイプ(Complete/Incremental)から「Complete」を選択して、Schedules内の「+Manage Schedules」ボタンをクリックします。

018

Manage Schedules画面が開くのでジョブの実行スケジュールを「+Add Schedule」ボタンをクリック&追加して「Save and Close」ボタンをクリックして保存します。

019

Schedulesに追加されていることを確認して「+Create Job」ボタンをクリックします。

020

Dashboard画面が開き、追加したJobが表示されていることを確認します。

021

Jobs画面を開き、作成したジョブを「Run Job Now」アイコンをクリックして手動で実行してみます。

022

ジョブの実行が成功したことを確認してください。必要に応じて画面をリフレッシュしてください。

023

Analytical Storage内には「MAT_TABLE_5_ST0」に加えて「MAT_TABLE_5_ST1」のようなもうひとつ別なテーブルが追加されていることを確認できます。

024

このように「Complate(完全)」モードでは、Materializationの実行の都度、別テーブルとしてマテリアライズドテーブルが作成されます。利用者は特に意識する必要なく最新のマテリアライズドテーブルにアクセス可能です。

 

マテリアライゼーションのジョブ化 「Incremental(増分)」

続いて「Incremental(増分)」モードの場合も確認してみましょう。「マテリアライゼーションの作成」章の手順で、別なテーブル(本例では、Microsoft SQL Server Northwindデータベース内のOrdersテーブルを利用)でマテリアライゼーションを作成します。

025

Analytical Storage内にマテリアライズドテーブル用のテーブルが作成されていることを確認します。

026

作成したMaterializationからジョブを作成します。タイプ(Complete/Incremental)から「Incremental」を選択、「Use Identity field...」のチェックをONにして、Row check fieldには、増分を確認するフィールド(本例では、OrderDate)を設定、Identity fieldには、一意となるフィールド(本例では、OrderID)を指定して、Schedules内の「+Manage Schedules」ボタンをクリックします。

027


Schedulesに追加されていることを確認して「+Create Job」ボタンをクリックします。

028

Dashboard画面が開き、追加したJobが表示されていることを確認します。

029

ここで「Incremental(増分)」での反映を確認するためにデータソース側のテーブル(本例ではMicrosoft SQL ServerのOrdersテーブル)に1レコードを追加してみます。

INSERT INTO Orders (CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry) VALUES ('RATTC', 1, '2024/07/26', '', '', 2, 0, '', '', '', '', '', 'USA');

CData Virtuality Web Interfaceに戻り、Jobs画面を開き、作成したジョブを「Run Job Now」アイコンをクリックして手動で実行してみます。

030

ジョブの実行が成功したことを確認してください。必要に応じて画面をリフレッシュしてください。

031

materialization画面から同ジョブのMaterializationがEnable(有効)になっていることを確認します。

032

Code EditorからMaterializationしたデータソースのテーブル(本例では、Microsoft SQL Server内のOrderesテーブル)を選択してGenerate StatementからSQLを生成して以下のように増分を確認するフィールド(本例では、OrderDate)で降順に並び替えた結果を確認します。

SELECT "OrderID", "CustomerID", "EmployeeID", "OrderDate", "RequiredDate", "ShippedDate", "ShipVia", "Freight", "ShipName", "ShipAddress", "ShipCity", "ShipRegion", "ShipPostalCode", "ShipCountry" FROM "mssql.Orders" ORDER BY "OrderDate" DESC;;

033

データソース側(本例ではMicrosoft SQL Server)に追加したレコードも取得できていることを確認できます。

Analytical Storage内のマテリアライズドテーブルの内容も確認してみましょう。データソース側(本例ではMicrosoft SQL Server)に追加したレコードも取得できていることを確認できます。

034

 

まとめ

本記事では、マテリアライゼーションの種類、および、設定方法についてご紹介しました。CData Virtualityはフルマネージドクラウド(SaaS)版、および、インストール版で無償トライアルを提供しています。無償トライアルを始められたい方や設定を進める中でご不明な点が出てきた際には弊社テクニカルサポートまでお問い合わせください。
 
 

トライアル・お問い合わせ

関連コンテンツ