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

# Google Cloud SQL

> Kullanıcı davranışına dayalı otomatik Journeys'leri ve kişiselleştirilmiş mesajlaşma kampanyalarını tetiklemek için Google Cloud SQL'den OneSignal'e özel olayları senkronize edin.

export const PLATFORM_0 = "Google Cloud SQL"

export const DATA_TYPE_0 = "event table fields"

export const COLUMN_HEADER_0 = "Cloud SQL Field"

export const PROPERTIES_DESCRIPTION_0 = "Event metadata as JSON object"

## Genel Bakış

OneSignal + Google Cloud SQL entegrasyonu, Cloud SQL veritabanınızdan OneSignal'e özel olayların otomatik olarak senkronize edilmesini sağlar. Bu, yönetilen PostgreSQL veritabanınızda depolanan kullanıcı davranış verilerine dayalı otomatik Journeys'leri ve kişiselleştirilmiş mesajlaşma kampanyalarını tetiklemenize olanak tanır.

***

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

### Google Cloud SQL

* **PostgreSQL için Cloud SQL** örneği (sürüm 11 veya üstü önerilir)
* Olay tabloları için okuma izinlerine sahip **Veritabanı erişimi**
* OneSignal'den Cloud SQL örneğinize **Ağ bağlantısı**
* Güvenli bağlantılar için **Cloud SQL Auth proxy** (önerilir)

***

## Kurulum

<Steps>
  <Step title="Cloud SQL veritabanı erişimini yapılandırın">
    Olay tablolarına salt okunur erişime sahip OneSignal için özel bir kullanıcı oluşturun:

    ```sql theme={null}
    -- Create OneSignal user
    CREATE USER onesignal_reader WITH PASSWORD 'strong_unique_password';

    -- Grant schema access
    GRANT USAGE ON SCHEMA event_data TO onesignal_reader;

    -- Grant table access
    GRANT SELECT ON ALL TABLES IN SCHEMA event_data TO onesignal_reader;

    -- Grant access to future tables
    ALTER DEFAULT PRIVILEGES IN SCHEMA event_data
    GRANT SELECT ON TABLES TO onesignal_reader;
    ```
  </Step>

  <Step title="Ağ erişimini yapılandırın">
    OneSignal'in Cloud SQL örneğinize bağlanabildiğinden emin olun:

    **Seçenek 1: Yetkili Ağlar (Public IP)**

    * Google Cloud Console'da **SQL > Instances** bölümüne gidin
    * Örneğinizi seçin → **Connections** → **Networking**
    * **Authorized networks**'e OneSignal IP adreslerini ekleyin

    **Seçenek 2: Private IP (Önerilir)**

    * Cloud SQL örneğinizi private IP ile yapılandırın
    * Güvenli bağlantılar için Cloud SQL Auth Proxy kullanın
    * Uygun VPC peering veya firewall kurallarını sağlayın

    **Seçenek 3: Cloud SQL Auth Proxy**

    * Cloud SQL Auth Proxy'yi indirin ve yapılandırın
    * Servis hesabı kimlik doğrulaması kullanın
    * Güvenli proxy tüneli üzerinden bağlanın
  </Step>

  <Step title="Cloud SQL Auth Proxy'yi kurun (önerilir)">
    Gelişmiş güvenlik için Cloud SQL Auth Proxy kullanın:

    ```bash theme={null}
    # Download Cloud SQL Auth Proxy
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64

    # Make executable
    chmod +x cloud_sql_proxy

    # Run proxy (replace with your instance connection name)
    ./cloud_sql_proxy -instances=PROJECT:REGION:INSTANCE=tcp:5432
    ```

    Cloud SQL Client rolüne sahip bir servis hesabı oluşturun:

    ```bash theme={null}
    gcloud iam service-accounts create onesignal-cloudsql
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:onesignal-cloudsql@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/cloudsql.client"
    ```
  </Step>

  <Step title="OneSignal'e entegrasyon ekleyin">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    **Google Cloud SQL**'i seçin ve şunları sağlayın:

    * **Instance Connection Name**: `PROJECT_ID:REGION:INSTANCE_ID`
    * **Database Name**: Olay veritabanınızın adı
    * **Username**: `onesignal_reader`
    * **Password**: Adım 1'de oluşturulan şifre
    * **SSL Mode**: `require` (güvenlik için önerilir)
    * **Connection Type**: Direct, Auth Proxy veya Private IP arasından seçim yapın
  </Step>

  <Step title="Olay veri sorgularını yapılandırın">
    Cloud SQL veritabanınızdan olay verilerini almak için SQL sorgusunu tanımlayın:

    ```sql theme={null}
    SELECT
        event_name,
        user_id,
        created_at as event_timestamp,
        properties as event_payload
    FROM event_data.user_events
    WHERE created_at >= CURRENT_TIMESTAMP - INTERVAL '1 hour'
    ORDER BY created_at DESC
    ```

    Olay tablolarınızın şunları içerdiğinden emin olun:

    * Olay adı/türü (String)
    * Kullanıcı tanımlayıcısı (String)
    * Olay zaman damgası (Timestamp)
    * Olay özellikleri (JSON/JSONB)
  </Step>

  <Step title="Bağlantıyı test edin">
    OneSignal'in Cloud SQL örneğinize bağlanabildiğini ve olay sorgusunu başarıyla yürütebildiğini doğrulamak için **Test Connection**'a tıklayı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       |

