このガイドでは、CData Virtuality で利用可能なマテリアライゼーションの種類を説明し、設定方法をステップバイステップで説明します。

The guide uses sample data from the MySQL and PostgreSQL sample databases. See this guide for instructions on connecting to the sample databases to use the provided sample data. Additionally, since this procedure involves adding records to the data source, an external Microsoft SQL Server (Northwind database) is added to the data sources.

The materialization process will use Snowflake as the analytical storage. See this guide for instructions on configuring the analytical storage.

About Materialization

CData Virtuality は、データをキャッシュしてデータ取得を高速化するマテリアライゼーションと呼ばれる機能を提供します。マテリアライゼーションの目的は、ユーザーがパフォーマンス(応答時間)やデータソース側への影響(高負荷)を気にすることなくデータにアクセスできるようにすることです。これにより、CData Virtuality Server を通じてデータを取得するユーザーが、どこからデータを取得しているかを意識する必要や、ビジネスロジックに手を入れることなく、シームレスなエクスペリエンスが保証されます。

マテリアライゼーションを実現するために、CData Virtuality は分析ストレージを使用します。これは仮想ビュー、テーブル、データソースから複製されたデータを保存する外部データベースです。複製されたデータは、マテリアライズドテーブル(クエリされたデータの正確な1:1のコピー)として格納され、エンドユーザーに迅速かつ効率的なデータアクセスを保証します。

これがCData Virtuality におけるマテリアライゼーションの仕組みです:

Materialization.png

Materialization Types

CData Virtuality には2種類のマテリアライゼーションがあります:

  • Complete(完全)

    • マテリアライゼーション処理が実行されるたびに、全レコードがマテリアライズドテーブルにコピーされます;

    • この方法は簡単ですが、特にソースデータが非常に大きい場合は、ジョブの実行時間が長くなる可能性があります。

  • Incremental(増分)

    • 新しく追加されたレコードのみがマテリアライズドテーブルにコピーされます;

    • このアプローチは実行時間を短縮し、新しく追加されたレコードのみを転送することでコピー数を最小限に抑えるため、より効率的です。

Setting Up Materialization

このガイドでは、CData Virtuality Web インターフェース / SaaS からのマテリアライゼーションの設定について説明します。

  1. Code Editor を開き、データソースから必要なテーブルまたはビューを選択するか、仮想スキーマ(Virtual Schemas)セクションからビューを選択してマテリアライズし、縦三点リーダーをクリックします。この例では、Microsoft SQL Server 内のCustomers テーブルを使用します:

  1. コンテキストメニューから、Materialize -> Now を選択します。緑色のダイアログボックスが表示され、マテリアライゼーションのプロセスが正常に開始されたことを確認します:

  1. メニューのMaterialization タブに移動します。新しく作成したマテリアライゼーションがリストに表示されていることを確認します:

  1. マテリアライズドテーブルは、MAT_TABLE_5_ST0 のような名前で分析ストレージに作成されます。マテリアライズドテーブルをプレビューしてデータが含まれていることを確認するには、分析ストレージにアクセスします:

  1. 次の手順は、SQL ServerCustomer テーブルを経由して、分析ストレージのマテリアライズドテーブルからデータにアクセスする方法を示します。下図はそのプロセスを示しています:

Materialization 2.png

  1. Code Editor タブに移動します。Browser タブ -> Microsoft SQL Server Data Source(この例ではmssql)-> Materialize をクリックし、テーブル(この例ではCustomers)を探します。縦三点リーダーをクリックし、コンテキストメニューからGenerate Statement を選択します:

  1. Code Editor が開き、選択したテーブルからSELECT ステートメントが生成されます:

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

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

  1. 取得したデータが分析ストレージ内のマテリアライズドテーブルからのものであることを確認するには、Query Plan 機能を使用できます。メニュー内のQuery Plan ボタンをクリックします:

  1. Query Plan ウィンドウが開き、クエリの実行プランが表示されます。Source Access の緑色は、クエリがマテリアライズドテーブルからデータを取得していることを示します。Query Plan の詳細では、分析ストレージ内のどのマテリアライズドテーブルからデータを取得しているかを確認できます:

  • Model Name:snowflake(分析ストレージ)

  • DV_EXT0:snowflake.JP_DV.PUBLIC.MAT_TABLE_1_ST0

  1. マテリアライズドテーブルからではなく、データソースから直接データを取得するには、マテリアライゼーションをOFF にする必要があります。この設定により、クエリは、分析ストレージ内のマテリアライズドテーブルではなく、元のデータソース(Microsoft SQL Server Customers テーブル)にアクセスできるようになります。下図はこのプロセスを示しています:

