> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 機能

CData Sync は、あらゆるデータソースをあらゆるデータベースやデータウェアハウスなどにレプリケートするパワフルな機能を提供します。このドキュメントでは、次の機能について簡単に説明します。

* 差分レプリケーション
* 同期間隔（データの整合性）
* 削除キャプチャ（データとレコード）
* データ型
* データ変換
* API 接続
* ファイアウォールトラバーサル
* スキーマの変更

## 初期レプリケーション

初めてジョブを実行すると、CData Sync はデータソースの履歴データ全体を処理します。このデータには膨大な量の情報が含まれています。そのため、Sync は、いくつかの戦略を用いて、効率、パフォーマンス、整合性を最大化します。またSync には、特定のデータセットに対して同期戦略を最適化するために使用できるユーザー制御のオプションも用意されています。

特定のスナップショット設定を使用して、Sync が初期レプリケーションを処理する方法を制御できます。これらの設定は、ジョブの**概要**タブから利用できます。詳しくは、[最初のレプリケーションジョブの設定を定義](https://docs.sync.cdata.com/26.4/ja/getting-started/configuring-jobs.md#最初のレプリケーションジョブの設定を定義)を参照してください。

## 差分レプリケーション

初期レプリケーション後、CData Sync は差分レプリケーションでデータを移動します。Sync は、毎回すべてのデータをクエリする代わりに、最後のジョブ実行時から追加、変更されたデータだけをクエリします。そして、Sync はそのデータをデータウェアハウスにマージします。この機能により作業負荷が大幅に軽減し、特に大きなデータセットを扱う場合に帯域幅の使用と同期の遅延が最小限に抑えられます。

多くのクラウドシステムはAPI を使用しており、それらのAPI からデータウェアハウスに完全なデータをプルすることは、多くの場合処理に時間がかかります。また、多くのAPI では1日単位でクオータが設定されており、毎日すべてのデータを取得したくてもできず、毎時や毎15分は不可能です。Sync はデータを差分ごとに移動させることで、遅いAPI や毎日のクオータに対処する際、非常に高い柔軟性を発揮します。

Sync は、主に2つの手法（差分チェックカラムと変更データキャプチャ）を使用して差分レプリケーションを取得します。これらの手法について、次の2つのセクションで説明します。

> [!NOTE]
>
> ユーザーインターフェースでは、差分レプリケーションを制御する設定は、ジョブの**概要**タブにあるスナップショット設定を通じて構成されます。

### 差分チェックカラム

*差分チェックカラム*は、データを同期する際に新規または変更されたレコードを識別するためにSync が使用する、datetime またはnumeric ベースのカラムです。このカラムは、ジョブの**概要**タブの**スナップショット設定**カテゴリで選択する値タイプ（**日付ベース**または**数値ベース**）に対応しています。

データソースにレコードが追加または更新されるたびに、このカラムの値が増加します。Sync は抽出時にこのカラムを基準として使用し、新規または変更されたレコードのみが返されるようにします。その後、Sync はカラムの新しい最大値を保存し、次のレプリケーションで使用できるようにします。

差分チェックカラムを使用するレプリケーションは、レコードが追加または更新されるにつれて値が時間の経過とともに増加するカラムに依存します。このカラムは、（前述の）[**スナップショット設定**で選択する値タイプ](https://docs.sync.cdata.com/26.4/ja/getting-started/configuring-jobs.md#標準個別設定およびすべて同期ジョブのスナップショット設定)に対応します。

* **日付ベースの差分チェックカラム：** 行が最後に変更された日時を記録するdatetime カラム（**Last Modified** や**Date Updated** など）。Sync はこの値を使用して、最後のレプリケーション以降に追加または更新されたレコードを取得します。
* **数値ベースの差分チェックカラム：** レコードが作成または更新されるたびに値が増加する数値カラム（自動増分識別子など）。Sync はこの値を使用して、最後に処理した値以上の値を持つレコードを取得します。

### 差分チェックカラムの順序付き処理

差分チェックカラムによる並べ替えをサポートしているデータソースでは、Sync は以下のレプリケーション動作を使用します：

* **順序付きソースクエリ：** Sync はチェックカラムの値に基づいてレコードが順番に返されるように、ソースクエリに ORDER BY 句を追加します。
* **最小値の検索：** Sync は結果セット全体をスキャンするのではなく、ORDER BY ... LIMIT 1 を使用してチェックカラムの最小値を取得します。
* **差分バッチコミット：** Sync は、レプリケーション全体を単一のトランザクションとして扱うのではなく、完了したバッチを順次同期先にコミットします。レプリケーションジョブが中断された場合、コミット済みのバッチは保持されます。
* **差分ステータス更新：** 各バッチが正常に完了するたびにステータステーブルが更新されます。レプリケーションジョブが中断された場合、次回の実行は最後に正常に完了したバッチから再開されます。
* **バッチレベルのマージ：** Sync は各バッチが完了するたびに同期先テーブルを更新し、対応するステータス情報を記録します。

### 変更データキャプチャ

一部のデータソースでは*変更データキャプチャ*（CDC）をサポートしており、データソースはログファイルを使用して、データベースに変更を加えるイベント（`Insert`、`Update`、または`Delete`）をログに記録します。Sync は、データソーステーブルに変更をクエリするのではなくログファイルを読み込んで変更イベントを確認します。次に、アプリケーションはレプリケーションのためのそれらの変更を抽出し、次回のレプリケーション用に現在のログを保存します。

CDC 機能をサポートするデータソースの一覧については、[変更データキャプチャ](https://docs.sync.cdata.com/26.4/ja/jobs/change-data-capture.md)を参照してください。

### 時間ベースの差分フィルタリング関数

CData Sync は時間ベースの差分レプリケーション用に以下の2つの特別な関数をサポートしています：

* **REPLICATE\_LASTMODTIME()：** ステータステーブルに保存された最後の値を返します。値が存在しない場合は、Sync はレプリケーション開始日（ReplicateStartDate）をデフォルト値として使用します。
* **REPLICATE\_NEXTINTERVAL()：** ReplicateInterval およびReplicateIntervalUnit パラメータに基づいて、次の値を返します。これらのパラメータが設定されていない場合は、Sync はエラーを生成します。

これらの関数は、データソース（例：Workday RaaS）が複数の日付プロンプトでフィルタリングを必要とする場合に便利です。以下に例を示します：

```sql theme={null}
WHERE from_date_prompt = REPLICATE_LASTMODTIME()
  AND to_date_prompt = REPLICATE_NEXTINTERVAL()
```

これらの関数は、複数のカラムにわたって使用できます。REPLICATE\_LASTMODTIME() 関数は単独で使用できますが、REPLICATE\_NEXTINTERVAL() 関数は、間隔オプションとREPLICATE\_LASTMODTIME() の両方が同じクエリ内に必要です。

レプリケーションの実行後、Sync はフィルタカラムを次のように処理します：

* すべてのフィルタカラムが関数を使用している場合、Sync はREPLICATE\_NEXTINTERVAL() の値を保存します。
* すべてのフィルタカラムが通常のカラムの場合、Sync は返される最大値を保存します。
* フィルタカラムが混在している場合、Sync はREPLICATE\_NEXTINTERVAL() の値を保存します。

これらの関数は、標準の差分レプリケーション戦略と統合されており、すべてのデータソースでサポートされています。

## 並列処理

CData Sync ジョブが*並列処理*を使用するように設定できます。これは、アプリケーションが1つのジョブを処理するために複数のワーカースレッドを使用することを意味します。並列処理により、Sync はワークロードを複数のプロセスに分割し、複数のテーブルを同時に移動できるようにします。その結果、より少ない時間でより多くのデータが移動され、ジョブ効率が大幅に向上します。Sync では、ジョブ単位で必要な数のワーカーを割り当てることができます。

並列処理を有効化するには：

1. 実行するジョブをクリックします（Sync の**ジョブ**ページから）。このアクションにより**ジョブ/*任意のジョブ名***ページが開きます。

2. **概要**タブの**設定**カテゴリで、**設定を編集**アイコン（![設定を編集アイコン](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_edit-icon.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=b1815003b41618246d9f33c42c637e61)）をクリックします。これにより、**設定を編集**ダイアログボックスが開きます。

3. **並列処理**プロパティで**有効化**を選択します。

4. ジョブに割り当てるワーカー数を**ワーカープール**フィールドに入力します。この値は、一度に並列に実行できるタスクの数を制御します。

   ![並列処理オプションを示す設定を編集ダイアログボックス](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_parallel-processing_1.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=0e12d939589b67cf3b00c1047c4e56a8)

5. **変更を保存**（**ジョブ設定**ヘッダーバー右上）をクリックします。

これらの変更を保存すると、ジョブの実行時に並列処理が使用されます。

## メタデータキャッシュ

CData Sync における*メタデータキャッシュ*は、データソーステーブルと同期先テーブルの構造情報を保存し、システムがそれらをジョブ間で再利用できるようにするメカニズムです。メタデータキャッシュは、Sync がデータソースや同期先に対して継続的にクエリしてテーブル構造を取得する必要をなくすことにより、パフォーマンスを向上させます。メタデータをメモリやローカルストレージですぐに利用できるようにしておくことで、キャッシュ機能は、特にストレージが低速であったり、ネットワーク応答時間が遅い外部データソースや同期先への繰り返しクエリを減らし、パフォーマンスを向上させます。この機能により、ファイルアクセスの高速化、データ取得の迅速化、システム全体の応答性の向上が実現されます。

Sync アプリケーションでは、コネクタ単位でメタデータキャッシュを有効化します。メタデータキャッシュをサポートするデータソースまたは同期先コネクタを設定する際はいつでも、下図に示すようにコネクタの**新規接続**ページの**設定**タブの下部でそのプロパティを設定できます：

![新規接続ページのメタデータキャッシュセクション](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_metadata-caching_1.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=4ee42d935c56d94b387dd67401b00118)

**リフレッシュ間隔**リストから以下のオプションを選択できます：

* **なし：** メタデータはリフレッシュされません。
* **ジョブの開始時：** ジョブの開始時にメタデータがリフレッシュされます。
* **毎時**（デフォルト）：1時間経過後にメタデータがリフレッシュされます。
* **毎日：** 1日経過後にメタデータがリフレッシュされます。

コネクタがメタデータキャッシュをサポートしていない場合、**メタデータキャッシュ**セクションにその旨を示すメモが表示されます。

![サポート対象外のコネクタに関するメモを示すメタデータキャッシュセクション](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_metadata-caching_2.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=0b293a3c0c8cd28dd1e29a8ad6e31179)

> [!NOTE]
>
> キャッシュされたメタデータは、すべてのスキーマ変更をリアルタイムで自動検出するわけではないため、データソースまたは同期先テーブルの構造が変更された際は、Sync ジョブでキャッシュをリフレッシュする必要があります。例えば、カラムの追加、削除、またはデータ型の変更が行われた場合は、**リフレッシュ**ボタン（![リフレッシュボタン](https://mintcdn.com/cdata-sync/kdVWT2jSQXwgtx6Q/26.4/images/Job_Refresh_button.png?fit=max\&auto=format\&n=kdVWT2jSQXwgtx6Q\&q=85\&s=bdb510595c8d338ebb47befa4ea20f54)）をクリックしてキャッシュを更新し、Sync がスキーマの最新の状態を把握できるようにしてください。この方法により、レプリケーションエラーを防ぎ、変換、マッピング、検証が正確に適用されることを確実にします。

## ジョブの自動再試行

CData Sync は、**一部成功**ステータスで完了したタスク、またはタスクエラーやネットワークの問題で失敗したタスクの再実行を試みる**ジョブの自動再試行**機能を提供します。ジョブの自動再試行処理は、ジョブ内の対象となるタスクにのみ適用されます。例えば、1つのタスクが失敗した場合、処理はその1つのタスクのみを再試行します。

このプロセスはすべての失敗したジョブ（キャンセルされたジョブを除く）に対して機能しますが、再試行が行われるのはそのようなジョブに対して一度のみです。

**ジョブの自動再試行**機能を有効にするには：

1. ジョブページでジョブの名前をクリック（または **... > 編集**を選択）して、***任意のジョブ名* の設定**ページを開きます。
2. **概要**タブの**設定**カテゴリで、**設定を編集**アイコン（![設定を編集アイコン](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_edit-icon.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=b1815003b41618246d9f33c42c637e61)）をクリックします。これにより、**設定を編集**ダイアログボックスが開きます。
3. **ジョブの自動再試行**設定の**有効化**チェックボックスを選択します。次に、**保存**をクリックして設定の更新を保存します。

   ![ジョブの自動再試行オプションを示す設定を編集ダイアログボックス](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_automatic-job-retry_1.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=41e42679ba78604bc74fa81c637c762d)

失敗したジョブに対して**ジョブの自動再試行**が実行されると、ジョブの最終ステータスに再試行の結果が反映されます：**成功**、**一部成功**、または**失敗**。ジョブの実行の詳細（**... > 詳細**）で、再試行が行われたかどうかを確認できます。詳細メッセージには、試行回数が付加されます（例：**Automatically retried (attempt 2 of 2).**）

再試行の実行中は、ジョブのステータスに**実行中**と表示され、ホバーメッセージに再試行の詳細が表示されます（例：**Retrying (attempt 2 of 2): 5 of 10 tasks complete; 2 running; 3 queued**）。

## 同期間隔（データの整合性）

データ統合戦略の一環として、元となるデータソースと同期先の間で、データの整合性を確保することが重要です。データパイプラインでエラーが発生した場合、またはジョブが中断された場合、データパイプラインプロセスを停止したところから再開する必要があります。この動作により、更新間やエラー発生時にデータが失われないことが保証されます。データ読み込みのための複雑なスクリプトやプロセスを設定することなく、CData Sync が自動的にそのアクションを管理します。

Sync は*同期間隔*に従ってデータを処理します。つまり、データをすべて一度に移動するのではなく、Sync がデータを扱いやすい間隔（またはデータの「チャンク」）に分割して、一度に1間隔ずつ処理します。この機能によって性能が大幅に向上し、エラーの際にもSync のデータの整合性が保たれます。Sync はデータソーステーブルと同期先テーブルを一致させます。エラーが起きた場合には、Sync は現在の間隔のデータをすべて捨ててその時点から処理を再開できます。

例えば、大規模なsync ジョブの完了間近にエラーが起きたとしましょう。Sync は最初からジョブ全体を開始するのではなく、最後に処理が完了した間隔から再開するので、時間とリソースを節約できます。

> [!NOTE]
>
> API によっては、一定期間内にアクセスできる回数を制限するアクセス制限を設けているものがあります。これらの制限により、エラーが発生することがあります。このようなエラーが発生した場合、Sync は不完全なsync レコードを破棄し、次にスケジュールされたジョブでその時点から再開します。間隔の大きさを設定し、各間隔で取得するデータ量を決定し、エラーが発生した場合に移動する必要があるデータ量を制限することができます。

## レプリケーションステータステーブル

Sync は、CDATA\_REPLICATE\_STATUS テーブルを使用して、各ジョブのレプリケーション状態を追跡します。このテーブルは、従来のレプリケーションステータステーブルに置き換わるものです。

* 新規インストールでは、CDATA\_REPLICATE\_STATUS が自動的に使用されます。
* 既存のインストールでは、Sync のUI で各ジョブを移行するよう求められます。既存のステータステーブルは、各ジョブが移行されるまで引き続き利用でき、移行の完了後に削除されます。

  > [!NOTE]
  >
  > * Sync が、既存のレプリケーションステータステーブルを現在の統合形式にアップグレードできることを検出すると、UI に通知が表示されます。ジョブレポートの改善（新しい**一部成功**タスクステータスなど）を活用するために、ステータステーブルのアップグレードをお勧めします。
  >
  > * カスタムレポートや自動化でレプリケーションステータステーブルを使用している場合は、移行後にそれらのプロセスを更新して、CDATA\_REPLICATE\_STATUS を参照するようにしてください。

## 削除キャプチャ

CData Sync は削除されたレコードを自動でキャプチャして、同期先データの精度を保ちます。Sync はAPI 呼び出しや**変更の追跡**機能を使用して、削除されたレコードのリストをデータソースから取得します。

データソースがSync に対して削除されたデータの検出を許可している場合は、[高度なジョブオプション](https://docs.sync.cdata.com/26.4/ja/jobs/advanced-job-options.md)で説明するように、**削除の挙動**オプションを使用してSync による削除の処理方法を制御できます。

* **Hard Delete**（デフォルトパラメータ）：データソースで削除が検出されると、Sync は同期先のテーブルからそのレコードを削除します。
* **Soft Delete**：Sync は同期先テーブルに **\_cdata\_deleted** カラムを追加します。データソースで削除が検出されると、Sync は同期先の値を**true** に設定します。
* **Skip Delete**：Sync はデータソースで削除されたレコードを無視します。

> [!NOTE]
>
> [データソース情報](https://docs.sync.cdata.com/26.4/ja/jobs/tasks/tasks.md#データソース情報)に記載されているとおり、API によっては削除されたレコードの検出をSync に許可しません。

## データ型

CData Sync は多くのデータ型を認識し、データ型が厳密に定義できない場合には、Sync はデータに基づいてデータ型を推論します。Sync は次のデータ型を認識します。

* Boolean
* Date
* Time
* TimeStamp
* Decimal
* Float
* Double
* SmallInt
* Integer
* Long
* Binary
* Varchar
* GUID

### 既知のデータ型

多くのデータソース（主にリレーショナルデータベース（SQL Server、Oracle など）および一部のAPI）について、Sync は自動的にスキーマ用のデータ型を検出します。データソースのカラムのデータ型が既知の場合、Sync は自動で一致するデータ型を同期先に作成します。

### 推論されたデータ型

データ型が指定されていない場合、Sync はカラムのデータ型を決定するためにデータの最初の数行を解析して、データ型を推論できます。

Sync が不明なカラムサイズの文字列型を検出した場合、カラムのデフォルトサイズは2000となります。SQL Server のようなリレーショナルデータベースでは、Sync はこの型用にvarchar(2000) フィールドを作成します。

データ型が厳密に定義されていないフィールドの場合、Sync は最初の行を読み取り、各カラムの最小のデータ型を自動的に選択します。その後、アプリケーションは次の行を読み取り、データが選択したデータ型で格納できるかを確認します。データが収まらない場合、Sync はデータ型のサイズを増やします。Sync は、これを行スキャンの深度（RowScanDepth - 50または100行）まで実行します。これが終了すると、Sync はデータ型を持っています。

例えば、CSV のようなデータソースでは、Sync は**RowScan** を使用してファイルの最初の数行を読み取り、動的に各カラムのデータ型を決定します。

## 変換

データパイプラインにおいて*変換*は、レポーティングやデータ分析を容易にするためにデータを加工、整形、集計する方法の1つです。Sync は、データパイプラインを構築する際にデータ変換を管理する2つの一般的な手法をサポートしています。

* **ETL：** *ETL（extract（抽出）、transform（変換）、load（ロード））処理*は数十年にわたってアナリティクスの伝統的な手法となっています。ETL は、歴史的に市場を席巻してきたリレーショナルデータベースでの使用を想定して考案されました。ETL では、レプリケーション処理の前に変換を行う必要があります。データはデータソースから抽出され、ステージングエリアに格納されます。データは整形、修飾、変換されてデータウェアハウスにロードされます。ETL についての詳細は、[In-Flight ETL](https://docs.sync.cdata.com/26.4/ja/transformations/etl.md)を参照してください。
* **ELT：** *ELT（extract（抽出）、load（ロード）、transform（変換））処理*は、変換などのデータの変更がレプリケーション処理後に行われるデータ抽出の手法です。現代のクラウドデータウェアハウスは膨大なストレージとスケーラビリティを備えているため、データすべてを移動して、その後修正を加えることができます。

  *ELT 変換*はデータの同期先で実行されるSQL スクリプトです。変換はデータウェアハウスの処理能力を使って、アナリティクスとレポーティング面でのニーズに基づき素早くデータを集計、結合、整形します。データを変換とマッピングで整理することで、パイプラインの移動に合わせてデータを最も役立つ形式で取得できます。ジョブ同様、変換はセミコロン（;）で区切られた複数のクエリをサポートし、スケジュールに従って実行し、変換の完了後にE メールアラートが送信されます。ELT についての詳細は、[Post-Job ELT](https://docs.sync.cdata.com/26.4/ja/transformations/post-job-elt/elt.md)を参照してください。

ETL とELT の主な違いは、手順を実行する順序です。

## 個人情報のマスキング

個人情報（PII）のマスキングは、データベースやデータテーブル内の機密情報のプライバシーとセキュリティを強化するデータ保護技術です。PII には、名前、住所、社会保障番号、その他個人を特定できるデータが含まれます。

マスキングは、PII を含む特定のカラム内の実際のデータを非表示にすることで、そのカラムへのアクセスを制限します。Sync においては、マスキングはポイントアンドクリックの変換オプションです。Sync でデータをマスクすると、データの各文字はアスタリスク（\*）に置き換えられます。マスキングは一方向の操作です。つまり、一度マスキングを適用すると、データを以前の状態に戻すことはできません。マスキングは、EU 一般データ保護規則（GDPR）、US 医療保険の相互運用性と説明責任に関する法律（HIPAA）など、個人情報や機密情報の安全な取り扱いを義務付けるデータ保護規制を遵守するために重要です。

マスキングおよびその他の変換オプションの詳細については、[SQL Transformation の適用](https://docs.sync.cdata.com/26.4/ja/transformations/etl.md#sql-transformation-の適用)を参照してください。

## ヒストリーモード

CData Sync のヒストリーモードは、データソース内の履歴データを分析するための方法を提供します。ヒストリーモードは、データウェアハウスの比較的静的なデータ（現在および履歴）を保存および管理する[*slowly changing dimension*](https://en.wikipedia.org/wiki/Slowly_changing_dimension)です。そのデータは、時間の経過とともにゆっくりと（しかし予測不可能に）変化することがあります。

CData では、ヒストリーモード（**ヒストリーモード**プロパティ）を使用してデータ行（レコード）の変更履歴を追跡し、データが時間の経過とともにどのように変化するかを確認できます。ヒストリーモードは、データソース接続が[差分レプリケーション](#差分レプリケーション)をサポートしている場合、すべてのCDC と標準ジョブで利用可能です。

CData は、履歴データを分析するための複合アプローチをサポートしています。つまり、**ヒストリーモード**プロパティは、監査のための堅牢な追跡と時系列分析の両方を提供します。

ヒストリーモードはテーブル単位で機能します。そのため、どのテーブルを分析するかを決定し、それらのテーブルに対してのみオプションを有効にできます。

標準（個別設定）モードでは、Sync は既存の行をマージして更新しますが、ヒストリーモードでは、Sync は更新された行をデータベースのテーブルに追加します。

### ヒストリーモードの種類

CData Sync はヒストリーモードに加えて、このモードと併用できる2つのオプション（**History Mode - Append Only** および**History Mode - Include Before Update**）を提供しています。どちらのオプションも履歴データを保持しますが、以前のバージョンのレコードをどのように扱うかが異なります。次のリストでは、ヒストリーモードと2つのオプションがレコードバージョンをどのように扱うかを説明しています：

* **ヒストリーモード：** このモードは、変更されたレコードの新しいバージョンを追加し、以前のバージョンのメタデータを更新して非アクティブとしてマークします。つまり、Sync はソースデータベーステーブルの各データレコードに対するデータ変更の完全な履歴を保持し、それらの変更バージョンを同期先データベーステーブルの対応するテーブルに記録します。
* **ヒストリーモード – 追記専用：** このオプションは、変更されたレコードの新しいバージョンを追加しますが、以前のバージョンやメタデータは更新しません。同期先の古い行は変更されません。**ヒストリーモード - 追記専用**は、Avro、CSV、Parquet の同期先で自動的に有効になります。他のすべての同期先では、手動で有効にする必要があります。
* **ヒストリーモード - Include Before Update：** このオプションを有効にすると、Sync は行の「更新前」のイメージをキャプチャします。その後、アプリケーションは更新ごとに追加のレコードを同期先に書き込みます。このオプションは、**ヒストリーモード - 追記専用**と併用する必要があります。

  このオプションをサポートされているCDC ソースで有効にすると、Sync は更新操作ごとに2つの行を書き込みます。1つは更新前のレコードの状態を表す行で、もう1つは更新後のレコードの状態を表す行です。これらの行は、`_cdatasync_operation` カラムに格納される値によって区別されます。

次の表は、ヒストリーモードとそれに関連するオプションの違いをまとめたものです：

| **機能** | **ヒストリーモード** | **ヒストリーモード – 追記専用** | **ヒストリーモード - Include Before Update** |
| :- | :-: | :-: | :-: |
| 変更されたレコードの新しいバージョンを追加 | ✓ | ✓ | ✓ |
| 古いバージョンのメタデータを更新 | ✓ | ✗ | ✓ |
| 以前のバージョンを変更しない | ✗ | ✓ | ✓ |

### ヒストリーモードのシステムカラム

ヒストリーモード機能を実現するために、Sync には同期先テーブルにシステムカラムを5つまで追加することができます。標準ジョブでは3つのカラム（`_cdatasync_active`、`_cdatasync_start`、`_cdatasync_end`）が使用されます。変更データキャプチャ（CDC）が有効な場合、データソースのオペレーションとバージョンメタデータを記録するために、さらに2つのカラム（`_cdatasync_operation`、`_cdatasync_version`）が作成されます。

次の表は、ヒストリーモードが有効な場合にSync が追加できるシステムカラムを説明しています。

<table>
  <thead>
    <tr>
      <th>カラム名</th>
      <th>カラム型</th>
      <th>説明</th>
      <th>カラムを使用するモードとオプション</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`_cdatasync_active`</td>
      <td>Boolean</td>
      <td>レコードがアクティブかどうかを指定します。</td>
      <td>標準（個別設定）モード、ヒストリーモード</td>
    </tr>

    <tr>
      <td>`_cdatasync_start`</td>
      <td>Datetime</td>
      <td>データレコードがアクティブになった時点の差分チェックカラムのdatetime 値を指定します。この値は、データ更新ごとに増加するタイムスタンプに基づいて、データソーステーブルでレコードが作成または修正された日時を示します。</td>
      <td>標準（個別設定）モード、ヒストリーモード、**ヒストリーモード - 追記専用**、**ヒストリーモード - Include Before Update**</td>
    </tr>

    <tr>
      <td>`_cdatasync_end`</td>
      <td>Datetime</td>
      <td>データレコードが非アクティブになった時点の差分チェックカラムのdatetime 値を指定します。このカラムのNull 値は、レコードがアクティブであることを示します。</td>
      <td>標準（個別設定）モード、ヒストリーモード</td>
    </tr>

    <tr>
      <td>`_cdatasync_operation`</td>
      <td>Varchar</td>
      <td>使用するオペレーションを指定します：Insert (I)、Update (U)、またはDelete (D)。**Note：**このカラムは、変更データキャプチャ（CDC）を使用するジョブにのみ追加されます。</td>
      <td>ヒストリーモード、**ヒストリーモード - 追記専用**、**ヒストリーモード - Include Before Update**</td>
    </tr>

    <tr>
      <td>`_cdatasync_version`</td>
      <td>Varchar(100)</td>
      <td>CSRS テーブルに保存されるフォーマットの変更ごとにバージョンを指定します。**Note：**このカラムは、CDC を使用する場合にのみ適用されます。</td>
      <td>**ヒストリーモード - 追記専用**</td>
    </tr>
  </tbody>
</table>

`_cdatasync_operation` カラムに表示される値は、ジョブの種類と有効になっているヒストリーモードのオプションによって異なります。

**標準またはSyncAll ジョブの場合：**

* **M：** マージ操作の一環として行を挿入または更新します。
* **D：** 行を削除します。

**変更データキャプチャ（CDC）ジョブの場合：**

* **I**（Insert）：この値は、行がソースシステムに挿入されたことを記録します。ソースの操作が判明している場合、Sync はこの値を使用して挿入イベントを記録します。
* **U**（Update）
* **D**（Delete）
* **BU**（Before Update）：**ヒストリーモード - Include Before Update**が有効な場合に、更新が発生する前の行の状態を表す値です。

### 制限事項

ヒストリーモードでは次の制約が適用されます。

* データソーステーブルは差分チェックカラムをサポートしている必要があります。
* ソーステーブルに主キーが含まれている必要があります。（**ヒストリーモード - 追記専用**の場合、主キーは必須ではありません。）
* 差分チェックカラムがタイムスタンプ（datetime）カラムである必要があります。
* 疑似カラムはレスポンスに値を持たず条件としてのみ使用されるため、差分チェックカラムを疑似カラムにすることはできません。
* 同期先テーブルは存在できません。（ヒストリーモードがアクティブな場合、**高度な設定**タブの**テーブルを削除**設定を使用してテーブルを再作成します。）

### ジョブおよびタスクの**ヒストリーモード**を有効化する

ジョブの**ヒストリーモード**を有効にするには：

1. **ジョブ**タブをクリックして**ジョブ**ページを開きます。
2. ジョブ名をクリックして概要ページを開きます。次に、**高度な設定**タブをクリックします。
3. **レプリケートオプション**カテゴリで、**レプリケートオプションを編集**アイコン（![レプリケートオプションを編集アイコン](https://mintcdn.com/cdata-sync/kdVWT2jSQXwgtx6Q/26.4/images/Jobs_comments-tab_1.png?fit=max\&auto=format\&n=kdVWT2jSQXwgtx6Q\&q=85\&s=74e1dfa5493a8133bb5c91756b2f2d0a)）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。
4. **ヒストリーモード**オプションまでスクロールします。**ヒストリーモード**オプションを有効にするには、**有効化**を選択します。有効にすると、Sync はデータソースで発生するすべての変更に対してタイムスタンプ付きのエントリを同期先に追加します。（オプションを無効にする場合は、**有効化**チェックボックスをオフにします。）
5. **保存**をクリックします。

タスクの**ヒストリーモード**を有効にするには：

1. ジョブの**タスク**タブをクリックします。

2. 変更するタスクの名前をクリックします。次に、**高度な設定**タブをクリックします。

3. **レプリケートオプション**カテゴリで、**編集**アイコン（![編集アイコン](https://mintcdn.com/cdata-sync/kdVWT2jSQXwgtx6Q/26.4/images/Jobs_comments-tab_1.png?fit=max\&auto=format\&n=kdVWT2jSQXwgtx6Q\&q=85\&s=74e1dfa5493a8133bb5c91756b2f2d0a)）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。

4. **ヒストリーモード**オプションまでスクロールします。タスクは、関連するジョブの**ヒストリーモード**ステータスを継承します。

   * **ヒストリーモード**のステータスが**有効化済み（継承）** に設定されている場合、その設定をオーバーライドしない限り変更は必要ありません。
   * **ヒストリーモード**が**未有効化（継承）** でこのタスクに対して有効にしたい場合は、ダイアログボックスの上部にスクロールして**ジョブ設定をオーバーライド**を選択します。その後、**ヒストリーモード**に戻り、**有効化**を選択します。

   > [!NOTE]
   >
   > 関連するテーブルが差分チェックカラムをサポートしていない場合、タスク設定でヒストリーモードは無効になります。

5. **保存**をクリックします。

### ジョブおよびタスクの**ヒストリーモード - 追記専用**を有効化する

ジョブまたはタスクで**History Mode - Append Only** オプションを使用するには、[まず**ヒストリーモード**を有効にしてから](#ジョブおよびタスクのヒストリーモードを有効化する)、**History Mode – Append Only** を有効にする必要があります。

ジョブの**ヒストリーモード - 追記専用**を有効にするには：

1. **ジョブ**タブをクリックして**ジョブ**ページを開きます。

2. ジョブ名をクリックして概要ページを開きます。次に、**高度な設定**タブをクリックします。

3. **レプリケートオプション**カテゴリで、**レプリケートオプションを編集**アイコン（![レプリケートオプションを編集アイコン](https://mintcdn.com/cdata-sync/kdVWT2jSQXwgtx6Q/26.4/images/Jobs_comments-tab_1.png?fit=max\&auto=format\&n=kdVWT2jSQXwgtx6Q\&q=85\&s=74e1dfa5493a8133bb5c91756b2f2d0a)）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。

4. **ヒストリーモード**オプションまでスクロールし、すでに有効になっていることを確認します（オプションラベルが**有効化済み（継承）** と表示されているはずです）。有効になっていない場合は、手順5に進む前に[ジョブのヒストリーモードを有効にする手順](#ジョブおよびタスクのヒストリーモードを有効化する)を実行してください。

   > [!NOTE]
   >
   > 関連するテーブルが差分チェックカラムをサポートしていない場合、タスク設定でヒストリーモードは無効になります。

5. **レプリケートオプションを編集**ダイアログボックスの下部にある**追加オプション**テキストボックスまでスクロールし、`HistoryModeAppendOnly=true` オプションを**追加オプション**テキストボックスに入力します。

   ![ジョブ用のHistoryModeAppendOnly オプションを示すレプリケートオプションを編集ダイアログボックス](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_enable-history-mode-for-jobs-and-tasks_1.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=e2b7ecea42e419a9269c3c8e47028833)

6. **保存**をクリックします。

タスクの**ヒストリーモード - 追記専用**を有効にするには：

1. ジョブの**タスク**タブをクリックします。

2. 設定するタスクの名前をクリックします。次に、**高度な設定**タブをクリックします。

3. **レプリケートオプション**カテゴリで、**編集**アイコン（![編集アイコン](https://mintcdn.com/cdata-sync/kdVWT2jSQXwgtx6Q/26.4/images/Jobs_comments-tab_1.png?fit=max\&auto=format\&n=kdVWT2jSQXwgtx6Q\&q=85\&s=74e1dfa5493a8133bb5c91756b2f2d0a)）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。

4. **ヒストリーモード**オプションまでスクロールし、すでに有効になっていることを確認します（オプションラベルが**有効化済み（継承）** と表示されているはずです）。有効になっていない場合は、手順5に進む前に[ジョブおよびタスクのヒストリーモードを有効にする手順](#ジョブおよびタスクのヒストリーモードを有効化する)を実行してください。

   > [!NOTE]
   >
   > 関連するテーブルが差分チェックカラムをサポートしていない場合、タスク設定でヒストリーモードは無効になります。

5. **レプリケートオプションを編集**ダイアログボックスの下部にある**追加オプション**テキストボックスまでスクロールし、`HistoryModeAppendOnly=true` オプションを**追加オプション**テキストボックスに入力します。

   ![タスク用のHistoryModeAppendOnly オプションを示すレプリケートオプションを編集ダイアログボックス](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_enable-history-mode-for-jobs-and-tasks_2.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=989990b779c4e960fa3618302c9f26a3)

6. **保存**をクリックします。

### ジョブおよびタスクの**ヒストリーモード - Include Before Update** を有効化する

**History Mode - Include Before Update** オプションを使用すると、行の「更新前」のイメージをキャプチャできます。このオプションを有効にすると、Sync は更新ごとに追加のレコードを同期先に書き込みます。**History Mode - Include Before Update** は、次の両方の条件が満たされている場合にのみ適用されます：

* **History Mode - Append Only** モード（`HistoryModeAppendOnly=true`）を使用している。
* ソースがCDC を使用している。

ジョブで**History Mode - Include Before Update** を有効にするには：

1. **ジョブ**タブをクリックして**ジョブ**ページを開きます。

2. ジョブ名をクリックして概要ページを開きます。次に、**高度な設定**タブをクリックします。

3. 以下のセクションの手順に従って、**ヒストリーモード**と**History Mode - Append Only** が有効になっていることを確認します：

   * [History Mode](#ジョブおよびタスクのヒストリーモードを有効化する)
   * [History Mode – Append Only](#ジョブおよびタスクのヒストリーモード---追記専用を有効化する)

   > [!NOTE]
   >
   > **History Mode - Include Before Update** をtrue（`HistoryModeIncludeBeforeUpdate=true`）に設定しても**History Mode - Append Only** を有効にしていない場合、Sync は`HistoryModeIncludeBeforeUpdate` が`HistoryModeAppendOnly=true` が有効な場合にのみ使用できる旨を示すエラーを生成します。

4. ジョブの**高度な設定**タブで、**レプリケートオプション**カテゴリの**編集**アイコン（![編集アイコン](https://mintcdn.com/cdata-sync/kdVWT2jSQXwgtx6Q/26.4/images/Jobs_comments-tab_1.png?fit=max\&auto=format\&n=kdVWT2jSQXwgtx6Q\&q=85\&s=74e1dfa5493a8133bb5c91756b2f2d0a)）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。

   ダイアログボックスで、**ヒストリーモード**と**History Mode - Append Only** の両方が有効になっていることを確認します。

5. 以下に示すように、`HistoryModeIncludeBeforeUpdate=true` オプションを**追加オプション**テキストボックスに入力します：

   ![HistoryModeIncludeBeforeUpdate オプションを示すレプリケートオプションを編集ダイアログボックス](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_enable-history-mode-include-before-update_1.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=10c7235acf8e8b392175b343fcff0009)

6. **保存**をクリックします。

タスクで**History Mode - Include Before Update** を有効にするには：

1. ジョブの**タスク**タブをクリックします。

2. 設定するタスクの名前をクリックします。次に、**高度な設定**タブをクリックします。

3. 以下のセクションの手順に従って、**ヒストリーモード**と**History Mode - Append Only** が有効になっていることを確認します：
   * [History Mode](#ジョブおよびタスクのヒストリーモードを有効化する)
   * [History Mode – Append Only](#ジョブおよびタスクのヒストリーモード---追記専用を有効化する)

4. ジョブの**高度な設定**タブで、**レプリケートオプション**カテゴリの**編集**アイコン（![編集アイコン](https://mintcdn.com/cdata-sync/kdVWT2jSQXwgtx6Q/26.4/images/Jobs_comments-tab_1.png?fit=max\&auto=format\&n=kdVWT2jSQXwgtx6Q\&q=85\&s=74e1dfa5493a8133bb5c91756b2f2d0a)）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。

   ダイアログボックスで、**ヒストリーモード**と**History Mode - Append Only** の両方が有効になっていることを確認します。

5. 以下に示すように、`HistoryModeIncludeBeforeUpdate=true` オプションを**追加オプション**テキストボックスに入力します：

   ![HistoryModeIncludeBeforeUpdate オプションを示すレプリケートオプションを編集ダイアログボックス](https://mintcdn.com/cdata-sync/4njnJgdQs2eFHAEE/26.4/images/Features_enable-history-mode-include-before-update_1.png?fit=max\&auto=format\&n=4njnJgdQs2eFHAEE\&q=85\&s=10c7235acf8e8b392175b343fcff0009)

6. **保存**をクリックします。

**History Mode - Include Before Update** が、更新前のイメージをサポートするCDC ソースで有効になっている場合、Sync は更新ごとに2つの行を書き込みます：

* 更新前の状態を表す行。`_cdatasync_operation` は**BU** に設定されます。
* 更新後の状態を表す行。`_cdatasync_operation` は**U** に設定されます。

### データソーステーブルを変更した場合の影響

行を挿入、更新、削除してデータソーステーブルを変更すると、次の表で説明するように、同期先はさまざまな形で影響を受けます。

<table>
  <thead>
    <tr>
      <th>データソースの変更</th>
      <th>同期先の影響</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>挿入された行</td>
      <td>同期先テーブルに行が追加されます。`_cdatasync_active` は`True` に設定され、`_cdatasync_start` は差分チェックカラムの値に設定されます。</td>
    </tr>

    <tr>
      <td>更新された行</td>

      <td>
        <ul>
          <li>同期先テーブルの現在の行が更新されます。`_cdatasync_active` は`False` に設定され、`_cdatasync_end` は差分チェックカラムの値に設定されます。</li>
          <li>同期先テーブルに新しい行が挿入されます。`_cdatasync_active` は`True` に設定され、`_cdatasync_start` は差分チェックカラムの値に設定されます。</li>
        </ul>
      </td>
    </tr>

    <tr>
      <td>削除された行</td>
      <td>同期先の現在の行が更新されます。`_cdatasync_active` は`False` に設定されます。</td>
    </tr>
  </tbody>
</table>

**History Mode - Include Before Update** がサポートされているCDC ソースで有効になっている場合、更新が発生する前のレコードの状態を表す追加の行が更新ごとに書き込まれます。この行は、`_cdatasync_operation` を**BU** に設定して記録されます。

## API 接続

CData Sync にはビルトインのREST（representational state transfer） API が含まれており、アプリケーションの柔軟な管理を実現します。管理コンソールのUI で実現できることはすべて、RESTful API コールで実現できます。

Sync は2つのREST API バージョンを提供します：

* [Sync API V2](https://docs.sync.cdata.com/26.4/ja/rest-api/rest-api.md#sync-api-v2) は、7つのAPI で構成されています：
  * 接続管理API
  * イベント管理API
  * ジョブ管理API
  * パイプライン管理API
  * 変換管理API
  * ユーザー管理API
  * ワークスペース管理API
* [Sync API V1](https://docs.sync.cdata.com/26.4/ja/rest-api/rest-api.md#sync-api-v1) は、3つのAPI で構成されています：
  * ジョブ管理API
  * 接続管理API
  * ユーザー管理API

API 接続についての詳細は、[REST API](https://docs.sync.cdata.com/26.4/ja/rest-api/rest-api.md)も参照してください。

## In-Network インストール

CData Sync はどこでも実行できるため、クラウド上にあるシステムと社内ネットワーク上にあるシステムを持つユーザーにとって最適なアプリケーションです。Sync をインストールしてネットワーク内で実行できるため、インターネットや開いたファイアウォール経由でポートが公開されたり、VPN 接続を作成したりすることを回避できます。

また、Sync アプリケーションをどこでも実行できることで、遅延を大幅に削減することができます。データソースや同期先の近くでSync を実行できるため、ETL やELT ジョブのパフォーマンスが向上します。

## スキーマの変更

データは常に変化していますが、Sync はそれらの変化を常に正確に表すことを保証します。毎実行時、CData Sync はデータソースのスキーマと同期先のスキーマを比較して差分を検出します。Sync が2つのスキーマ間で構造の違いを検出した場合、アプリケーションは同期先のスキーマを変更し、以下で説明するようにデータソースのデータを格納できるようにします。

* データソーステーブルに同期先テーブルに存在しないカラムが含まれている場合、Sync はカラムを追加することで同期先テーブルを変更します。
* データソーステーブルのデータ型のサイズが増える場合、Sync はカラムのサイズを更新することで同期先テーブルを変更します。Sync は、文字列カラムのカラムサイズを増やしたり（例：varchar(255) -> varchar(2000)）、非文字列カラムのバイトサイズを増やす（例：smallint -> integer）、といった変更を行います。

**Notes：**

* Sync は、カラムがデータソーステーブルから削除されている場合でも、同期先テーブルからはカラムを削除しません。
* Sync は、データソースでデータ型のサイズが更新された場合でも（varchar(2000) -> varchar(255)）、同期先カラムのサイズは小さくしません。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.