このガイドでは、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 replication process in this guide will use Snowflake as the data warehouse.

About Replication

データ仮想化機能によるリアルタイムのデータアクセスに加え、CData Virtuality はバイモーダルデータレプリケーションによるデータコラボレーションをサポートし、ETL / ELT を提供します。

レプリケーションとマテリアライゼーションには共通点がありますが、それぞれ目的は異なります:

  • マテリアライゼーション:パフォーマンスを最適化するために設計されたキャッシュと一時保存のメカニズム。パフォーマンス(レスポンスタイム)やデータソース側(高負荷)に影響を与えることなくデータアクセスが可能になります。

  • レプリケーション:データをソースからデータウェアハウスなどのデータストアにコピーして蓄積するプロセス。 

これがCData Virtuality のレプリケーションプロセスの仕組みです:

Replication.png

Replication Types

CData Virtuality は5種類のレプリケーションを提供します。このガイドでは、CData Virtuality Web UI を使用した各パターンのセットアップについて説明します:

  1. Copy Over/Full(全件更新/完全):全件を再取り込みします。データウェアハウス側で同じ名称のテーブルがすでに存在する場合は、選択された方法(Drop / Delete)によって処理されます。

  2. Incremental(増分更新):新しく追加されたレコードのみをコピー先のデータウェアハウスにコピーします。

  3. Batch(バッチ更新):レプリケーションジョブが実行されるたびに、データウェアハウス内の既存のテーブルを更新します。

  4. History update(履歴更新):データに加えられた変更を履歴として保管します。

  5. Upsert update(アップサート更新):既存の行を更新し、新しい行を挿入します。

Copy Over/Full (Update All)

  1. Jobs を開き、New Job ボタンをクリックします:

  1. Select your Data to Replicate 画面で、レプリケートするテーブルを選択し、Next ボタンをクリックします:

For this example, the Customers table in Microsoft SQL Server is selected.

  1. レプリケーションのタイプとしてFull を選択し、次に進みます:

  1. パイプライン構成に以下の要素を設定します:

    1. Data Warehouse:対象のデータウェアハウスを選択します。

    2. Target Schema:対象スキーマを指定します。

    3. Title:パイプラインの名前をmssql_customers_full に変更します。

    4. Schedule:希望の実行スケジュールを設定します。

    5. Start Immediately:すぐに実行する場合はトグルをON にします。

より柔軟なスケジュール設定を行うには、Advanced Scheduling ボタンをクリックします。
Create now ボタンをクリックしてレプリケーションジョブを実行します。

  1. Dashboard 画面が開きます。緑色のバーが、ジョブが正常に作成されたことを示します:

  1. ジョブが実行されたら、Dashboard画面のStatusSuccessful になっていることを確認します。ステータスが自動的に更新されない場合は、Refresh ボタンをクリックして画面を更新してください:

  1. Snowflake にアクセスし、該当テーブルにデータが格納されていることを確認します:

  1. Jobs 画面では、JOB TYPEcopyOverSourceTable と表示されますが、これはCopy Over またはFull レプリケーションと同義です:

  1. ジョブ設定を編集するには、目的のジョブを見つけ、ジョブの横にある縦三点リーダーをクリックします。コンテキストメニューからEdit Job を選択します:

  1. レプリケーションジョブのクリーンアップ方法は、以下の3つのオプションから選択できます:

  • Drop and recreate the table

  • Delete all rows from the table

  • Truncate all rows from the table

デフォルト設定はDrop and recreate the table で、ジョブの実行時に一度データウェアハウス側のテーブルを削除してから、新しいテーブルを作成します。

Incremental

  1. Jobs を開き、New Job ボタンをクリックします:

  1. Select your Data to Replicate 画面で、レプリケートするテーブルを選択し、Next ボタンをクリックします:

For this example, the Orders table in Microsoft SQL Server is selected.

  1. 増分更新では、2つのフィールドが必要です:

    1. 変更された行を識別するためのフィールド。通常は、日付のタイムスタンプまたは数値カラム(例:OrderDate)。

    2. 各レコードを一意に識別するためのID フィールド(例:OrderID):

  1. パイプライン構成に以下の要素を設定します:

    1. Data Warehouse:対象のデータウェアハウスを選択します。

    2. Target Schema:対象スキーマを指定します。

    3. Title:パイプラインの名前をmssql_orders_incremental に変更します。

    4. Schedule:希望の実行スケジュールを設定します。

    5. Start Immediately:すぐに実行する場合はトグルをON にします。

