メインコンテンツへスキップ

概要

OneSignal + Google Cloud SQLインテグレーションにより、Cloud SQLデータベースからOneSignalへのカスタムイベントの自動同期が可能になります。これにより、管理されたPostgreSQLデータベースに保存されているユーザー行動データに基づいて、自動化されたJourneysとパーソナライズされたメッセージングキャンペーンをトリガーできます。

要件

  • アウトバウンドメッセージイベント用のEvent Streamsへのアクセス(プランの制限と超過料金が適用されます)
  • インバウンドイベント同期用のCustom Eventsへのアクセス(プランの制限と超過料金が適用されます)
  • 更新されたアカウントプラン(無料アプリでは利用できません)

Google Cloud SQL

  • Cloud SQL for PostgreSQLインスタンス(バージョン11以降を推奨)
  • イベントテーブルへの読み取り権限を持つデータベースアクセス
  • OneSignalからCloud SQLインスタンスへのネットワーク接続
  • 安全な接続のためのCloud SQL Auth proxy(推奨)

セットアップ

1

Cloud SQLデータベースアクセスを構成する

イベントテーブルへの読み取り専用アクセスを持つOneSignal専用ユーザーを作成します:
-- 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

ネットワークアクセスを構成する

OneSignalがCloud SQLインスタンスに接続できることを確認します:オプション1:承認済みネットワーク(パブリックIP)
  • Google Cloud Consoleで、SQL > インスタンスに移動します
  • インスタンスを選択 → 接続ネットワーキング
  • 承認済みネットワークにOneSignal IPアドレスを追加します
オプション2:プライベートIP(推奨)
  • プライベートIPでCloud SQLインスタンスを構成します
  • 安全な接続にはCloud SQL Auth Proxyを使用します
  • 適切なVPCピアリングまたはファイアウォールルールを確保します
オプション3:Cloud SQL Auth Proxy
  • Cloud SQL Auth Proxyをダウンロードして構成します
  • サービスアカウント認証を使用します
  • 安全なプロキシトンネルを介して接続します
3

Cloud SQL Auth Proxyをセットアップする(推奨)

セキュリティを強化するには、Cloud SQL Auth Proxyを使用します:
# 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ロールを持つサービスアカウントを作成します:
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でインテグレーションを追加する

OneSignalで、Data > Integrationsに移動し、Add Integrationをクリックします。Google Cloud SQLを選択して、以下を提供します:
  • Instance Connection Name: PROJECT_ID:REGION:INSTANCE_ID
  • Database Name: イベントデータベース名
  • Username: onesignal_reader
  • Password: ステップ1で作成したパスワード
  • SSL Mode: require(セキュリティのために推奨)
  • Connection Type: Direct、Auth Proxy、またはPrivate IPから選択
5

イベントデータクエリを構成する

Cloud SQLデータベースからイベントデータを取得するSQLクエリを定義します:
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
イベントテーブルに以下が含まれていることを確認してください:
  • イベント名/タイプ(String)
  • ユーザー識別子(String)
  • イベントタイムスタンプ(Timestamp)
  • イベントプロパティ(JSON/JSONB)
6

接続をテストする

Test Connectionをクリックして、OneSignalがCloud SQLインスタンスに接続し、イベントクエリを正常に実行できることを確認します。

イベントデータマッピング

をOneSignalのカスタムイベント形式にマッピングします:
OneSignalフィールド説明必須
nameevent_nameイベント識別子はい
external_iduser_idユーザー識別子はい
timestampevent_timestampイベントが発生した時刻いいえ
propertiesevent_dataいいえ

高度な構成

接続プーリング

大量のイベント同期のためにデータベース接続を最適化します:
-- 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';

クエリの最適化

イベントクエリのパフォーマンスを向上させます:
-- 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データの処理

イベントプロパティにJSONBを使用している場合は、JSONクエリを最適化します:
-- 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がイベントデータをクエリするときに、Cloud SQLインスタンスのパフォーマンスを監視してください。本番環境のパフォーマンスに影響を与えないように、分析ワークロードには読み取りレプリカの使用を検討してください。

FAQ

OneSignalはCloud SQLからイベントをどのくらいの頻度で同期しますか?

OneSignalは、構成されたスケジュールに基づいてイベントデータを同期し、最小間隔は15分です。

イベント同期にCloud SQL読み取りレプリカを使用できますか?

はい、読み取りレプリカの使用は、分析クエリを本番データベースワークロードから分離するために推奨されます。

Cloud SQLインスタンスが一時的に使用できない場合はどうなりますか?

OneSignalは、エクスポネンシャルバックオフで接続を再試行します。インスタンスに再びアクセスできるようになると、イベント同期が自動的に再開されます。