ロードタイプ
ロードタイプによって、レプリケーションタスクがソースからターゲットにデータをレプリケートするときに使用する操作のタイプが決まります。
データをレプリケートする際には、次のいずれかのロードタイプを使用します。
- 最初の完全なロードの後での増分ロード
- レプリケーションタスクが最初に実行されるときには、完全なロードを実行し、ソースのすべての行をレプリケートします。2回目以降の各実行で、レプリケーションタスクは増分ロードを実行します。増分実行では、レプリケーションタスクは、更新/挿入操作を実行して、前回のタスク実行以降に変更された行をレプリケートします。このロードタイプは、タスクでSalesforceソースとデータベースターゲットを使用するときに指定できます。
- 最初の部分的なロードの後での増分ロード
- このロードタイプでは、レプリケーションタスクは常に増分実行となります。レプリケーションタスクは、初回実行時に、指定された時点以降に作成または変更された行を処理します。レプリケーション2回目以降の実行では、レプリケーションタスクは、前回のタスク実行以降に変更された行をレプリケートします。このロードタイプは、タスクでSalesforceソースとデータベースターゲットを使用するときに指定できます。
- 実行ごとに完全なロード
- レプリケーションタスクは、各実行中にタスク内のソースオブジェクトのすべての行をレプリケートします。このロードタイプは、タスクでSalesforceまたはデータベースソースとデータベースまたはフラットファイルターゲットを使用するときに指定できます。
増分ロードについては、「Salesforce コネクタ」のヘルプを参照してください。
完全なロード
完全なロードの場合、レプリケーションタスクは、タスクのソースオブジェクトのすべての行のデータをレプリケートします。レプリケーションタスクは、タスクが実行されるたびに、ターゲットのデータベーステーブルまたはフラットファイルをトランケートし、ソースから全データの更新を実行します。
完全なロードは次の場合に実行します。
- •レプリケーションタスクがデータベースソースを使用している場合。
- •レプリケーションタスク内のSalesforceオブジェクトが、Salesforce内でレプリケート不可に設定されている場合。
レプリケート不可のオブジェクトを含むレプリケーションタスクに対して増分ロードを実行すると、そのレプリケーションタスクは当該オブジェクトに対して完全なロードを実行します。レプリケート可能なSalesforceオブジェクトの一覧を取得する方法については、Salesforce管理者にお問い合わせください。
- •Salesforceフィールドのデータ型が変更された場合。
データ型が変更されていることがレプリケーションタスクによって検出された場合は、まず、ターゲットテーブルをリセットして、更新されたSalesforceオブジェクトに合わせてテーブルを作成し直します。その後、レプリケーションタスクを完全ロードで実行し、レプリケーションタスクに含まれるすべてのSalesforceオブジェクトからデータを再ロードする必要があります。または、AutoAlterColumnTypeカスタム構成プロパティを設定して、Salesforceオブジェクトに合わせてターゲットテーブルのカラムが更新されるようにします。AutoAlterColumnTypeプロパティは、状況によっては適用されない場合があります(例えば、ソースとターゲットのデータ型に互換性がない場合など)。AutoAlterColumnTypeプロパティの詳細については、のを参照してください。
増分ロード
Salesforceデータをデータベースターゲットにレプリケートする際には、増分ロードを使用できます。
増分ロードには次のタイプがあります。
- •最初の完全なロードの後での増分ロードレプリケーションタスクは、初回実行時に完全なロードを実行し、すべての行のデータをレプリケートします。
- •特定期間の増分ロードレプリケーションタスクは、初回実行時に更新/挿入操作を実行して、指定された期間中のソースに対する変更に基づいてデータをレプリケートします。
初回実行後は、どちらのタイプの増分ロードも同じ方法でデータをレプリケートします。
レプリケーションタスクは、更新/挿入操作を実行して、新しい行および前回のタスク実行以降に変更された行のデータをレプリケートします。前回の実行時刻は、Salesforceから最後のレコードがレプリケートされた時刻により決定されます。
各レプリケーションセッションは、単一のトランザクションで実行されます。デフォルトのコミット間隔を使用している場合にエラーが発生すると、トランザクション全体がロールバックされます。コミット間隔の値を小さくすれば、ロールバックが発生したとき、最後のバッチのみがロールバックされるようになります。パフォーマンスを最適化するため、レプリケーションタスクを数週間または数か月といった長い間隔で実行するようにスケジュールする場合には、増分ロードの使用を避けます。その場合は、代わりに完全なロードを実行して、スケジュール間隔中にレプリケートされたすべてのデータがロールバックされないようにします。
増分実行時に、レプリケーションタスクによってターゲットテーブルが切り詰められることはありません。ターゲットテーブルを切り詰めるには、レプリケーションタスクを完全なロードで実行する必要があります。
レプリケーションタスクは、Salesforceのソースオブジェクトとターゲットテーブルを比較し、不整合が見つかると次のタスクを実行します。
- 1ソースとターゲットのフィールド名を比較します。
- 2ターゲットテーブルのフィールドを挿入および削除してソースと一致させます。
- 3クエリを実行して、値が挿入または更新されているかどうかを確認します。
- 4新しい行および変更された行をレプリケートします。
Salesforce Bulk APIを使用して増分ロードを実行することはできません。タスクで増分ロードオプションを選択した場合は、Salesforce Bulk API詳細オプションを無効にします。
増分ロードの実行のルールおよびガイドライン
レプリケーションタスクを増分ロードとして実行するときは、次のルールおよびガイドラインに従ってください。
- • ターゲットにカラムを追加できます。レプリケーションタスクでは、フィールド名の不整合が調整されてからクエリが実行され、変更されたデータが検索されるため、フィールド名の変更では行がレプリケートされません。レプリケーションが行われるのは、行のデータが変更された場合のみです。
たとえば、Salesforceソースに「New」という名前のフィールドが含まれており、ターゲットにはこのフィールドが存在しないとします。増分ロードを実行し、行1のNewフィールドに値が存在しない場合、レプリケーションタスクでは、Newフィールドがターゲットテーブルに追加されますが、行1ではデータがレプリケートされません。行1のNewフィールドに値が含まれる場合、レプリケーションタスクでは、行1でデータがレプリケートされます。
- • ソースカラムとターゲットカラムで、データ型、精度、スケールが一致しない場合、増分ロードは失敗する可能性があります。ソースカラムとターゲットカラムでデータ型が一致しない場合、またはソースカラムの精度やスケールがターゲットカラムのものよりも高い場合、増分ロードは失敗します。
この問題を解決するには、AutoAlterColumnTypeカスタム設定プロパティを設定し、ターゲットテーブルカラムを更新してSalesforceオブジェクトと一致させることができます。
ターゲットをリセットしてターゲットテーブルを再作成し、対応するソースオブジェクトと一致させることもできます。次にレプリケーションタスクを完全なロードで実行し、レプリケーションタスクに含まれる、すべてのソースオブジェクトのデータをリロードします。
- •レプリケーションタスクは、レプリケート可能で、CreatedDate属性とSystemModstamp属性を持つSalesforceオブジェクトで増分ロードを実行します。各Salesforceオブジェクトは、Salesforceでレプリケートできないように設定できます。レプリケート可能なSalesforceオブジェクトの一覧を取得する方法については、Salesforce管理者にお問い合わせください。
SalesforceはすべてのオブジェクトのCreatedDateまたはSystemModstampの日付を追跡しません。
- •タスクを増分ロードで複数回実行する場合、前回の実行の終了時刻と次の実行の開始時刻の間隔は、最低でも60秒にする必要があります。60秒の待機時間より前にタスクを実行しようとすると、タスクは失敗します。
- •ターゲットがフラットファイルであるとき、タスクを増分ロードで実行することはできません。