***

## Gelişmiş Yapılandırma

### Connection Pooling

Yüksek hacimli olay senkronizasyonu için veritabanı bağlantılarını optimize edin:

```sql theme={null}
-- Check current connection limits
SELECT * FROM pg_stat_activity WHERE datname = 'your_database';

-- Optimize for OneSignal connections
ALTER SYSTEM SET max_connections = 200;
ALTER SYSTEM SET shared_preload_libraries = 'pg_stat_statements';
```

### Sorgu Optimizasyonu

Olay sorgu performansını iyileştirin:

```sql theme={null}
-- Create index on timestamp for efficient filtering
CREATE INDEX idx_events_created_at ON user_events(created_at);

-- Create composite index for user-based queries
CREATE INDEX idx_events_user_time ON user_events(user_id, created_at);

-- Analyze query performance
EXPLAIN ANALYZE
SELECT event_name, user_id, created_at, properties
FROM user_events
WHERE created_at >= NOW() - INTERVAL '1 hour';
```

### JSON Veri İşleme

Olay özellikleri için JSONB kullanıyorsanız, JSON sorgularını optimize edin:

```sql theme={null}
-- Create GIN index for JSON properties
CREATE INDEX idx_events_properties ON user_events USING GIN(properties);

-- Query specific JSON properties
SELECT
    event_name,
    user_id,
    properties->>'purchase_amount' as amount,
    properties->>'product_id' as product
FROM user_events
WHERE properties->>'event_type' = 'purchase';
```

<Warning>
  OneSignal olay verilerini sorguladığında Cloud SQL örneğinizin performansını izleyin. Üretim performansını etkilememek için analitik iş yükleri için okuma kopyalarını kullanmayı düşünün.
</Warning>

***

## SSS

### OneSignal, Cloud SQL'den olayları ne sıklıkla senkronize eder?

OneSignal, yapılandırılmış programınıza göre olay verilerini senkronize eder, minimum aralık 15 dakikadır.

### Olay senkronizasyonu için Cloud SQL okuma kopyalarını kullanabilir miyim?

Evet, analitik sorgularını üretim veritabanı iş yükünüzden izole etmek için okuma kopyalarını kullanmanız önerilir.

### Cloud SQL örneğim geçici olarak kullanılamıyorsa ne olur?

OneSignal, üstel geri çekilme ile bağlantıları yeniden deneyecektir. Örneğiniz tekrar erişilebilir olduğunda olay senkronizasyonu otomatik olarak devam edecektir.
