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

> Synchronisez les événements personnalisés de Google Cloud SQL vers OneSignal pour déclencher des Journeys automatisés et des campagnes de messagerie personnalisées basées sur le comportement des utilisateurs.

export const DATA_TYPE_0 = "event table fields"

export const PLATFORM_0 = "Google Cloud SQL"

export const COLUMN_HEADER_0 = "Cloud SQL Field"

export const PROPERTIES_DESCRIPTION_0 = "Event metadata as JSON object"

## Aperçu

L'intégration OneSignal + Google Cloud SQL permet la synchronisation automatique des événements personnalisés de votre base de données Cloud SQL vers OneSignal. Cela vous permet de déclencher des Journeys automatisés et des campagnes de messagerie personnalisées basées sur les données comportementales des utilisateurs stockées dans votre base de données PostgreSQL gérée.

***

## Prérequis

* Accès aux [Event Streams](/docs/en/event-streams) pour les événements de message sortants (Les limitations de forfait et les dépassements s'appliquent)
* Accès aux [Événements personnalisés](/docs/en/custom-events) pour la synchronisation des événements entrants (Les limitations de forfait et les dépassements s'appliquent)
* [Forfait de compte mis à jour](https://onesignal.com/pricing) (non disponible sur les applications gratuites)

### Google Cloud SQL

* Instance **Cloud SQL pour PostgreSQL** (version 11 ou supérieure recommandée)
* **Accès à la base de données** avec autorisations de lecture pour les tables d'événements
* **Connectivité réseau** de OneSignal vers votre instance Cloud SQL
* **Proxy d'authentification Cloud SQL** pour des connexions sécurisées (recommandé)

***

## Configuration

<Steps>
  <Step title="Configurer l'accès à la base de données Cloud SQL">
    Créez un utilisateur dédié pour OneSignal avec un accès en lecture seule aux tables d'événements :

    ```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="Configurer l'accès réseau">
    Assurez-vous que OneSignal peut se connecter à votre instance Cloud SQL :

    **Option 1 : Réseaux autorisés (IP publique)**

    * Dans la console Google Cloud, accédez à **SQL > Instances**
    * Sélectionnez votre instance → **Connexions** → **Mise en réseau**
    * Ajoutez les adresses IP OneSignal aux **Réseaux autorisés**

    **Option 2 : IP privée (recommandée)**

    * Configurez votre instance Cloud SQL avec une IP privée
    * Utilisez le proxy d'authentification Cloud SQL pour des connexions sécurisées
    * Assurez-vous d'avoir un peering VPC approprié ou des règles de pare-feu

    **Option 3 : Proxy d'authentification Cloud SQL**

    * Téléchargez et configurez le proxy d'authentification Cloud SQL
    * Utilisez l'authentification de compte de service
    * Connectez-vous via un tunnel proxy sécurisé
  </Step>

  <Step title="Configurer le proxy d'authentification Cloud SQL (recommandé)">
    Pour une sécurité renforcée, utilisez le proxy d'authentification Cloud SQL :

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

    Create a service account with Cloud SQL Client role:

    ```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="Ajouter l'intégration dans OneSignal">
    Dans OneSignal, allez dans **Data > Integrations** et cliquez sur **Add Integration**.

    Sélectionnez **Google Cloud SQL** et fournissez :

    * **Nom de connexion d'instance** : `PROJECT_ID:REGION:INSTANCE_ID`
    * **Nom de la base de données** : Le nom de votre base de données d'événements
    * **Nom d'utilisateur** : `onesignal_reader`
    * **Mot de passe** : Le mot de passe créé à l'étape 1
    * **Mode SSL** : `require` (recommandé pour la sécurité)
    * **Type de connexion** : Choisissez entre Direct, Proxy d'authentification ou IP privée
  </Step>

  <Step title="Configurer les requêtes de données d'événements">
    Définissez la requête SQL pour récupérer les données d'événements de votre base de données Cloud SQL :

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

    Assurez-vous que vos tables d'événements incluent :

    * Nom/type d'événement (Chaîne)
    * Identifiant utilisateur (Chaîne)
    * Horodatage de l'événement (Timestamp)
    * Propriétés de l'événement (JSON/JSONB)
  </Step>

  <Step title="Tester la connexion">
    Cliquez sur **Tester la connexion** pour vérifier que OneSignal peut se connecter à votre instance Cloud SQL et exécuter la requête d'événement avec succès.
  </Step>
</Steps>

***

### Mappage des données d'événement

Mappez vos {DATA_TYPE_0} {PLATFORM_0} au format des événements personnalisés de OneSignal :

| Champ OneSignal | {COLUMN_HEADER_0} | Description                     | Requis |
| --------------- | ----------------- | ------------------------------- | ------ |
| `name`          | `event_name`      | Identifiant de l'événement      | Oui    |
| `external_id`   | `user_id`         | Identifiant de l'utilisateur    | Oui    |
| `timestamp`     | `event_timestamp` | Quand l'événement s'est produit | Non    |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0}      | Non    |

***

## Configuration avancée

### Pooling de connexions

Optimisez les connexions à la base de données pour la synchronisation d'événements à haut volume :

```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';
```

### Optimisation des requêtes

Améliorez les performances des requêtes d'événements :

```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';
```

### Gestion des données JSON

Si vous utilisez JSONB pour les propriétés d'événements, optimisez les requêtes JSON :

```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>
  Surveillez les performances de votre instance Cloud SQL lorsque OneSignal interroge les données d'événements. Envisagez d'utiliser des réplicas en lecture pour les charges de travail d'analyse afin d'éviter d'impacter les performances de production.
</Warning>

***

## FAQ

### À quelle fréquence OneSignal synchronise-t-il les événements depuis Cloud SQL ?

OneSignal synchronise les données d'événements en fonction de votre calendrier configuré, avec un intervalle minimum de 15 minutes.

### Puis-je utiliser des réplicas en lecture Cloud SQL pour la synchronisation d'événements ?

Oui, l'utilisation de réplicas en lecture est recommandée pour isoler les requêtes d'analyse de votre charge de travail de base de données de production.

### Que se passe-t-il si mon instance Cloud SQL est temporairement indisponible ?

OneSignal réessaiera les connexions avec un backoff exponentiel. La synchronisation d'événements reprendra automatiquement une fois que votre instance sera à nouveau accessible.
