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

# PostgreSQL

> PostgreSQLからOneSignalにカスタムイベントを同期して、ユーザーの行動に基づいて自動化されたJourneysとパーソナライズされたメッセージングキャンペーンをトリガーします。

export const PLATFORM_0 = "PostgreSQL"

export const DATA_TYPE_0 = "列"

export const COLUMN_HEADER_0 = "PostgreSQL列"

export const PROPERTIES_DESCRIPTION_0 = "イベント詳細を含むJSONオブジェクト"

## 概要

OneSignal + PostgreSQL統合により、PostgreSQLデータベースからOneSignalにカスタムイベントを同期して、ユーザーの行動に基づいて自動化されたメッセージングキャンペーンとJourneysをトリガーできます。

***

## 要件

* 访问自定义事件（目前处于测试阶段）
* [升级账户计划](https://onesignal.com/pricing)（免费应用不可用）。

### PostgreSQL

* \*\*PostgreSQL 9.6+\*\*または互換性のあるデータベース
* 適切な権限を持つ**データベースユーザー**
* OneSignalからPostgreSQLインスタンスへの**ネットワークアクセス**
* 構造化された行動データを含む**イベントテーブル**

<Warning>
  OneSignalを本番PostgreSQLデータベースに接続することは**強く推奨しません**。イベント同期クエリは分析的な性質を持ち、本番パフォーマンスに影響を与える可能性があります。分析ワークロード用に設定されたデータベースでのみ使用してください。
</Warning>

***

## セットアップ

<Steps>
  <Step title="OneSignal専用ユーザーを作成する">
    適切な権限を持つ専用ユーザーアカウントを作成します：

    ```sql theme={null}
    -- 強力なパスワードでOneSignalユーザーを作成
    CREATE USER CENSUS WITH PASSWORD '<strong-unique-password>';

    -- 同期状態用のプライベート簿記スキーマを作成（読み取り専用モードの場合はスキップ）
    CREATE SCHEMA CENSUS;

    -- 簿記スキーマへの完全アクセスを許可（読み取り専用モードの場合はスキップ）
    GRANT ALL ON SCHEMA CENSUS TO CENSUS;

    -- 簿記スキーマ内の既存オブジェクトへのアクセスを確保（読み取り専用モードの場合はスキップ）
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
    ```
  </Step>

  <Step title="イベントデータへの権限を付与する">
    イベントデータを含むスキーマへの読み取りアクセスを提供します：

    ```sql theme={null}
    -- スキーマアクセスを許可（イベントデータを含む各スキーマに対して繰り返す）
    GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;

    -- 既存テーブルへの読み取りアクセスを許可
    GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;

    -- 将来のテーブルへの読み取りアクセスを許可
    ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;

    -- 関数への実行権限を許可
    GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your_schema>" TO CENSUS;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
    ```
  </Step>

  <Step title="OneSignalに接続する">
    在 OneSignal 中，前往 **数据 > 集成**，然后点击 **添加集成**。

    1. リストから**PostgreSQL**を選択します
    2. 接続詳細を入力します：
       * **Host**：PostgreSQLサーバーのホスト名
       * **Port**：通常は5432
       * **Database**：データベース名
       * **Username**：`CENSUS`
       * **Password**：作成したパスワード
    3. 接続をテストします
    4. イベントデータを含むテーブルを設定します
  </Step>
</Steps>

***

### 事件数据映射

将您的 {PLATFORM_0} {DATA_TYPE_0} 映射到 OneSignal 的自定义事件格式：

| OneSignal 字段  | {COLUMN_HEADER_0} | 描述                         | 必需 |
| ------------- | ----------------- | -------------------------- | -- |
| `name`        | `event_name`      | 事件标识符                      | 是  |
| `external_id` | `user_id`         | 用户标识符                      | 是  |
| `timestamp`   | `event_timestamp` | 事件发生时间                     | 否  |
| `properties`  | `event_data`      | {PROPERTIES_DESCRIPTION_0} | 否  |

### イベントテーブルスキーマの例

```sql theme={null}
-- PostgreSQLイベントテーブルの例
CREATE TABLE analytics.user_events (
    event_id SERIAL PRIMARY KEY,
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    event_data JSONB,
    session_id VARCHAR(255),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
```

### SQLクエリモード

イベントデータを変換するためのカスタムSQLクエリを作成します：

```sql theme={null}
-- 例：最近の購入イベント
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= NOW() - INTERVAL '7 days'
    AND event_name = 'purchase'
ORDER BY event_timestamp DESC;
```

***

## 高度なネットワーク構成

OneSignalは、高度なネットワーク制御を使用してPostgreSQLインスタンスに接続できます：

* **IP許可リスト**：OneSignalのIPアドレスをファイアウォールと`pg_hba.conf`に追加します
* **SSHトンネリング**：プライベートネットワークの踏み台ホストを介して接続します
* **VPC構成**：クラウド環境内での直接接続
* **TLS暗号化**：SSL/TLSを使用した安全な接続

### SSHトンネルのセットアップ

プライベートネットワーク上のPostgreSQLインスタンスの場合：

1. **SSHユーザーを作成**：SSHホスト上に専用ユーザーを設定します
2. **トンネルを構成**：OneSignal統合設定で「Use SSH Tunnel」を有効にします
3. **キーペアをインストール**：OneSignalの公開鍵を`~/.ssh/authorized_keys`に追加します
4. **接続をテスト**：トンネル接続を確認します

***

## 注意事項

* **複数のスキーマ**：イベントデータを含む各スキーマに対して権限付与を繰り返します
* **クロススキーマ参照を持つビュー**：古いPostgreSQLバージョンでは追加の読み取り権限が必要な場合があります
* **Azure PostgreSQL**：AzureインスタンスにはUsername\@hostname形式を使用します
* **AWS RDS**：標準のusername形式を使用します
* **パフォーマンス**：大規模なイベント処理には読み取りレプリカの使用を検討してください

***

## 制限事項

* 分析クエリのオーバーヘッドのため、本番データベースへの接続は避けてください
* 複雑なクロススキーマクエリには追加の権限が必要な場合があります
* 高頻度のイベント処理には接続プーリングが推奨されます

***

## FAQ

### 読み取り専用モードを使用すべきですか？

より簡単なセットアップを好み、OneSignalがテーブルを作成することを許可できない場合は、**読み取り専用モード**を使用します。大規模なイベントデータセットでより良いパフォーマンスを得るには、**フルモード**を使用します。

### 複数のイベントスキーマを処理する方法は？

イベントデータを含む各スキーマに対して権限付与コマンドを繰り返します。OneSignalは単一の接続内で複数のスキーマから読み取ることができます。