より柔軟なスケジュール設定を行うには、Advanced Scheduling ボタンをクリックします。
Create now ボタンをクリックしてレプリケーションジョブを実行します:

  1. Dashboard 画面が開きます。緑色のバーが、ジョブが正常に作成されたことを示します:

  1. ジョブが実行されたら、Dashboard画面のStatusSuccessful になっていることを確認します。ステータスが自動的に更新されない場合は、Refresh ボタンをクリックして画面を更新してください:

  1. Snowflake にアクセスし、該当テーブルにデータが格納されていることを確認します:

  1. データソース(例えば、Microsoft SQL ServerOrders テーブル)に新しいレコードを追加するには、次のクエリを使用して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;
  1. Snowflake にアクセスし、レプリケーション先のテーブルを確認します。データソースから新たに追加・更新されたレコードがレプリケーション先のテーブルに正確に反映されていることを確認し、レコードがレプリケーション先に正しくリンクされていることを確認します:

Batch Update

  1. Jobs に移動し、New Job ボタンをクリックします:

  1. Select your Data to Replicate 画面で、レプリケートするテーブルを選択し、Next ボタンをクリックします:

For this example, the Customers table in Microsoft SQL Server is selected.

  1. レプリケーションのタイプとしてBatch を選択し、Use identity field... トグルがOFF になっていることを確認します。

  1. パイプライン構成に以下の要素を設定します:

    1. Data Warehouse:対象のデータウェアハウスを選択します。

    2. Target Schema:対象スキーマを指定します。

    3. Title:パイプラインの名前をmssql_customers_batch_off に変更します。

    4. Schedule:希望の実行スケジュールを設定します。

    5. Start Immediately:すぐに実行する場合はトグルをON にします。

より柔軟なスケジュール設定を行うには、Advanced Scheduling ボタンをクリックします。
Create now ボタンをクリックしてレプリケーションジョブを実行します。

  1. Dashboard 画面が開きます。緑色のバーが、ジョブが正常に作成されたことを示します:

  1. ジョブが実行されたら、Dashboard画面のStatusSuccessful になっていることを確認します。ステータスが自動的に更新されない場合は、Refresh ボタンをクリックして画面を更新してください:

  1. Snowflake にアクセスし、該当テーブルにデータが格納されていることを確認します:

  1. 作成したジョブの詳細は、Jobs 画面からアクセスし、変更することができます。このジョブでは、JOB TYPEsql に、TITLEBatch replication from mssql.Customers to snowfl に設定されています:

  1. データがデータウェアハウス(例:Snowflake)に正しく保存されていることをテストするには、同じジョブを再実行します。Use identity field... トグルをON にしてジョブを実行した場合、ジョブを実行するたびにすべてのレコードが既存のテーブルに追加されるため、レコードが重複して登録されます。

  1. Use identify field… トグルをON に切り替えた場合に何が起こるかをテストするには、以下のようにジョブを設定します:

    1. Create Job 画面で、テーブルを選択します(例:Microsoft SQL ServerCustomers テーブル)。

    2. レプリケーションタイプをBatch(バッチ更新)に設定します。

    3. Use identity field... トグルをON にします。

    4. Identity Field にはデーターソース側のテーブルでユニークなID ナンバーを生成するフィールド(例:CustomerID)を指定して次に進みます。

  1. パイプライン構成に以下の要素を設定します:

    1. Data Warehouse:対象のデータウェアハウスを選択します。

    2. Target Schema:対象スキーマを指定します。

    3. Title:パイプラインの名前をmssql_customers_batch_on に変更します。

    4. Schedule:希望の実行スケジュールを設定します。

    5. Start Immediately:すぐに実行する場合はトグルをON にします。

  1. Create now ボタンをクリックしてレプリケーションジョブを実行します。ダッシュボード画面に移動し、ジョブの実行が正常に完了したことを確認します:

  1. Snowflake にアクセスし、レプリケーション先のテーブルでデータが正常にレプリケートされたことを確認します。

  1. データソース(例:Microsoft SQL ServerCustomers テーブル)に新しいレコードを追加するには、次のクエリを使用してレプリケーションジョブを再実行します:

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

  1. Snowflake にアクセスし、レプリケーション先のテーブルを確認します。データソースに新しく追加されたレコードがレプリケーション先のテーブルに反映されていることを確認し、重複レコードが生成されていないことを確認します:

History Update

  1. Jobs を開き、New Job ボタンをクリックします:

  1. Select your Data to Replicate 画面で、レプリケートするテーブルを選択し、Next ボタンをクリックします:

For this example, the Orders table in Microsoft SQL Server is selected.

  1. レプリケーション中の更新を正確に追跡するためには、以下が必要です:

    1. Key Column:レコードを一意に特定するフィールド(例:OrderID

    2. Columns To Check:データの変更を監視するフィールド(例:Ship で始まる複数のフィールド)

  1. パイプライン構成に以下の要素を設定します:

    1. Data Warehouse:対象のデータウェアハウスを選択します。

    2. Target Schema:対象スキーマを指定します。

    3. Title:パイプラインの名前をmssql_orders_history_update に変更します。

    4. Schedule:希望の実行スケジュールを設定します。

    5. Start Immediately:すぐに実行する場合はトグルをON にします。

より柔軟なスケジュール設定を行うには、Advanced Scheduling ボタンをクリックします。
Create now ボタンをクリックしてレプリケーションジョブを実行します。

  1. Dashboard 画面が開きます。緑色のバーが、ジョブが正常に作成されたことを示します:

  1. ジョブが実行されたら、Dashboard画面のStatusSuccessful になっていることを確認します。ステータスが自動的に更新されない場合は、Refresh ボタンをクリックして画面を更新してください:

  1. Snowflake にアクセスし、fromtimestamp およびtotimestamp フィールドがテーブルに追加されていることを確認します。レコードが正しく格納されていることを確認します:

  1. データソース内の1レコード(例:Microsoft SQL ServerOrders テーブル)を変更するには、次のクエリを使用してレプリケーションジョブを再実行します:

UPDATE Orders SET shipname = 'SHIPNAME_UPDATE' WHERE OrderID = 11087;

  1. Snowflake にアクセスし、レプリケーション先のテーブルを確認します。データソースのレコードの更新履歴が、レコードとして正しく作成されていることを確認します:

Upsert Update

  1. Jobs を開き、New Job ボタンをクリックします:

  1. Select your Data to Replicate 画面で、レプリケートするテーブルを選択し、Next ボタンをクリックします:

For this example, the Orders table in Microsoft SQL Server is selected.

  1. レプリケーション中の更新を正確に追跡するためには、以下が必要です:

    1. Key Column:レコードを一意に特定するフィールド(例:OrderID

    2. Columns To Check:データの変更を監視するフィールド(例:EmployeeID)。

  1. パイプライン構成に以下の要素を設定します:

    1. Data Warehouse:対象のデータウェアハウスを選択します。

    2. Target Schema:対象スキーマを指定します。

    3. Title:パイプラインの名前をmssql_orders_upsert に変更します。

    4. Schedule:希望の実行スケジュールを設定します。

    5. Start Immediately:すぐに実行する場合はトグルをON にします。

より柔軟なスケジュール設定を行うには、Advanced Scheduling ボタンをクリックします。
Create now ボタンをクリックしてレプリケーションジョブを実行します:

  1. Dashboard 画面が開きます。緑色のバーが、ジョブが正常に作成されたことを示します:

  1. ジョブが実行されたら、Dashboard画面のStatusSuccessful になっていることを確認します。ステータスが自動的に更新されない場合は、Refresh ボタンをクリックして画面を更新してください:

  1. Snowflake にアクセスし、該当テーブルにデータが格納されていることを確認します:

  1. データソース内の1レコード(例:Microsoft SQL ServerOrders テーブル)を追加して変更するには、次のクエリを使用してレプリケーションジョブを再実行します:

INSERT INTO Orders (CustomerID, EmployeeID, OrderDate,ShipCountry) VALUES ('LILAS', 5, '2024/08/09', 'USA');
 
UPDATE Orders SET employeeid = 4 WHERE OrderID = 11087;

  1. Snowflake にアクセスし、レプリケーション先のテーブルを確認します。データソースに新しく追加されたレコードと更新されたレコードが、レコードとして作成されていることを確認します:

See Also

Replication レプリケーションとその種類についての詳細はこちらをご覧ください