Materialization 1.png
  1. Query Plan ウィンドウを閉じてMaterialization 画面に移動します:

  1. Materializations リストで、対象のレコードを探します。レコードの右側にあるEnable ボタンをクリックして、ステータスをDisable Materialization に切り替えます:

  1. 再度Code Editor を開き、対象テーブルへのSELECT ステートメントを実行します。Query Plan ボタンをクリックします。Query Plan ウィンドウが開き、クエリの実行プランが表示されます。Source Access の青色は、クエリがマテリアライズ ドテーブルからではなく、データソースから直接データを取得していることを示します

  1. データが分析ストレージ内のマテリアライズドテーブルからではなく、データソース(mssql)から直接取得されていることを確認できます:Query PlanModel Name にはmssql と表示されます。

Scheduling a Materialization Job

このセクションでは、ジョブを作成してマテリアライゼーションの実行をスケジュールする方法について説明します。Complate(完全)マテリアライゼーションジョブと、Incremental(増分)マテリアライゼーションジョブの両方について、その構成と実行方法を詳しく説明します。

Complete Materialization Job

  1. Materialization リスト内の該当レコードの詳細を開き、+Create Materialization Job ボタンをクリックします:

  1. Create New Materialization Job 画面が開いたら、Type ドロップダウン(オプション:Complete / Incremental)からComplete を選択し、Schedules セクションの+Manage Schedules ボタンをクリックして、マテリアライゼーションスケジュールを設定します:

  1. Manage Schedules 画面が開いたら、+Add Schedule ボタンをクリックします。希望する頻度とタイミングを指定して、ジョブの実行スケジュールを設定します。Save and Close ボタンをクリックしてスケジュールを保存します:

  1. 新しく追加されたスケジュールがSchedules セクションに表示されていることを確認します。+Create Job ボタンをクリックします:

  1. Dashboard 画面が開き、新しく追加されたマテリアライゼーションジョブが表示されることを確認します:

  1. Jobs 画面を開き、作成したジョブを見つけてRun Job Now アイコンをクリックし、手動でマテリアライゼーションジョブを実行します:

  1. ジョブが正常に実行されたことを確認します。必要に応じて画面をリフレッシュしてください:

  1. 分析ストレージ内には、以前に作成したMAT_TABLE_5_ST0 と並んで、新しいテーブルMAT_TABLE_5_ST1 が追加されています:

Complete(完全)モードでは、マテリアライゼーションが実行されるたびに、新しいマテリアライズドテーブルが別のテーブルとして作成されます。ユーザーは、更新や変更を意識する必要なく、最新のマテリアライズドテーブルにアクセス可能です。

Incremental Materialization Job

  1. Incremental(増分)マテリアライゼーションジョブを作成するには、まず別のテーブルのマテリアライゼーションを設定します。この例では、Microsoft SQL Server Northwind データベース内のOrders テーブルを使用します。前のセクションと同じプロセスに従ってください:

  1. マテリアライズドテーブルが分析ストレージに作成されていることを確認します:

  1. 以下の設定を行い、作成したマテリアライゼーションからジョブを作成します:

    1. Type ドロップダウン(オプション:Complete / Incremental)から、Incremental を選択します。

    2. Row check field を、インクリメントを追跡するフィールド(例:OrderDate)に設定します。

    3. Use Identity field… を有効にします。

    4. Identity フィールドを、行を一意に識別するフィールドに設定します(例:OrderID)。

    5. Schedules の下にある+Manage Schedules ボタンをクリックします。

  1. スケジュールがSchedules セクションに追加されていることを確認し、+Create Job ボタンをクリックします:

  1. Dashboard 画面が開き、新しく追加されたマテリアライゼーションジョブが表示されることを確認します:

  1. インクリメンタルな反映をテストするには、データソーステーブル(例:Microsoft SQL ServerOrders テーブル)に新しいレコードを追加します:

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');

  1. CData Virtuality Web UI に戻り、 Jobs 画面を開いて作成したジョブを見つけ、Run Job Now アイコンをクリックして手動でジョブを実行します:

  1. ジョブが正常に実行されたことを確認します。必要に応じて画面をリフレッシュしてください

  1. Materializations 画面に移動し、作成されたジョブのマテリアライゼーションがenabled(有効) になっていることを確認します:

  1. Code Editor を開き、マテリアライズドデータソーステーブル(この例では、Microsoft SQL ServerOrders テーブル)を選択します。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;;

  1. 以下の結果のように、レコードが追加されていることを確認します:

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

  2. 新しく追加したレコードは、分析ストレージの更新されたマテリアライズドテーブルに反映されています:

See Also

Materialization マテリアライゼーションとその種類についての詳細はこちらをご覧ください