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

# PostgreSQL

CData Sync アプリケーションからPostgreSQL コネクタを使用して、PostgreSQL からデータを取得してサポートされている任意の同期先に移動できます。これを行うには、コネクタを追加し、コネクタへの認証を行い、接続を完了する必要があります。

## PostgreSQL コネクタを追加する

Sync でPostgreSQL のデータを使用できるようにするには、まず以下の手順でコネクタを追加する必要があります：

<ol>
  <li>Sync のダッシュボードから**接続**ページを開きます。</li>
  <li>**接続を追加**をクリックして**コネクタを選択**ページを開きます。</li>
  <li>**データソース**タブをクリックして
  **PostgreSQL** 行に移動します。</li>

  <li>
    行末にある**接続を設定**アイコンをクリックして、**新しい接続**ページを開きます。この操作により、
    **接続を追加**ダイアログボックスが開きます。

    **Note：** **接続を設定**アイコンが表示されない場合は、**コネクタをダウンロード**アイコンをクリックして PostgreSQL コネクタをインストールしてください。
  </li>

  <li>**接続を追加**ダイアログボックスに接続名を入力します。</li>
  <li>**追加**をクリックして、コネクタの**設定**タブを開きます。</li>
</ol>

新しいコネクタのインストールについての詳細は、
[接続](https://docs.sync.cdata.com/26.4/ja/connections/connections.md)を参照してください。

## PostgreSQL への認証

コネクタを追加したら、必要なプロパティを設定します。

**Server：** PostgreSQL データベースをホストしているサーバーのホスト名またはIP アドレスを入力します。デフォルトのサーバー値は**localhost** です。

CData Sync は、いくつかの方法でPostgreSQL への認証をサポートしています。以下から認証方法を選択し、認証の詳細を含む該当セクションに進みます。

* [**Password**](#password)（デフォルト）
* [**Azure Active Directory**](#azure-active-directory)
* [**Azure Service Principal**](#azure-service-principal)
* [**Azure Service Principal Certificate**](#azure-service-principal-certificate)
* [**Azure Password**](#azure-password)
* [**Azure Managed Service Identity**](#azure-managed-service-identity)
* [**Aws IAM Roles**](#aws-iam-roles)
* [**Aws EC2 Roles**](#aws-ec2-roles)
* [**GCP Service Account**](#gcp-service-account)

### Password

ユーザー資格情報で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **Password** を選択。
* **User：** PostgreSQL アカウントへの認証に使用するユーザー名を入力。
* **Password：** PostgreSQL アカウントへの認証に使用するパスワードを入力。

### Azure Active Directory

Azure Active Directory で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **AzureAD** を選択。
* **User：** PostgreSQL アカウントへの認証に使用するユーザー名を入力。
* **Azure Tenant：** 接続するMicrosoft Online テナントを入力。テナントを指定しない場合には、CData Sync はデフォルトのテナントを使用します。
* **OAuth Client Id：** OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントId を入力。
* **OAuth Client Secret：** OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントシークレットを入力。

### Azure Service Principal

Azure サービスプリンシパルとクライアントシークレットで接続するには、次のプロパティを設定します：

* **Auth Scheme：** **AzureServicePrincipal** を選択。
* **Azure Tenant：** 接続するMicrosoft Online テナントを入力。
* **User：** PostgreSQL アカウントへの認証に使用するユーザー名を入力。
* **OAuth Client Id：** OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントId を入力。
* **OAuth Client Secret：** OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントシークレットを入力。
* （オプション）**Scope：** アプリケーションへのアクセス範囲を指定。

アプリケーションのOAuth クライアントId およびクライアントシークレットを取得するには：

1. [Azure ポータル](https://portal.azure.com)にログインします。
2. 左ナビゲーションペインで**すべてのサービス**を選択します。次に**アプリの登録**を検索し選択します。
3. **新規登録**をクリックします。
4. アプリケーションの名前を入力して**任意のAzure AD ディレクトリ - マルチテナント**を選択します。
5. アプリケーションを作成したら、**概要**セクションに表示されるアプリケーション（クライアント）ID の値をコピーします。この値をOAuth クライアントId として使用します。
6. **証明書とシークレット**セクションに移動して、アプリケーションの**新しいクライアント シークレット**を選択します。
7. 有効期間を指定してクライアントシークレットを保存します。保存するとキーの値が表示されます。
8. 値は一度しか表示されないので、コピーしておきます。この値をOAuth クライアントシークレットとして使用します。
9. **認証**タブで、必ず**アクセストークン（暗黙的なフローに使用）** を選択します。

### Azure Service Principal Certificate

Azure サービスプリンシパルとクライアント証明書で接続するには、次のプロパティを設定します：

* **Auth Scheme：** **AzureServicePrincipalCert** を選択。
* **User：** PostgreSQL アカウントへの認証に使用するユーザー名を入力。
* **Azure Tenant：** 接続するMicrosoft Online テナントを入力。
* **OAuth JWT Cert：** Java web token（JWT）証明書ストアを入力。
* **OAuth JWT Cert Type：** JWT 証明書を格納するキーストアの種類を入力。デフォルトの種類は**PEMKEY\_BLOB** です。
* （オプション）**Scope：** アプリケーションへのアクセス範囲を指定。
* （オプション）**OAuth JWT Cert Password：** OAuth JWT 証明書のパスワードを入力。
* （オプション）**OAuth JWT Cert Subject：** OAuth JWT 証明書のサブジェクトを入力。

アプリケーションのOAuth 証明書を取得するには：

1. [Azure ポータル](https://portal.azure.com)にログインします。
2. 左ナビゲーションペインで**すべてのサービス**を選択します。次に**アプリの登録**を検索し選択します。
3. **新規登録**をクリックします。
4. アプリケーションの名前を入力して**任意のAzure AD ディレクトリ - マルチテナント**を選択します。
5. アプリケーションを作成したら、**概要**セクションに表示されるアプリケーション（クライアント）ID の値をコピーします。この値をOAuth クライアントId として使用します。
6. **証明書とシークレット**セクションに移動して、**証明書のアップロード**を選択します。次に、ローカルマシンからアップロードする証明書を選択します。
7. 有効期間を指定してクライアントシークレットを保存します。保存するとキーの値が表示されます。
8. 値は一度しか表示されないので、コピーしておきます。この値をOAuth クライアントシークレットとして使用します。
9. **認証**タブで、必ず**アクセストークン（暗黙的なフローに使用）** を選択します。

### Azure Password

Azure ユーザー資格情報で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **AzurePassword** を選択。
* **User：** PostgreSQL アカウントへの認証に使用するユーザー名を入力。
* **Password：** PostgreSQL アカウントへの接続に使用するパスワードを入力。
* **Azure Tenant：** 接続するMicrosoft Online テナントを入力。テナントを指定しない場合には、CData Sync はデフォルトのテナントを使用します。

### Azure Managed Service Identity

Azure マネージドサービスID（MSI）で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **AzureMSI** を選択。
* **User：** PostgreSQL アカウントへの認証に使用するユーザー名を入力。

### AWS IAM Roles

IAM ユーザー認証情報で接続するには、次のプロパティを指定します：

<ul><li>\*\*Auth Scheme：\*\***AwsIAMRoles** を選択。</li>
<li>\*\*User：\*\*PostgreSQL アカウントへの認証に使用するユーザー名を入力。</li>
<li>\*\*AWS Access Key：\*\*Amazon Web Services（AWS）アカウントのアクセスキーを入力。この値は、AWS のセキュリティ認証情報ページで確認できます。</li>
<li>\*\*AWS Secret Key：\*\*AWS アカウントのシークレットキーを入力。この値は、AWS のセキュリティ認証情報ページで確認できます。</li>
<li>\*\*AWS Role ARN：\*\*認証したいロールのAmazon リソースネーム（ARN）を入力。</li>
<li>（オプション）\*\*AWS External Id：\*\*別のアカウントでロールを引き受ける際に必要となる一意の識別子を入力。</li></ul>

### AWS EC2 Roles

EC2 インスタンスでCData Sync を実行すると、CData Sync はインスタンスに割り当てられたIAM ロールを使用して認証できます。そのロールを使用するには、**Auth Scheme** で**AwsEC2Roles** を選択します。追加のプロパティは必要ありません。

### GCP Service Account

GCP サービスアカウントで接続するには、次のプロパティを指定します：

* **Auth Scheme：** **GCPServiceAccount** を選択。
* **OAuth JWT Cert：** Java web token（JWT）証明書ストアを入力。
* **OAuth JWT Cert Type：** JWT 証明書を格納するキーストアの種類を入力。デフォルトの種類は**PEMKEY\_BLOB** です。
* （オプション）**OAuth JWT Cert Password：** OAuth JWT 証明書のパスワードを入力。
* （オプション）**OAuth JWT Cert Subject：** アプリケーションが委任されたアクセスを要求するユーザーサブジェクトを入力。

## 接続を完了する

接続を完了するには：

1. 以下を設定します：
   * **Database：** PostgreSQL サーバーに接続する際に接続するデフォルトのデータベースの名前を入力。
   * **Port：** PostgreSQL データベースをホストしているサーバーのポート番号を入力。デフォルトのポート値は**5432**です。
2. **高度な設定** タブで詳細な接続設定を定義します。（ただし、ほとんどの場合、これらの設定は必要ありません。）
3. AzureAD, AzurePassword, AzureMSI, or GCPServiceAccount で認証する場合は、**PostgreSQL への接続**をクリックしてPostgreSQL アカウントに接続します。
4. **作成およびテスト**をクリックして接続を作成します。

## 論理レプリケーションの設定

CData Sync は、PostgreSQL で設定された論理レプリケーションを使用して同期先テーブルを差分更新することができます。PostgreSQL は、データベース内のデータ変更を追跡するログ先行書き込み（WAL）の内容を可読形式にするために論理デコードを使用します。これらの変更はSync によって読み込まれ、同期先へプッシュされます。

### CData Sync の論理レプリケーションを有効化

Sync の論理レプリケーションを有効化するには：

1. PostgreSQL データベースで`wal_level=logical` パラメータが設定されていることを確認します。postgresql.conf ファイルでこのパラメータを設定できます。

2. 次のSELECT ステートメントを送信して、Sync の論理レプリケーションスロットを作成します：

   ```
   SELECT pg_create_logical_replication_slot('cdatasync_replication_slot', 'test_decoding');
   ```

   > [!NOTE]
   >
   > スロット名`cdatasync_replication_slot` は、スロット名の例です。任意の名前を代用できます。このスロット名は、Sync でジョブを作成する際に必要です。このスロットは、Sync によってのみ使用されることが重要です。なぜなら、スロットからの読み込み時に変更が消費されるからです。

3. 次のステートメントを送信して、Sync から接続するユーザーがレプリケーションスロットの読み取り権限を持っていることを確認します：

   ```
   ALTER ROLE <em>PostreSQL-User</em> WITH REPLICATION;
   ```

4. Sync でPostgreSQL データソースでジョブを作成します。**変更データキャプチャ**オプションを選択後、レプリケーションスロット名を入力します。

### 削除の挙動

論理レプリケーションでは、ソーステーブルに主キーが含まれている場合、Sync は削除されたレコードを追跡できます。ソーステーブルに主キーが含まれていない場合、Sync は削除されたレコードを取得できません。

## 差分レプリケーションのサポート

PostgreSQL データソースは差分レプリケーションをサポートしています。差分レプリケーションによりワークロードが大幅に軽減され、帯域幅の使用と同期の遅延が最小限に抑えられます。データを差分ごとに移動させることで、遅いAPI や毎日のクオータに対処する際、非常に高い柔軟性を発揮します。

PostgreSQL データソースのカラムに基づいて差分チェックカラムを構成する必要があります。*差分チェックカラム*は、データを同期する際に新規または変更されたレコードを識別するためにSync が使用する、datetime またはinteger ベースのカラムです。したがって、差分レプリケーションを実行するには、PostgreSQL テーブルのdatetime またはinteger ベースのカラムに対して差分チェックを構成する必要があります。

差分レプリケーションの設定方法の詳細は、[差分レプリケーション](https://docs.sync.cdata.com/26.4/ja/getting-started/features.md#差分レプリケーション)を参照してください。

## 詳細について


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