CData Virtuality - レプリケーションの作成

by 桑島義行 | 2024年08月07日

000

はじめに

CData Virtuality は、エンタープライズグレードのデータ仮想化プラットフォームです。データ仮想化によるリアルタイムデータアクセスとデータレプリケーション(ETL/ELT)のバイモーダルによるデータ連携を提供します。本記事では、レプリケーションの種類、および、設定方法についてご紹介します。
 

事前準備

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

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

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

002

 

レプリケーションについて

CData Virtualityでは、データ仮想化によるリアルタイムデータアクセスとデータレプリケーション(ETL/ELT)のバイモーダルによるデータ連携を提供します。
001
類似の機能でマテリアラーゼーションがありますが、マテリアラーゼーションはパフォーマンス(レスポンスタイム)とデータソース側への影響(高負荷)を考えずにデータにアクセスできるようにするためのパフォーマンスを目的としたキャッシングであり一時保管するもの、レプリケーションはデータソースのデータをデータウェアハウスなどのデータストアに複製することで保管・蓄積するものと考えて使い分けください。
(製品マニュアル) : Replication & Materialization
 

レプリケーションのタイプ

レプリケーションには5つのタイプがあります。
  
  1. batch(バッチ更新) : データウェアハウスの既存テーブルを実行のたびに更新します。
  2. Incremental(増分更新) : 新しく追加されたレコードのみがレプリケーション先のデータウェアハウスにコピーされます。
  3. Copy Over/Full(全件更新/完全) : 全件を再取り込みします。データウェアハウス側で同じ名称のテーブルが既に存在する場合は、選択された方法(Drop/Delete)によって処理されます。
  4. History update(履歴更新): データに加えられた変更を履歴として保管します。
  5. Upsert update (アップサート更新) : 既存の行は更新され、新しい行は挿入されます。
 
(製品マニュアル) : Replication

本記事では、CData Virtuality Web Interfaceから上記5つのパターンでレプリケーションを設定する手順をご紹介します。
 

Copy Over/Full(全件更新/完全) 

Jobsを開き、「New Job」ボタンをクリックします。

003

データソースの選択画面からレプリケーションするテーブルを選択して「Next」ボタンをクリックします。
※本手順では、Microsoft SQL Server内の「Customers」テーブルを選択します。

004

レプリケーションのタイプが選択できますので、本手順では「Full(完全)」を選択して次に進みます。

005

Data Warehouse, Target Schema, Title(「mssql_customers_full」に変更), Schedule, Start Immediately(即時実行:ON)が設定されていることを確認します。

Scheduleについては「Every night(at 12:00 AM)」となっていますがより柔軟なスケジュール設定を行う場合は、「Advanced Scheduling」ボタンをクリックして設定てください。
006

「Create now」ボタンをクリックしてレプリケーションジョブを実行します。

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

007

しばらく時間が経過してジョブのStatusがSuccessful(成功)になっていることを確認します。画面が更新されない場合はRefreshしてください。

008

データウェアハウス(本記事ではSnowflake)にアクセスしてテーブルにデータが格納されているかプレビューしてみてください。

009

作成したジョブの詳細はJobs画面から参照・編集することが出来ます。JOB Typeが「copyOverSourceTable」となっていますが、「Copy Over」と「Full」は同義となります。

010

作成したジョブの設定を参照してみます。縦3点から「Edit Job」を選択します。

011

Cleanup methodが以下3種類から選択することが可能です。デフォルトでは「Drop and recreate the table」とジョブの実行時に一度データウェアハウス側のテーブルを削除してからテーブルを作成する動作となります。

- Drop and recreate the table
- Delete all rows from the table
- Truncate all rows from the table

レプリケーション(Copy Over / Full)の作成手順は以上となります。
 

batch(バッチ更新) 

CData Virtuality Web InterfaceからJobsを開き、「New Job」ボタンをクリックします。

015

データソースの選択画面からレプリケーションするテーブルを選択して「Next」ボタンをクリックします。本手順ではMicrosoft SQL Server内の「Customers」テーブルを選択します。

016

レプリケーションのタイプが選択できますので、本手順では「Batch(バッチ更新)」を選択します。まずはじめに「Use identity field...」をOFFにして実行してみます。

017

Data Warehouse, Target Schema, Title(「mssql_customers_batch_off」に変更), Schedule, Start Immediately(即時実行:ON)が設定されていることを確認します。

