Ana içeriğe atla

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

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

1

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:
-- 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;
2

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 → ConnectionsNetworking
  • 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
3

Cloud SQL Auth Proxy'yi kurun (önerilir)

Gelişmiş güvenlik için Cloud SQL Auth Proxy kullanın:
# 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:
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"
4

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
5

Olay veri sorgularını yapılandırın

Cloud SQL veritabanınızdan olay verilerini almak için SQL sorgusunu tanımlayın:
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)
6

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.

Event data mapping

Map your to OneSignal’s custom events format:
OneSignal FieldDescriptionRequired
nameevent_nameEvent identifierYes
external_iduser_idUser identifierYes
timestampevent_timestampWhen event occurredNo
propertiesevent_dataNo

Gelişmiş Yapılandırma

Connection Pooling

Yüksek hacimli olay senkronizasyonu için veritabanı bağlantılarını optimize edin:
-- 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:
-- 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:
-- 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';
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.

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.