
はじめに
CData Sync では、効率的なデータ同期を実現するために差分レプリケーション機能を提供していますが、時として全件連携が必要になるケースがあります。例えば、ソースシステムでの大規模なデータ修正や、データ整合性を高める必要がある場合などです。これまでも全件連携のために「テーブルを削除」や「テーブルデータを削除」といったオプションを提供してきましたが、これらは同期先のテーブル構造やデータを削除してしまうため、既存データを保持したまま全件連携をすることができませんでした。CData Sync v25.2 の新機能として、新たに既存データを保持したまま全件連携できる RefreshTable オプションを追加しました。本記事では、この新機能について詳しくご紹介します。
設定方法
ジョブもしくは、タスクの高度な設定タブ内にある追加オプションに次のような設定を追加することで有効となります。
refreshtable=true

動作検証
まずPostgreSQL に次のようなテーブルを事前に準備します。
CREATE TABLE refresh_table_test (
id SERIAL PRIMARY KEY,
content VARCHAR(255),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO refresh_table_test (content)
VALUES
('test data 1'),
('test data 2'),
('test data 3');
このテーブルに対してタスクを作成し、差分連携とするため、差分チェックカラムにレコードの更新日カラムであるupdated_at を設定します。

先述のRefreshTable オプションを有効にしない状態で、初回実行をすると3件連携されます。

続いて、意図的にupdated_at が過去日のデータをINSERT します。
INSERT INTO refresh_table_test (content, updated_at)
VALUES
('test data 4', '2024-12-31 15:00:00+09');
その後、ジョブを実行するとCData Sync は前回実行時以降のデータの取得を試みますが、updated_at が過去日のため、連携件数は0件となります。

ここで先述の RefreshTable オプションの設定をジョブに追加します。

再度ジョブを実行すると4件となりました。

連携先のテーブルを見ると4件連携されており、全件連携されていることを確認できます。

さらに、連携先のテーブルに対して次のようなSQLを実行した上で、再度ジョブを実行します。
INSERT INTO refresh_table_test (id, content, updated_at)
VALUES
(5, 'test data 5', '2024-12-31 06:00:00');
「テーブルを削除」や「テーブルデータを削除」といったオプションを有効にした場合、データソースにはないレコードは削除されて全件連携されますが、RefreshTable オプションの場合は削除されず、保持されていることが確認できます。

次に、データソースに次のSQLを実行します。
INSERT INTO refresh_table_test (id, content)
VALUES
(6, 'test data 6');
先ほど追加オプションに設定したrefreshtable=true を削除してジョブを実行してみます。そうすると、再度差分連携で上記で追加したレコードのみが対象となり、連携件数が1件となっていることを確認できます。このことから差分連携の状態を保持し、必要なタイミングで全件連携を柔軟に実行できることがわかります。

最終的な連携先テーブルのレコード:

既存オプションとの違い
CData Sync には、次のいずれかのオプションを有効化することでテーブルの全件連携が可能です。それぞれ同期先テーブルへの影響に違いがあり、整理すると以下のようになります。
オプション | 同期先テーブルへの影響 |
|---|
RefreshTable | 影響なし(テーブル情報・既存データを保持) |
テーブルを削除 | テーブルを削除して再作成 |
テーブルデータを削除 | データのみ削除(テーブル情報のみを保持) |
尚、「テーブルを削除」 or 「テーブルデータを削除」とRefreshTableを同時に有効化した場合、「テーブルを削除」、「テーブルデータを削除」のオプションが優先され、連携先のテーブルは削除されます。
まとめ
RefreshTable オプションにより、CData Sync の連携の柔軟性をさらに向上させることができました。この機能により、より信頼性の高いデータ同期環境を、運用への影響を最小限に抑えながら実現できます。
CData Sync は30日間の無償トライアルが可能ですので、ぜひお試しください!
https://jp.cdata.com/sync/trial/