Salesforceで削除したレコードの連携方法について:CData Sync

by 宮本航太 | 2021年03月16日

f:id:sennanvolar44:20210315220852p:plain こんにちは、CData Software Japan エンジニアの宮本です。

CData Sync では Salesforce の削除レコードについて、「物理削除」、「論理削除」、「スキップ」という3つの方法で連携先に反映させることができます。

今回はこちらの3つの方法で Salesforce の削除レコードがどのような動きになるのかご紹介していきます。

各削除方法について

削除方法は「物理削除」、「論理削除」、「スキップ」の3つです。

物理削除
その名の通り、Salesforce でレコードが削除された状態で連携ジョブを実行すると、データベース側のレコードが削除されます。CData Sync では「Hard Delete」を選択すると物理削除となります。また、デフォルト設定ではこの Hard Delete が選択されています。

論理削除
こちらも意味としてはそのままですが、論理削除で設定した状態で連携ジョブを実行すると、連携先テーブルに「_cdatasync_deleted」というbit型のカラムが追加され、削除レコードには 1 が設定されるようになります。CData Sync では「Soft Delete」を選択すると論理削除となります。

スキップ
スキップをオプションとして設定すると、データベース側での削除レコードの反映は行われません。CData Sync では「Skip Delete」を選択すると削除レコードの更新をスキップします。
f:id:sennanvolar44:20210315175623p:plain

削除オプションについての注意点

1つ目は、この機能は全てのデータソースで対応しているわけではないということです。Salesforce は対応していますが、その他で確認したい場合は、「テーブルレプリケーション設定」の一般タブにある「削除をキャプチャ」が Supported になっているかで確認することができます。
f:id:sennanvolar44:20210315174328p:plain

2つ目は、ジョブ実行結果のレプリケート件数に削除件数が含まれないことです。例えば Salesforce 側で更新レコード0件、削除件数1件でジョブを実行した場合、実行結果に表示される連携件数は0件となります。しかし、データベース側では物理削除・論理削除は行われています。

各削除パターンでジョブを実行してみる

ではそれぞれの削除パターンで実際にジョブを実行してみます。連携先には SQLServer を今回は使っていきます。

物理削除(Hard Delete)

まずは Salesforce から SQLServer へのレプリケートを行いました。現在 Salesforce は41件ある状態で、その全てがレプリケートされた状態です。
f:id:sennanvolar44:20210315180247p:plain

なお、削除オプションはデフォルトの Hard Delete が選択されています。
f:id:sennanvolar44:20210315172216p:plain

以下は SQLServer に作成されたレプリケートテーブルです。削除の確認で今回はこの赤枠の「CData JDBC Test 1023」というレコードを Salesforce で削除します。
f:id:sennanvolar44:20210315180555p:plain

では、Salesforce 側で対象レコードの削除を行った後、再度ジョブを実行してみます。
f:id:sennanvolar44:20210315181110p:plain

ジョブ実行後、SQLServer には先ほどあった「CData JDBC Test 1023」というレコードが削除されているのが確認できました。
f:id:sennanvolar44:20210315181231p:plain

論理削除(Soft Delete)

次に論理削除を確認していきますので、削除オプションを Soft Delete に設定してジョブを作成します。 f:id:sennanvolar44:20210315181604p:plain

設定後、ジョブを実行して Salesforce の全レコードをレプリケートします。
f:id:sennanvolar44:20210315181838p:plain

ここで SQLServer を参照すると、テーブルに「_cdatasync_deleted」が作成されているのが確認できます。
f:id:sennanvolar44:20210315182346p:plain

では、今度は 「CData JDBC Test 1024」を Salesforce で削除してます。
f:id:sennanvolar44:20210315182455p:plain

削除後、再度ジョブを実行し、 f:id:sennanvolar44:20210315182703p:plain

SQLServer を確認すると、_cdatasync_deleted カラムが 1 で更新されていました。
f:id:sennanvolar44:20210315183000p:plain

これで物理削除、論理削除の動きを確認することができました。

最後に削除データのスキップを確認してみましょう。

スキップ(Skip Delete)

削除オプションで Sukip Delete を選択します。
f:id:sennanvolar44:20210315213511p:plain

設定後、ジョブを実行して Salesforce の全レコードをレプリケートします。
f:id:sennanvolar44:20210315214056p:plain

「CData JDBC Test 1026」を今回は削除対象にします。 f:id:sennanvolar44:20210315214853p:plain

削除後、もう一度ジョブを実行してみます。
f:id:sennanvolar44:20210315215120p:plain

ではこの状態で SQLServer を確認してみると、ちゃんと消されずに残っていました。
f:id:sennanvolar44:20210315215325p:plain

ついでに、スキップの場合は論理削除のように _cdatasync_deleted カラムは作成されません。
f:id:sennanvolar44:20210315215540p:plain

おわりに

いかがでしたでしょうか。データ連携(転送)関連で気になるのは削除レコードも反映されるのかというところだと思います。CData Sync では3パターンの方法で削除レコードを管理することができます。
今回使ってみた CData Sync は30日間のトライアルが可能となっています。是非この機会にお試しくださいませ。

www.cdata.com

関連コンテンツ

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

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