Scheduleについては「Every night(at 12:00 AM)」となっていますがより柔軟なスケジュール設定を行う場合は、「Advanced Scheduling」ボタンをクリックして設定てください。

018

「Create now」ボタンをクリックしてレプリケーションジョブを実行します。

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

019

しばらく時間が経過してジョブのStatusがSuccessful(成功)になっていることを確認します。画面が更新されない場合はRefreshしてください。

020

データウェアハウス(本記事ではSnowflake)にアクセスしてテーブルにどのようにデータが格納されているか確認してみましょう。レコードが格納されていることが確認できます。

030

作成したジョブの詳細はJobs画面から参照・編集することが出来ます。JOB Typeが「sql」、TITLEが「Batch replication from mssql.Customers to snowfl」となっているジョブです。

022

再度、同じジョブを実行してみて、データウェアハウス(本記事ではSnowflake)にどのようにデータが格納されているか確認してみましょう。「Use identity field...」をOFFにした状態で実行すると、実行の都度、全件、既存テーブルにレコードが追加される動作となりますので重複レコードが登録されます。

021


ジョブ作成時の設定で「Use identity field...」をONにした状態でジョブを実行した場合どうなるか確認してみましょう。

Jobの作成画面にてテーブル(本手順ではMicrosoft SQL Server内の「Customers」テーブル)を選択、「Batch(バッチ更新)」を選択し、「Use identity field...」をON、「Identity Field」にはデーターソース側のテーブルでユニークなIDナンバーを生成するフィールド(本例ではCustomerID)を指定して次に進みます。

025

Data Warehouse, Target Schema, Title(「mssql_customers_batch_on」に変更), Schedule, Start Immediately(即時実行:ON)が設定されていることを確認します。

031

「Create now」ボタンをクリックしてレプリケーションジョブを実行します。

Dashboard画面でジョブの実行が正常に完了することを確認します。

026

データウェアハウス(本記事ではSnowflake)にアクセスしてレプリケーション先のテーブルを確認します。

027

それでは、データソース(Microsoft SQL ServerのCustomersテーブル)側に1レコード追加して再度ジョブを実行してみましょう。

INSERT INTO Customers (CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax) VALUES ('BAT01', 'BAT01_CompanyName', 'BAT01_ContactName', '', '', '', '', '', '', '', '');

データウェアハウス(本記事ではSnowflake)にアクセスしてレプリケーション先のテーブルを確認します。データソース側に追加した1レコードがレプリケーション先にも連携されおり、重複レコードも発生していないことが確認できます。

029

レプリケーション(Batch)の作成手順は以上となります。
 

Incremental(増分更新)

CData Virtuality Web InterfaceからJobsを開き、「New Job」ボタンをクリックします。

032

データソースの選択画面からレプリケーションするテーブルを選択して「Next」ボタンをクリックします。本手順ではMicrosoft SQL Server内の「Orders」テーブルを選択します。

033

レプリケーションのタイプが選択できますので、本手順では「Incremental(増分更新)」を選択します。Criteriumには、変更行を識別するフィールドで通常は日付タイムスタンプもしくは数値列(本例では OrderDate)、Idにはレコードを一意に特定するフィールド(本例ではOrderID)を指定します。

034

Data Warehouse, Target Schema, Title(「mssql_orders_incremental」に変更), Schedule, Start Immediately(即時実行:ON)が設定されていることを確認します。

Scheduleについては「Every night(at 12:00 AM)」となっていますがより柔軟なスケジュール設定を行う場合は、「Advanced Scheduling」ボタンをクリックして設定てください。

035

「Create now」ボタンをクリックしてレプリケーションジョブを実行します。

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

036

しばらく時間が経過してジョブのStatusがSuccessful(成功)になっていることを確認します。画面が更新されない場合はRefreshしてください。

037

データウェアハウス(本記事ではSnowflake)にアクセスしてテーブルにどのようにデータが格納されているか確認してみましょう。レコードが格納されていることが確認できます。

038

それでは、データソース(Microsoft SQL ServerのOrdersテーブル)側に1レコード追加、1レコードを変更して再度ジョブを実行してみましょう。

INSERT INTO Orders (CustomerID, EmployeeID, OrderDate,ShipCountry) VALUES ('CHOPS', 5, '2024/08/08', 'USA');
UPDATE Orders SET OrderDate = '2024/08/08' WHERE OrderID = 11085;

