Pular para o conteúdo principal

Visão Geral

A integração OneSignal + Google Cloud SQL permite a sincronização automática de eventos personalizados do seu banco de dados Cloud SQL para o OneSignal. Isso permite que você acione Journeys automatizados e campanhas de mensagens personalizadas baseadas em dados comportamentais do usuário armazenados no seu banco de dados PostgreSQL gerenciado.

Requisitos

Google Cloud SQL

  • Instância Cloud SQL for PostgreSQL (versão 11 ou superior recomendada)
  • Acesso ao banco de dados com permissões de leitura para tabelas de eventos
  • Conectividade de rede do OneSignal para sua instância Cloud SQL
  • Cloud SQL Auth proxy para conexões seguras (recomendado)

Configuração

1

Configurar acesso ao banco de dados Cloud SQL

Crie um usuário dedicado para o OneSignal com acesso somente leitura às tabelas de eventos:
-- Criar usuário OneSignal
CREATE USER onesignal_reader WITH PASSWORD 'strong_unique_password';

-- Conceder acesso ao schema
GRANT USAGE ON SCHEMA event_data TO onesignal_reader;

-- Conceder acesso à tabela
GRANT SELECT ON ALL TABLES IN SCHEMA event_data TO onesignal_reader;

-- Conceder acesso a tabelas futuras
ALTER DEFAULT PRIVILEGES IN SCHEMA event_data
GRANT SELECT ON TABLES TO onesignal_reader;
2

Configurar acesso à rede

Certifique-se de que o OneSignal possa se conectar à sua instância Cloud SQL:Opção 1: Redes Autorizadas (IP Público)
  • No Google Cloud Console, vá para SQL > Instances
  • Selecione sua instância → ConnectionsNetworking
  • Adicione endereços IP do OneSignal às Authorized networks
Opção 2: IP Privado (Recomendado)
  • Configure sua instância Cloud SQL com um IP privado
  • Use Cloud SQL Auth Proxy para conexões seguras
  • Garanta o peering VPC adequado ou regras de firewall
Opção 3: Cloud SQL Auth Proxy
  • Baixe e configure o Cloud SQL Auth Proxy
  • Use autenticação de conta de serviço
  • Conecte através de túnel proxy seguro
3

Configurar Cloud SQL Auth Proxy (recomendado)

Para segurança aprimorada, use Cloud SQL Auth Proxy:
# Baixar Cloud SQL Auth Proxy
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64

# Tornar executável
chmod +x cloud_sql_proxy

# Executar proxy (substitua pelo nome de conexão da sua instância)
./cloud_sql_proxy -instances=PROJECT:REGION:INSTANCE=tcp:5432
Crie uma conta de serviço com função 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

Adicionar integração no OneSignal

In OneSignal, go to Data > Integrations and click Add Integration.Selecione Google Cloud SQL e forneça:
  • Instance Connection Name: PROJECT_ID:REGION:INSTANCE_ID
  • Database Name: Nome do seu banco de dados de eventos
  • Username: onesignal_reader
  • Password: A senha criada no Passo 1
  • SSL Mode: require (recomendado para segurança)
  • Connection Type: Escolha entre Direct, Auth Proxy ou Private IP
5

Configurar consultas de dados de eventos

Defina a consulta SQL para recuperar dados de eventos do seu banco de dados Cloud 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
Certifique-se de que suas tabelas de eventos incluam:
  • Nome/tipo do evento (String)
  • Identificador do usuário (String)
  • Timestamp do evento (Timestamp)
  • Propriedades do evento (JSON/JSONB)
6

Testar a conexão

Clique em Test Connection para verificar se o OneSignal pode se conectar à sua instância Cloud SQL e executar a consulta de eventos com sucesso.

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

Configuração Avançada

Connection Pooling

Otimize conexões de banco de dados para sincronização de eventos de alto volume:
-- Verificar limites de conexão atuais
SELECT * FROM pg_stat_activity WHERE datname = 'your_database';

-- Otimizar para conexões OneSignal
ALTER SYSTEM SET max_connections = 200;
ALTER SYSTEM SET shared_preload_libraries = 'pg_stat_statements';

Otimização de Consultas

Melhore o desempenho de consultas de eventos:
-- Criar índice no timestamp para filtragem eficiente
CREATE INDEX idx_events_created_at ON user_events(created_at);

-- Criar índice composto para consultas baseadas em usuário
CREATE INDEX idx_events_user_time ON user_events(user_id, created_at);

-- Analisar desempenho da consulta
EXPLAIN ANALYZE
SELECT event_name, user_id, created_at, properties
FROM user_events
WHERE created_at >= NOW() - INTERVAL '1 hour';

Manipulação de Dados JSON

Se usar JSONB para propriedades de eventos, otimize consultas JSON:
-- Criar índice GIN para propriedades JSON
CREATE INDEX idx_events_properties ON user_events USING GIN(properties);

-- Consultar propriedades JSON específicas
SELECT
    event_name,
    user_id,
    properties->>'purchase_amount' as amount,
    properties->>'product_id' as product
FROM user_events
WHERE properties->>'event_type' = 'purchase';
Monitore o desempenho da sua instância Cloud SQL quando o OneSignal consultar dados de eventos. Considere usar réplicas de leitura para cargas de trabalho de análise para evitar impactar o desempenho de produção.

FAQ

Com que frequência o OneSignal sincroniza eventos do Cloud SQL?

O OneSignal sincroniza dados de eventos com base no seu cronograma configurado, com um intervalo mínimo de 15 minutos.

Posso usar réplicas de leitura do Cloud SQL para sincronização de eventos?

Sim, usar réplicas de leitura é recomendado para isolar consultas de análise da carga de trabalho do seu banco de dados de produção.

O que acontece se minha instância Cloud SQL estiver temporariamente indisponível?

O OneSignal tentará reconectar com backoff exponencial. A sincronização de eventos será retomada automaticamente assim que sua instância estiver acessível novamente.