> ## 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.

# 機能

export const siteNameShortLower = "sync";

export const companyNameLower = "cdata";

export const companyName = "CData";

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

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

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

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

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

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

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

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

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

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

<Note>In the user interface, the settings that control incremental replication are configured through snapshot settings on the **Overview** tab for your job.</Note>

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

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

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

Replication that uses an incremental check column relies on a column whose values increase over time as records are added or updated. This column aligns with the [value type that you select in **Snapshot Settings**](./configuring-jobs#snapshot-settings-for-standard-and-sync-all-jobs) (mentioned earlier).

* **Date-based incremental check columns：** A datetime column (such as **Last Modified** or **Date Updated**) that records when a row was last changed. {siteNameShort} uses this value to retrieve records that were added or updated after the last replication.
* **Number-based incremental check columns：** A numeric column (such as an auto-incrementing identifier or a rowversion-type column) whose value increases as new records are created or updated. {siteNameShort} uses this value to retrieve records whose values are greater than or equal to the last processed value.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## 並列処理

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

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

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

2. **概要**タブの**設定**カテゴリで、**設定を編集**アイコン（<img style={{display: "inline", verticalAlign: "middle", margin: "0"}} src="https://mintcdn.com/cdata-sync/93zzHp_-s2rI0TUA/images/Features_edit-icon.png?fit=max&auto=format&n=93zzHp_-s2rI0TUA&q=85&s=227b4b0dc0336f29b8fa71a9f86f78d2" alt="Edit Settings icon" width="19" height="16" data-path="images/Features_edit-icon.png" />）をクリックします。これにより、**設定を編集**ダイアログボックスが開きます。

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

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

   <img src="https://mintcdn.com/cdata-sync/93zzHp_-s2rI0TUA/images/Features_parallel-processing_1.png?fit=max&auto=format&n=93zzHp_-s2rI0TUA&q=85&s=f4e046182f1c166e14c5ad2be0c224e5" width="450" alt="Edit Settings dialog box showing Parallel Processing option" data-path="images/Features_parallel-processing_1.png" />

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

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

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

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

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

<img src="https://mintcdn.com/cdata-sync/93zzHp_-s2rI0TUA/images/Features_metadata-caching_1.png?fit=max&auto=format&n=93zzHp_-s2rI0TUA&q=85&s=a69cdae8871e082a09723614331e31e4" width="600" alt="Metadata Caching section on the New Connection page" data-path="images/Features_metadata-caching_1.png" />

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

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

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

<img src="https://mintcdn.com/cdata-sync/93zzHp_-s2rI0TUA/images/Features_metadata-caching_2.png?fit=max&auto=format&n=93zzHp_-s2rI0TUA&q=85&s=e4bc97a398aee1c57553e1fbdbfec38f" width="600" alt="Metadata Caching section showing note for unsupported connector" data-path="images/Features_metadata-caching_2.png" />

<Note>キャッシュされたメタデータは、すべてのスキーマ変更をリアルタイムで自動検出するわけではないため、データソースまたは同期先テーブルの構造が変更された際は、{siteNameShort} ジョブでキャッシュをリフレッシュする必要があります。例えば、カラムの追加、削除、またはデータ型の変更が行われた場合は、**リフレッシュ**ボタン（<img style={{display: "inline", verticalAlign: "-3px", margin: "0"}} src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Job_Refresh_button.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=b3c4e7562e0f4dffb4f1ced6bae63eb6" alt="Refresh button" width="18" height="17" data-path="images/Job_Refresh_button.png" />）をクリックしてキャッシュを更新し、{siteNameShort} がスキーマの最新の状態を把握できるようにしてください。この方法により、レプリケーションエラーを防ぎ、変換、マッピング、検証が正確に適用されることを確実にします。</Note>

## ジョブの自動再試行

{siteName} は、タスクエラーやネットワークの問題などで、1つ以上のタスクが失敗した場合にジョブの再試行を試みる**ジョブの自動再試行**機能を提供します。**ジョブの自動再試行**処理は、ジョブ内の失敗したタスクにのみ適用されます。例えば、1つのタスクが失敗した場合、プロセスはその1つのタスクのみを再試行します。

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

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

1. ジョブページでジョブの名前をクリック（または\*\*... > 編集\*\*を選択）して、***任意のジョブ名* の設定**ページを開きます。
2. **概要**タブの**設定**カテゴリで、**設定を編集**アイコン（<img style={{display: "inline", verticalAlign: "middle", margin: "0"}} src="https://mintcdn.com/cdata-sync/93zzHp_-s2rI0TUA/images/Features_edit-icon.png?fit=max&auto=format&n=93zzHp_-s2rI0TUA&q=85&s=227b4b0dc0336f29b8fa71a9f86f78d2" alt="Edit Settings icon" width="19" height="16" data-path="images/Features_edit-icon.png" />）をクリックします。これにより、**設定を編集**ダイアログボックスが開きます。
3. **ジョブの自動再試行**設定の**有効化**チェックボックスを選択します。次に、**保存**をクリックして設定の更新を保存します。

   <img src="https://mintcdn.com/cdata-sync/93zzHp_-s2rI0TUA/images/Features_automatic-job-retry_1.png?fit=max&auto=format&n=93zzHp_-s2rI0TUA&q=85&s=399c8b5a68708f78fdfa4a537538f99d" width="450" alt="Edit Settings dialog box showing Automatic Job Retry option" data-path="images/Features_automatic-job-retry_1.png" />

失敗したジョブに対して**ジョブの自動再試行**処理が実行されたら、ジョブの詳細（**... > 実行の詳細 > タスク**）で再試行に関する情報を確認することができます。

* 再試行に成功すると、`再試行に成功しました`というメッセージが、失敗していたタスクの**最後の実行**カラムに表示されます。
* 再試行に失敗すると、`再試行に失敗しました`というメッセージが、失敗したタスクの横の**最後の実行**カラムに表示されます。さらに、失敗した各タスクには**詳細を表示**リンクが表示されます。**詳細を表示**の左側にある下矢印をクリックすると、以下の例に示すように、失敗の詳細を含むエラーメッセージが表示されます：

  <img src="https://mintcdn.com/cdata-sync/I6gJ4qR9mocXqHNN/images/Features_automatic-job-retry_2.png?fit=max&auto=format&n=I6gJ4qR9mocXqHNN&q=85&s=24a8c8f1fca1928bb4f5f2e51cbc0542" alt="Job task details showing RETRY FAILED status and View Details link" width="1506" height="658" data-path="images/Features_automatic-job-retry_2.png" />

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

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

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

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

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

## 削除キャプチャ

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

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

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

<Note>[データソース情報](../jobs/tasks/tasks#source-information)に記載されているとおり、API によっては削除されたレコードの検出を{siteNameShort} に許可しません。</Note>

## データ型

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

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

### 既知のデータ型

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

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

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

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

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

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

## 変換

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

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

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

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

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

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

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

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

## ヒストリーモード

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

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

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

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

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

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

{siteName} offers history mode as well as two options (**History Mode - Append Only** and **History Mode - Include Before Update**) that you can use with the mode. どちらのオプションも履歴データを保持しますが、以前のバージョンのレコードをどのように扱うかが異なります。次のリストでは、ヒストリーモードと2つのオプションがレコードバージョンをどのように扱うかを説明しています：

* **ヒストリーモード：** このモードは、変更されたレコードの新しいバージョンを追加し、以前のバージョンのメタデータを更新して非アクティブとしてマークします。つまり、{siteNameShort} はソースデータベーステーブルの各データレコードに対するデータ変更の完全な履歴を保持し、それらの変更バージョンを同期先データベーステーブルの対応するテーブルに記録します。
* **ヒストリーモード – 追記専用：** このオプションは、変更されたレコードの新しいバージョンを追加しますが、以前のバージョンやメタデータは更新しません。同期先の古い行は変更されません。**ヒストリーモード - 追記専用**は、Avro、CSV、Parquet の同期先で自動的に有効になります。他のすべての同期先では、手動で有効にする必要があります。
* **History Mode - Include Before Update:** When you enable this option, {siteNameShort} captures the "before update" image of a row. Then, the application writes an additional record to the destination for each update. This option must be used in conjunction with **History Mode - Append Only**.

  When this option is enabled on supported CDC sources, {siteNameShort} writes two rows for each update operation: one row that represents the state of the record before the update and another row that represents the state of the record after the update. These rows are distinguished by the value that is stored in the `_cdatasync_operation` column.

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

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

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

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

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

<table>
  <thead>
    <tr>
      <th style={{textAlign: "center", whiteSpace: "nowrap"}}>カラム名</th>
      <th style={{textAlign: "center", whiteSpace: "nowrap"}}>カラム型</th>
      <th>説明</th>
      <th>カラムを使用するモードとオプション</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td style={{textAlign: "center", whiteSpace: "nowrap"}}><code style={{padding: "0"}}>\_cdatasync\_active</code></td>
      <td style={{textAlign: "center"}}>Boolean</td>
      <td>レコードがアクティブかどうかを指定します。</td>
      <td>標準（個別設定）モード、ヒストリーモード</td>
    </tr>

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

    <tr>
      <td style={{textAlign: "center", whiteSpace: "nowrap"}}><code style={{padding: "0"}}>\_cdatasync\_end</code></td>
      <td style={{textAlign: "center"}}>Datetime</td>
      <td>データレコードが非アクティブになった時点の差分チェックカラムのdatetime 値を指定します。このカラムのNull 値は、レコードがアクティブであることを示します。</td>
      <td>標準（個別設定）モード、ヒストリーモード</td>
    </tr>

    <tr>
      <td style={{textAlign: "center", whiteSpace: "nowrap"}}><code style={{padding: "0"}}>\_cdatasync\_operation</code></td>
      <td style={{textAlign: "center"}}>Varchar</td>
      <td>使用するオペレーションを指定します：Insert (I)、Update (U)、またはDelete (D)。<strong>Note：</strong>このカラムは、変更データキャプチャ（CDC）を使用するジョブにのみ追加されます。</td>
      <td>ヒストリーモード、<strong>ヒストリーモード - 追記専用</strong>、<strong>ヒストリーモード - Include Before Update</strong></td>
    </tr>

    <tr>
      <td style={{textAlign: "center", whiteSpace: "nowrap"}}><code style={{padding: "0"}}>\_cdatasync\_version</code></td>
      <td style={{textAlign: "center"}}>Varchar(100)</td>
      <td>CSRS テーブルに保存されるフォーマットの変更ごとにバージョンを指定します。<strong>Note：</strong>このカラムは、CDC を使用する場合にのみ適用されます。</td>
      <td><strong>ヒストリーモード - 追記専用</strong></td>
    </tr>
  </tbody>
</table>

The value that appears in the `_cdatasync_operation` column depends on the job type and the History Mode options that are enabled.

**For standard or SyncAll jobs:**

* **M：** Inserts or updates a row as part of a merge operation.
* **D：** Deletes a row.

**For Change Data Capture jobs:**

* **I** (Insert): This value records that the row was inserted in the source system. When the source operation is known, {siteNameShort} records insert events using this value.
* **U** (Update)
* **D** (Delete)
* **BU** (Before Update): This value represents the state of the row before an update occurs when **History Mode - Include Before Update** is enabled.

### 制限事項

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

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

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

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

1. **ジョブ**タブをクリックして**ジョブ**ページを開きます。
2. ジョブ名をクリックして概要ページを開きます。次に、**高度な設定**タブをクリックします。
3. **レプリケートオプション**カテゴリで、**レプリケートオプションを編集**アイコン（<img style={{display: "inline", verticalAlign: "-3px", margin: "0"}} src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Jobs_comments-tab_1.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=0018fb37e2a04eccdb130acc51d8e1c5" alt="Edit Replicate Options icon" width="17" height="16" data-path="images/Jobs_comments-tab_1.png" />）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。
4. **ヒストリーモード**オプションまでスクロールします。**ヒストリーモード**オプションを有効にするには、**有効化**を選択します。有効にすると、{siteNameShort} はデータソースで発生するすべての変更に対してタイムスタンプ付きのエントリを同期先に追加します。（オプションを無効にする場合は、**有効化**チェックボックスをオフにします。）
5. **保存**をクリックします。

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

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

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

3. **レプリケートオプション**カテゴリで、**編集**アイコン（<img style={{display: "inline", verticalAlign: "-3px", margin: "0"}} src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Jobs_comments-tab_1.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=0018fb37e2a04eccdb130acc51d8e1c5" alt="Edit icon" width="17" height="16" data-path="images/Jobs_comments-tab_1.png" />）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。

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

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

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

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

<a id="enable-history-mode-append-only-for-jobs-and-tasks" />

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

To use the **History Mode - Append Only** option for either a job or a task, you must [first enable **History Mode**](#ジョブおよびタスクのヒストリーモードを有効化する) and then enable **History Mode – Append Only**.

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

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

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

3. **レプリケートオプション**カテゴリで、**レプリケートオプションを編集**アイコン（<img style={{display: "inline", verticalAlign: "-3px", margin: "0"}} src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Jobs_comments-tab_1.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=0018fb37e2a04eccdb130acc51d8e1c5" alt="Edit Replicate Options icon" width="17" height="16" data-path="images/Jobs_comments-tab_1.png" />）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。

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

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

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

   <img src="https://mintcdn.com/cdata-sync/93zzHp_-s2rI0TUA/images/Features_enable-history-mode-for-jobs-and-tasks_1.png?fit=max&auto=format&n=93zzHp_-s2rI0TUA&q=85&s=6ab12a7fa1b310986292928e0416beef" width="450" alt="Edit Replicate Options dialog box showing HistoryModeAppendOnly option for a job" data-path="images/Features_enable-history-mode-for-jobs-and-tasks_1.png" />

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

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

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

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

3. **レプリケートオプション**カテゴリで、**編集**アイコン（<img style={{display: "inline", verticalAlign: "-3px", margin: "0"}} src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Jobs_comments-tab_1.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=0018fb37e2a04eccdb130acc51d8e1c5" alt="Edit icon" width="17" height="16" data-path="images/Jobs_comments-tab_1.png" />）をクリックし、**レプリケートオプションを編集**ダイアログボックスを開きます。

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

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

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

   <img src="https://mintcdn.com/cdata-sync/I6gJ4qR9mocXqHNN/images/Features_enable-history-mode-for-jobs-and-tasks_2.png?fit=max&auto=format&n=I6gJ4qR9mocXqHNN&q=85&s=4459fc71a5f38d553f1eafaf5cdf4a6c" width="450" alt="Edit Replicate Options dialog box showing HistoryModeAppendOnly option for a task" data-path="images/Features_enable-history-mode-for-jobs-and-tasks_2.png" />

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

<a id="enable-history-mode-include-before-update-for-jobs-and-tasks" />

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

You can capture the "before update" image of a row by using the **History Mode - Include Before Update** option. When you enable this option, {siteNameShort} writes an additional record to the destination for each update. **History Mode - Include Before Update** applies only when both of the following criteria are true:

* You use the **History Mode - Append Only** mode (`HistoryModeAppendOnly=true`)
* The source uses CDC.

To enable the **History Mode - Include Before Update** for a job:

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

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

3. Ensure that **History Mode** and **History Mode - Append Only** are enabled by following the steps in the following sections:

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

   <Note><span>If you set <strong>History Mode - Include Before Update</strong> to true (<code style={{padding: "0"}}>HistoryModeIncludeBeforeUpdate=true</code>) but do not enable <strong>History Mode - Append Only</strong>, {siteNameShort} generates an error specifying that <code style={{padding: "0"}}>HistoryModeIncludeBeforeUpdate</code> can be used only when the <code style={{padding: "0"}}>HistoryModeAppendOnly=true</code> is enabled.</span></Note>

4. On the **Advanced** tab for your job, click the **Edit** icon (<img style={{display: "inline", verticalAlign: "-3px", margin: "0"}} src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Jobs_comments-tab_1.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=0018fb37e2a04eccdb130acc51d8e1c5" alt="Edit icon" width="17" height="16" data-path="images/Jobs_comments-tab_1.png" />) for the **Replicate Options** category to open the **Edit Replicate Options** dialog box.

   In the dialog box, verify that both **History Mode** and **History Mode - Append Only** are enabled.

5. Enter the option `HistoryModeIncludeBeforeUpdate=true` into the **Additional Options** text box, as shown below:

   <img src="https://mintcdn.com/cdata-sync/93zzHp_-s2rI0TUA/images/Features_enable-history-mode-include-before-update_1.png?fit=max&auto=format&n=93zzHp_-s2rI0TUA&q=85&s=9512c1fcfeb92faa7154b2bd0652ab3f" width="450" alt="Edit Replicate Options dialog box showing HistoryModeIncludeBeforeUpdate option" data-path="images/Features_enable-history-mode-include-before-update_1.png" />

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

To enable **History Mode - Include Before Update** for a task:

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

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

3. Ensure that **History Mode** and **History Mode - Append Only** are enabled by following the steps in the following sections:
   * [History Mode](#ジョブおよびタスクのヒストリーモードを有効化する)
   * [History Mode – Append Only](#ジョブおよびタスクのヒストリーモード---追記専用を有効化する)

4. On the **Advanced** tab for your job, click the **Edit** icon (<img style={{display: "inline", verticalAlign: "-3px", margin: "0"}} src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Jobs_comments-tab_1.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=0018fb37e2a04eccdb130acc51d8e1c5" alt="Edit icon" width="17" height="16" data-path="images/Jobs_comments-tab_1.png" />) for the **Replicate Options** category to open the **Edit Replicate Options** dialog box.

   In the dialog box, verify that both **History Mode** and **History Mode - Append Only** are enabled.

5. Enter the option `HistoryModeIncludeBeforeUpdate=true` into the **Additional Options** text box, as shown below:

   <img src="https://mintcdn.com/cdata-sync/93zzHp_-s2rI0TUA/images/Features_enable-history-mode-include-before-update_1.png?fit=max&auto=format&n=93zzHp_-s2rI0TUA&q=85&s=9512c1fcfeb92faa7154b2bd0652ab3f" width="450" alt="Edit Replicate Options dialog box showing HistoryModeIncludeBeforeUpdate option" data-path="images/Features_enable-history-mode-include-before-update_1.png" />

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

When **History Mode - Include Before Update** is enabled on a CDC source that supports before-update images, {siteNameShort} writes two rows for each update:

* A row representing the state before the update, where `_cdatasync_operation` is set to **BU**.
* A row representing the state after the update, where `_cdatasync_operation` is set to **U**.

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

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

<table>
  <thead>
    <tr>
      <th style={{width: "20%"}}>データソースの変更</th>
      <th>同期先の影響</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td style={{textAlign: "center"}}>挿入された行</td>
      <td>同期先テーブルに行が追加されます。<code style={{padding: "0"}}>\_cdatasync\_active</code> は<code style={{padding: "0"}}>True</code> に設定され、<code style={{padding: "0"}}>\_cdatasync\_start</code> は差分チェックカラムの値に設定されます。</td>
    </tr>

    <tr>
      <td style={{textAlign: "center"}}>更新された行</td>

      <td>
        <ul>
          <li>同期先テーブルの現在の行が更新されます。<code style={{padding: "0"}}>\_cdatasync\_active</code> は<code style={{padding: "0"}}>False</code> に設定され、<code style={{padding: "0"}}>\_cdatasync\_end</code> は差分チェックカラムの値に設定されます。</li>
          <li>同期先テーブルに新しい行が挿入されます。<code style={{padding: "0"}}>\_cdatasync\_active</code> は<code style={{padding: "0"}}>True</code> に設定され、<code style={{padding: "0"}}>\_cdatasync\_start</code> は差分チェックカラムの値に設定されます。</li>
        </ul>
      </td>
    </tr>

    <tr>
      <td style={{textAlign: "center"}}>削除された行</td>
      <td>同期先の現在の行が更新されます。<code style={{padding: "0"}}>\_cdatasync\_active</code> は<code style={{padding: "0"}}>False</code> に設定されます。</td>
    </tr>
  </tbody>
</table>

When **History Mode - Include Before Update** is enabled on supported CDC sources, an additional row is written for each update that represents the state of the record before the update occurs. This row is recorded with `_cdatasync_operation` set to **BU**.

## API 接続

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

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

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

API 接続についての詳細は、[REST API](../rest-api/rest-api)も参照してください。

## In-Network インストール

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

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

## スキーマの変更

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

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

**Notes：**

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