データウェアハウス(本記事ではSnowflake)にアクセスしてレプリケーション先のテーブルを確認します。データソース側に追加・更新したレコードがレプリケーション先にも連携されていることが確認できます。

039

レプリケーション(Incremental)の作成手順は以上となります。
 

History update(履歴更新)

CData Virtuality Web InterfaceからJobsを開き、「New Job」ボタンをクリックします。
041

データソースの選択画面からレプリケーションするテーブルを選択して「Next」ボタンをクリックします。本手順ではMicrosoft SQL Server内の「Orders」テーブルを選択します。

042

レプリケーションのタイプが選択できますので、本手順では「History update(履歴更新)」を選択します。Key Columnにはレコードを一意に特定するフィールド(本例ではOrderID)を指定します。Columns To Checkには、変更をチェックするフィールド(本例ではShipから始まる複数のフィールド)を指定します。

043

Data Warehouse, Target Schema, Title(「mssql_orders_history_update」に変更), Schedule, Start Immediately(即時実行:ON)が設定されていることを確認します。

Scheduleについては「Every night(at 12:00 AM)」となっていますがより柔軟なスケジュール設定を行う場合は、「Advanced Scheduling」ボタンをクリックして設定てください。

044

「Create now」ボタンをクリックしてレプリケーションジョブを実行します。

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

045

しばらく時間が経過してジョブのStatusがSuccessful(成功)になっていることを確認します。画面が更新されない場合はRefreshしてください。

046

データウェアハウス(本記事ではSnowflake)にアクセスしてテーブルにどのようにデータが格納されているか確認してみましょう。fromtimestamp, totimestampフィールドが追加されたレコードが格納されていることが確認できます。

047

それでは、データソース(Microsoft SQL ServerのOrdersテーブル)側に1レコード変更して再度ジョブを実行してみましょう。
UPDATE Orders SET shipname = 'SHIPNAME_UPDATE' WHERE OrderID = 11087;

データウェアハウス(本記事ではSnowflake)にアクセスしてレプリケーション先のテーブルを確認します。データソース側で更新されたレコードの履歴がレコードとして作成されていることが確認できます。
048
レプリケーション(History update)の作成手順は以上となります。
 

Upsert update (アップサート更新)

CData Virtuality Web InterfaceからJobsを開き、「New Job」ボタンをクリックします。

050

データソースの選択画面からレプリケーションするテーブルを選択して「Next」ボタンをクリックします。本手順ではMicrosoft SQL Server内の「Orders」テーブルを選択します。

051

レプリケーションのタイプが選択できますので、本手順では「History update(履歴更新)」を選択します。Key Columnにはレコードを一意に特定するフィールド(本例ではOrderID)を指定します。Columns To Checkには、変更をチェックするフィールド(本例ではEmployeeID)を指定します。

052

Data Warehouse, Target Schema, Title(「mssql_orders_upsert」に変更), Schedule, Start Immediately(即時実行:ON)が設定されていることを確認します。

Scheduleについては「Every night(at 12:00 AM)」となっていますがより柔軟なスケジュール設定を行う場合は、「Advanced Scheduling」ボタンをクリックして設定てください。

053

「Create now」ボタンをクリックしてレプリケーションジョブを実行します。

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

054

しばらく時間が経過してジョブのStatusがSuccessful(成功)になっていることを確認します。画面が更新されない場合はRefreshしてください。

055

データウェアハウス(本記事ではSnowflake)にアクセスしてテーブルにどのようにデータが格納されているか確認してみましょう。レコードが格納されていることが確認できます。

056

それでは、データソース(Microsoft SQL ServerのOrdersテーブル)側に1レコードを追加、1レコードを変更して再度ジョブを実行してみましょう。
INSERT INTO Orders (CustomerID, EmployeeID, OrderDate,ShipCountry) VALUES ('LILAS', 5, '2024/08/09', 'USA');
UPDATE Orders SET employeeid = 4 WHERE OrderID = 11087;

データウェアハウス(本記事ではSnowflake)にアクセスしてレプリケーション先のテーブルを確認します。データソース側で更新されたレコードの履歴がレコードとして作成されていることが確認できます。
057
レプリケーション(Upsert update)の作成手順は以上となります。
 

まとめ

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

関連コンテンツ

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

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。