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

> Kullanıcı davranışına dayalı otomatik Journey'ler ve kişiselleştirilmiş mesajlaşma kampanyaları tetiklemek için PostgreSQL'den OneSignal'e özel olayları senkronize edin.

export const PLATFORM_0 = "PostgreSQL"

export const DATA_TYPE_0 = "columns"

export const COLUMN_HEADER_0 = "PostgreSQL Sütunu"

export const PROPERTIES_DESCRIPTION_0 = "Olay ayrıntılarıyla JSON nesnesi"

## Genel bakış

OneSignal + PostgreSQL entegrasyonu, kullanıcı davranışına dayalı otomatik mesajlaşma kampanyaları ve Journey'leri tetiklemek için PostgreSQL veritabanınızdan OneSignal'e özel olayların senkronize edilmesini sağlar.

***

## Gereksinimler

* Access to [Event Streams](/docs/en/event-streams) for outbound message events (Plan limitations and overages apply)
* Access to [Custom Events](/docs/en/custom-events) for inbound event syncing (Plan limitations and overages apply)
* [Updated Account Plan](https://onesignal.com/pricing) (not available on free apps)

### PostgreSQL

* **PostgreSQL 9.6+** veya uyumlu veritabanı
* Uygun izinlere sahip **Veritabanı kullanıcısı**
* OneSignal'den PostgreSQL örneğinize **Ağ erişimi**
* Yapılandırılmış davranışsal veri içeren **Olay tabloları**

<Warning>
  OneSignal'i bir production PostgreSQL veritabanına bağlamaktan **şiddetle kaçınmanızı öneririz**. Olay senkronizasyon sorguları doğası gereği analitiktir ve production performansını etkileyebilir. Yalnızca analitik iş yükleri için kurulmuş veritabanlarıyla kullanın.
</Warning>

***

## Kurulum

<Steps>
  <Step title="OneSignal için özel kullanıcı oluştur">
    Uygun izinlere sahip özel bir kullanıcı hesabı oluşturun:

    ```sql theme={null}
    -- Güçlü şifreyle OneSignal kullanıcısı oluştur
    CREATE USER CENSUS WITH PASSWORD '<strong-unique-password>';

    -- Senkronizasyon durumu için özel muhasebe şeması oluştur (salt okunur modda atla)
    CREATE SCHEMA CENSUS;

    -- Muhasebe şemasına tam erişim ver (salt okunur modda atla)
    GRANT ALL ON SCHEMA CENSUS TO CENSUS;

    -- Muhasebe şemasındaki mevcut nesnelere erişimi sağla (salt okunur modda atla)
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
    ```
  </Step>

  <Step title="Olay verisine izinler ver">
    Olay verinizi içeren şemalara okuma erişimi sağlayın:

    ```sql theme={null}
    -- Şema erişimi ver (olay verisi olan her şema için tekrarla)
    GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;

    -- Mevcut tablolara okuma erişimi ver
    GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;

    -- Gelecekteki tablolara okuma erişimi ver
    ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;

    -- Fonksiyonlarda yürütme izinleri ver
    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'e bağlan">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    1. Listeden **PostgreSQL**'i seçin
    2. Bağlantı ayrıntılarınızı girin:
       * **Host:** PostgreSQL sunucu hostname'iniz
       * **Port:** Genellikle 5432
       * **Database:** Veritabanı adınız
       * **Username:** `CENSUS`
       * **Password:** Oluşturduğunuz şifre
    3. Bağlantıyı test edin
    4. Hangi tabloların olay verinizi içerdiğini yapılandırın
  </Step>
</Steps>

***

### Event data mapping

Map your {PLATFORM_0} {DATA_TYPE_0} to OneSignal's custom events format:

| OneSignal Field | {COLUMN_HEADER_0} | Description                | Required |
| --------------- | ----------------- | -------------------------- | -------- |
| `name`          | `event_name`      | Event identifier           | Yes      |
| `external_id`   | `user_id`         | User identifier            | Yes      |
| `timestamp`     | `event_timestamp` | When event occurred        | No       |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | No       |

### Örnek Olay Tablosu Şeması

```sql theme={null}
-- Örnek PostgreSQL olay tablosu
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 Sorgu Modu

Olay verinizi dönüştürmek için özel SQL sorguları yazın:

```sql theme={null}
-- Örnek: Son satın alma olayları
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;
```

***

## Gelişmiş Ağ Yapılandırması

OneSignal, gelişmiş ağ kontrolleri kullanarak PostgreSQL örneklerine bağlanabilir:

* **IP İzin Listeleri**: OneSignal'in IP adreslerini güvenlik duvarınıza ve `pg_hba.conf`'a ekleyin
* **SSH Tünelleme**: Özel ağlar için bir bastion host üzerinden bağlanın
* **VPC Yapılandırması**: Bulut ortamları içinde doğrudan bağlantı
* **TLS Şifreleme**: SSL/TLS kullanarak güvenli bağlantılar

### SSH Tüneli Kurulumu

Özel ağlardaki PostgreSQL örnekleri için:

1. **SSH kullanıcısı oluştur**: SSH host'unuzda özel bir kullanıcı kurun
2. **Tüneli yapılandır**: OneSignal entegrasyon ayarlarında "Use SSH Tunnel"'ı etkinleştirin
3. **Anahtar çiftini yükle**: OneSignal'in genel anahtarını `~/.ssh/authorized_keys`'e ekleyin
4. **Bağlantıyı test et**: Tünel bağlantısını doğrulayın

***

## Notlar

* **Birden Fazla Şema**: Olay verisi içeren her şema için izin verme işlemlerini tekrarlayın
* **Çapraz Şema Referansları ile Görünümler**: Eski PostgreSQL sürümlerinde ek okuma izinleri gerektirebilir
* **Azure PostgreSQL**: Azure örnekleri için `username@hostname` formatını kullanın
* **AWS RDS**: Standart `username` formatını kullanın
* **Performans**: Büyük ölçekli olay işleme için okuma replikalarını kullanmayı düşünün

***

## Sınırlamalar

* Analitik sorgu yükü nedeniyle production veritabanlarına bağlanmaktan kaçının
* Karmaşık çapraz şema sorguları ek izinler gerektirebilir
* Yüksek frekanslı olay işleme için bağlantı havuzu önerilir

***

## SSS

### Salt okunur modu kullanmalı mıyım?

Daha basit kurulum tercih ediyorsanız ve OneSignal'in tablo oluşturmasına izin veremiyorsanız **salt okunur modunu** kullanın. Büyük olay veri kümeleriyle daha iyi performans için **tam mod** kullanın.

### Birden fazla olay şemasını nasıl ele alırım?

Olay verisi içeren her şema için izin verme komutlarını tekrarlayın. OneSignal, tek bir bağlantı içinde birden fazla şemadan okuyabilir.
