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

export const CommonAuthSchemeAwsec2roles = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>
        EC2 インスタンスで{siteName} を実行すると、{siteName} はインスタンスに割り当てられたIAM ロールを使用して認証できます。そのロールを使用するには、<strong>Auth Scheme</strong> で<strong>AwsEC2Roles</strong> を選択します。追加のプロパティは必要ありません。
      </p>
    </>;
};

export const CommonAuthSchemeAwsiamroles = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>IAM ユーザー認証情報で接続するには、次のプロパティを指定します：</p>
      <ul>
        <li><strong>Auth Scheme：</strong><strong>AwsIAMRoles</strong> を選択。</li>
        <li><strong>User：</strong>{datasource} アカウントへの認証に使用するユーザー名を入力。</li>
        <li><strong>AWS Access Key：</strong>Amazon Web Services（AWS）アカウントのアクセスキーを入力。この値は、AWS のセキュリティ認証情報ページで確認できます。</li>
        <li><strong>AWS Secret Key：</strong>AWS アカウントのシークレットキーを入力。この値は、AWS のセキュリティ認証情報ページで確認できます。</li>
        <li><strong>AWS Role ARN：</strong>認証したいロールのAmazon リソースネーム（ARN）を入力。</li>
        <li>（オプション）<strong>AWS External Id：</strong>別のアカウントでロールを引き受ける際に必要となる一意の識別子を入力。</li>
      </ul>
    </>;
};

export const CommonDatasourceMoreInformation = ({datasource = "the data source", advancedurl = "", siteName = "CData Sync", driverVersion = ""}) => {
  return <>
      <p>
        {siteName} と{datasource} の連携について、詳しくは{' '}
        <a href={`https://cdn.cdata.com/help/${advancedurl}${driverVersion}/jp/synch/default.htm`}>
          {datasource} Connector for {siteName}
        </a> を参照してください。
      </p>
    </>;
};

export const CommonDatasourceAddConnector = ({datasource = "the data source", title = "the connector", destination = false, siteNameShort = "Sync"}) => {
  return <>
      <p>
        {siteNameShort} で{datasource} のデータを使用できるようにするには、まず以下の手順でコネクタを追加する必要があります：
      </p>
      <ol>
        <li>{siteNameShort} のダッシュボードから<strong>接続</strong>ページを開きます。</li>
        <li><strong>接続を追加</strong>をクリックして<strong>コネクタを選択</strong>ページを開きます。</li>
        <li>
          <strong>{destination ? "同期先" : "データソース"}</strong>タブをクリックして
          <strong>{title}</strong> 行に移動します。
        </li>
        <li>
          行末にある<strong>接続を設定</strong>アイコンをクリックして、<strong>新しい接続</strong>ページを開きます。この操作により、{' '}
          <strong>接続を追加</strong>ダイアログボックスが開きます。
          <br />
          <strong>Note：</strong> <strong>接続を設定</strong>アイコンが表示されない場合は、<strong>コネクタをダウンロード</strong>アイコンをクリックして {title} コネクタをインストールしてください。
        </li>
        <li><strong>接続を追加</strong>ダイアログボックスに接続名を入力します。</li>
        <li><strong>追加</strong>をクリックして、コネクタの<strong>設定</strong>タブを開きます。</li>
      </ol>
      <p>
        新しいコネクタのインストールについての詳細は、{' '}
        <a href="../connections">接続</a>を参照してください。
      </p>
    </>;
};

export const CommonDatasourceIntroSource = ({datasource = "the data source", siteName = "CData Sync"}) => {
  return <p>
      {siteName} アプリケーションから{datasource} コネクタを使用して、{datasource} からデータを取得してサポートされている任意の同期先に移動できます。これを行うには、コネクタを追加し、コネクタへの認証を行い、接続を完了する必要があります。
    </p>;
};

export const driverVersion = "M";

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

export const datasource = "PostgreSQL";
export const pageTitle = "PostgreSQL";
export const advancedurl = "FP";
export const oauthschemes = "AzureAD, AzurePassword, AzureMSI, or GCPServiceAccount";

<CommonDatasourceIntroSource datasource={datasource} siteName={siteName} />

## {datasource} コネクタを追加する

<CommonDatasourceAddConnector datasource={datasource} title={pageTitle} destination={false} siteNameShort={siteNameShort} />

## {datasource} への認証

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

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

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

* [**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：** {datasource} アカウントへの認証に使用するユーザー名を入力。
* **Password：** {datasource} アカウントへの認証に使用するパスワードを入力。

### Azure Active Directory

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

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

### Azure Service Principal

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

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

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

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

### Azure Service Principal Certificate

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

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

### Azure Password

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

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

### Azure Managed Service Identity

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

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

### AWS IAM Roles

<CommonAuthSchemeAwsiamroles siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### AWS EC2 Roles

<CommonAuthSchemeAwsec2roles siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### 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：** {datasource} サーバーに接続する際に接続するデフォルトのデータベースの名前を入力。
   * **Port：** {datasource} データベースをホストしているサーバーのポート番号を入力。デフォルトのポート値は**5432**です。
2. **Advanced** タブで詳細な接続設定を定義します。（ただし、ほとんどの場合、これらの設定は必要ありません。）
3. {oauthschemes ? `${oauthschemes} で認証する場合は、` : ""}**{datasource} への接続**をクリックして{pageTitle} アカウントに接続します。
4. **作成およびテスト**をクリックして接続を作成します。

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

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

### {siteName} の論理レプリケーションを有効化

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

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

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

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

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

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

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

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

### 削除の挙動

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

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

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

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

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

## 詳細について

<CommonDatasourceMoreInformation datasource={datasource} advancedurl={advancedurl} siteName={siteName} driverVersion={driverVersion} />
