CData Software Blog

クラウド連携のCData Software の技術ブログです。

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

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