Paramétrez Openflow Connector for SQL Server

Note

Le connecteur est soumis aux conditions d’utilisation du connecteur.

Cette rubrique décrit les étapes pour paramétrer Openflow Connector for SQL Server.

Conditions préalables

  1. Assurez-vous d’avoir consulté À propos de Openflow Connector for SQL Server.

  2. Assurez-vous d’avoir consulté Versions du serveur SQL prises en charge.

  3. Assurez-vous que vous avez paramétré Openflow.

  4. En tant qu’administrateur de la base de données, effectuez les tâches suivantes :

    1. Activez le suivi des modifications sur la base de données et les tables https://learn.microsoft.com/en-us/sql/relational-databases/track-changes/enable-and-disable-change-tracking-sql-server?view=sql-server-ver16#enable-change-tracking-for-a-table. Le connecteur exige que le suivi des modifications soit activé sur la base de données et les tables avant le début de la réplication. Assurez-vous que chaque table que vous prévoyez de répliquer a activé le suivi des modifications. Vous pouvez également activer le suivi des modifications pour d’autres tables lorsque le connecteur est en cours d’exécution. Voir l’extrait de code suivant :

      ALTER DATABASE <database>
      SET CHANGE_TRACKING = ON
      (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON);
      
      ALTER TABLE <schema>.<table>
      ENABLE CHANGE_TRACKING
      WITH (TRACK_COLUMNS_UPDATED = ON);
      
      Copy
    2. Créez un utilisateur pour le connecteur. Le connecteur requiert un utilisateur bénéficiant de l’autorisation VIEW CHANGE TRACKING sur les tables répliquées. Donnez à cet utilisateur un mot de passe pour accéder à la configuration du connecteur.

      CREATE LOGIN <user_name> WITH PASSWORD = <password>;
      CREATE USER <user_name> FOR LOGIN <user_name>;
      GRANT SELECT ON <schema>.<table> TO <user_name>;
      GRANT VIEW CHANGE TRACKING ON <schema>.<table> TO <user_name>;
      
      Copy
    3. Connexion via SSL. Si vous planifiez d’utiliser une connexion SSL avec le serveur SQL, préparez le certificat racine de votre serveur de base de données. Elle est exigée lors de la configuration.

  5. En tant qu’administrateur de compte Snowflake, effectuez les tâches suivantes :

    1. Créez un utilisateur Snowflake avec le type SERVICE. Créez une base de données pour stocker les données répliquées et définissez les privilèges permettant à l’utilisateur de Snowflake de créer des objets dans cette base de données en lui accordant les privilèges USAGE et CREATE SCHEMA.

      CREATE DATABASE <destination_database>;
      CREATE USER <openflow_user> TYPE=SERVICE COMMENT='Service user for automated access of Openflow';
      CREATE ROLE <openflow_role>;
      GRANT ROLE <openflow_role> TO USER <openflow_user>;
      GRANT USAGE ON DATABASE <destination_database> TO ROLE <openflow_role>;
      GRANT CREATE SCHEMA ON DATABASE <destination_database> TO ROLE <openflow_role>;
      CREATE WAREHOUSE <openflow_warehouse>
           WITH
               WAREHOUSE_SIZE = 'MEDIUM'
               AUTO_SUSPEND = 300
               AUTO_RESUME = TRUE;
      GRANT USAGE, OPERATE ON WAREHOUSE <openflow_warehouse> TO ROLE <openflow_role>;
      
      Copy
    2. Créez une paire de clés sécurisées (publique et privée). Stockez la clé privée de l’utilisateur dans un fichier à fournir à la configuration du connecteur. Attribuez la clé publique à l’utilisateur du service Snowflake :

      ALTER USER <openflow_user> SET RSA_PUBLIC_KEY = 'thekey';
      
      Copy

      Pour plus d’informations, voir Authentification par paire de clés et rotation de paires de clés.

    3. Désignez un entrepôt à utiliser par le connecteur. Commencez par la taille d’entrepôt MEDIUM, puis faites des essais en fonction du nombre de tables répliquées et de la quantité de données transférées. Les tables de grande taille s’adaptent généralement mieux aux entrepôts multi-clusters, plutôt qu’à la taille de l’entrepôt.

Définir le connecteur

En tant qu’ingénieur des données, effectuez les tâches suivantes pour configurer le connecteur :

Installer le connecteur

  1. Naviguez jusqu’à la page d’aperçu d’Openflow. Dans la section Featured connectors, sélectionnez View more connectors.

  2. Sur la page des connecteurs Openflow, trouvez le connecteur et sélectionnez Add to runtime.

  3. Dans la boîte de dialogue Select runtime, sélectionnez votre environnement d’exécution dans la liste déroulante Available runtimes.

  4. Sélectionnez Add.

    Note

    Avant d’installer le connecteur, assurez-vous que vous avez créé une base de données et un schéma dans Snowflake pour que le connecteur puisse stocker les données ingérées.

  5. Authentifiez-vous au déploiement avec les identifiants de votre compte Snowflake et sélectionnez Allow lorsque vous êtes invité à autoriser l’application d’exécution à accéder à votre compte Snowflake. Le processus d’installation du connecteur prend quelques minutes.

  6. Authentifiez-vous auprès de l’environnement d’exécution avec les identifiants de votre compte Snowflake.

Le canevas Openflow apparaît avec le groupe de processus du connecteur ajouté.

Configuration du connecteur

Vous pouvez configurer le connecteur pour les cas d’utilisation suivants :

Répliquer un ensemble de tables en temps réel

  1. Cliquez avec le bouton droit de la souris sur le groupe de processus importé et sélectionnez Parameters.

  2. Renseignez les valeurs des paramètres requis comme décrit dans Paramètres de débit.

Paramètres de débit

Commencez par définir les paramètres du contexte des paramètres source SQLServer, puis du contexte des paramètres de destination SQLServer. Une fois cette opération effectuée, vous pouvez activer le connecteur. Le connecteur devrait se connecter à la fois à SQLServer et à Snowflake et commencer à fonctionner. Toutefois, le connecteur ne réplique aucune donnée tant que les tables à répliquer n’ont pas été explicitement ajoutées à sa configuration.

Pour configurer des tables spécifiques pour la réplication, modifiez le contexte des paramètres d’ingestion SQLServer. Une fois que vous avez appliqué les modifications au contexte des paramètres d’ingestion SQLServer, la configuration est reprise par le connecteur et le cycle de vie de la réplication démarre pour chaque table.

Contexte des paramètres source SQLServer

Paramètre

Description

URL de connexion au serveur SQL

L’adresse complète URL JDBC de la base de données source.

Exemple :

  • jdbc:sqlserver://example.com:1433;encrypt=false;databaseName=<example_database>

Pilote JDBC du serveur SQL

Cochez la case Reference asset pour télécharger le pilote du serveur JDBCSQL.

Mode SSL serveur SQL

Activez ou désactivez les connexions SSL.

Certificat SSL racine du serveur SQL

Le contenu complet du certificat racine de la base de données. Facultatif si SSL désactivé.

Nom d’utilisateur du serveur SQL

Le nom d’utilisateur du connecteur.

Mot de passe du serveur SQL

Le mot de passe du connecteur.

Contexte des paramètres de destination SQLServer

Paramètre

Description

Base de données de destination

La base de données dans laquelle les données seront conservées. Elle doit déjà exister dans Snowflake

Identificateur de compte Snowflake

Nom du compte Snowflake formaté comme suit : [[nom de l’organisation] -[[nom du compte] où les données seront conservées

Stratégie d’authentification Snowflake

Stratégie d’authentification auprès de Snowflake. Valeurs possibles : SNOWFLAKE_SESSION_TOKEN, lorsque vous exécutez le flux sur SPCS et KEY_PAIR lorsque vous souhaitez établir l’accès à l’aide d’une clé privée.

Clé privée de Snowflake

La clé privée RSA utilisée pour l’authentification. La clé RSA doit être formatée selon les normes PKCS8 et comporter les en-têtes et pieds de page standard PEM. Notez que vous devez définir soit le fichier de clé privée de Snowflake, soit la clé privée de Snowflake.

Fichier de clé privée de Snowflake

Le fichier qui contient la clé privée RSA utilisée pour l’authentification à Snowflake, formaté selon les normes PKCS8 et comportant les en-têtes et pieds de page standard PEM. La ligne d’en-tête commence par -----BEGIN PRIVATE. Cochez la case Reference asset pour télécharger le fichier de la clé privée.

Mot de passe de la clé privée de Snowflake

Le mot de passe associé au fichier de la clé privée de Snowflake

Rôle Snowflake

Rôle Snowflake utilisé lors de l’exécution de la requête

Nom d’utilisateur Snowflake

Nom d’utilisateur utilisé pour se connecter à l’instance de Snowflake

Entrepôt Snowflake

L’entrepôt de Snowflake est utilisé pour exécuter des requêtes

Contexte des paramètres d’ingestion SQLServer

Paramètre

Description

Noms des tables incluses

Une liste de chemins d’accès aux tables, séparés par des virgules, y compris leurs bases de données et leurs schémas. Exemple : database_public.public.my_table, other_database.other_schema.other_table

Table incluse Regex

Une expression régulière à associer aux chemins de la table. Chaque chemin correspondant à l’expression sera répliqué, et les nouvelles tables correspondant au modèle qui seront créées ultérieurement seront également incluses automatiquement. Exemple : database_public.public\.auto_.*

Filtre JSON

Une adresse JSON contenant une liste de noms de tables entièrement qualifiés et un modèle de regex pour les noms de colonnes à inclure dans la réplication. Exemple : [ {"database":"database_public","schema":"public", "table":"table1", "includedPattern":".*name"} ] inclura toutes les colonnes qui se terminent par name dans table1 de la base de données database_public et du schéma public.

Fusionner la planification des tâches CRON

Expression CRON définissant les périodes au cours desquelles les opérations de fusion du journal vers la table de destination seront déclenchées. Paramétrez cet élément sur * * * * * ? si vous souhaitez une fusion continue ou une planification pour limiter la durée d’exécution de l’entrepôt.

Par exemple :

  • La chaîne * 0 * * * ? indique que vous souhaitez planifier des fusions à l’heure pleine pendant une minute

  • La chaîne * 20 14 ? * MON-FRI indique que vous souhaitez planifier les fusions à 14h20 tous les lundis et vendredis.

Pour plus d’informations et d’exemples, consultez le tutoriel sur les déclencheurs cron dans la documentation de Quartz

Supprimez et ajoutez à nouveau une table à la réplication

Pour supprimer une table de la réplication, assurez-vous qu’elle est supprimée des paramètres Noms des tables incluses ou Table incluse Regex dans le contexte des paramètres de réplication.

Si vous souhaitez réajuster la table à la réplication ultérieurement, supprimez d’abord la table de destination correspondante dans Snowflake. Ensuite, ajoutez à nouveau la table aux paramètres Noms des tables incluses ou Table incluse Regex. Cela permet de garantir que le processus de réplication démarre à nouveau pour la table.

Cette approche peut également être utilisée pour récupérer un scénario de réplication de table qui a échoué.

Répliquer un sous-ensemble de colonnes dans une table

Le connecteur peut filtrer les données répliquées par table sur un sous-ensemble de colonnes configurées.

Pour appliquer des filtres aux colonnes, modifiez la propriété Filtre de colonne dans le contexte Paramètres de réplication, en ajoutant un tableau de configurations, une entrée pour chaque table à laquelle vous souhaitez appliquer un filtre.

Les colonnes peuvent être incluses ou exclues par nom ou par modèle. Vous pouvez appliquer une seule condition par table ou combiner plusieurs conditions, les exclusions ayant toujours la priorité sur les inclusions.

L’exemple suivant montre les champs disponibles. Les champs schema et table sont obligatoires. Une ou plusieurs des adresses suivantes : included, excluded, includedPattern, excludedPattern sont exigées.

[
    {
        "schema": "<source table schema>",
        "table" : "<source table name>",
        "included": ["<column name>", "<column name>"],
        "excluded": ["<column name>", "<column name>"],
        "includedPattern": "<regular expression>",
        "excludedPattern": "<regular expression>",
    }
]
Copy

Suivre les changements de données dans les tables

Le connecteur réplique non seulement l’état actuel des données des tables sources, mais aussi les états intermédiaires de chaque ligne. Toutefois, en raison du mécanisme de suivi des modifications utilisé, il n’est pas garanti que tous les états intermédiaires de chaque ligne soient répliqués.

Ces données sont stockées dans des tables de journal créées dans le même schéma que la table de destination.

Les noms des tables du journal sont formatés comme suit : <nom de la table source>_JOURNAL_<génération du schéma>

Ici, <schema generation> est un entier qui augmente à chaque changement de schéma sur la table source. Cela signifie qu’une table source qui subit des modifications de schéma aura plusieurs tables de journal.

Important

Snowflake vous recommande de ne pas modifier les tables du journal ou les données qu’elles contiennent, de quelque manière que ce soit. Elles sont utilisées par le connecteur pour mettre à jour la table de destination dans le cadre du processus de réplication.

Configuration de la planification des tâches de fusion

Le connecteur utilise un entrepôt pour fusionner les données de capture des données de changement (CDC) dans les tables de destination. Cette opération est déclenchée par le processeur MergeSnowflakeJournalTable. S’il n’y a pas de nouvelles modifications ou si aucun nouveau fichier de flux n’est en attente dans la file d’attente MergeSnowflakeJournalTable, aucune fusion n’est déclenchée et l’entrepôt se suspend automatiquement.

Pour limiter le coût de l’entrepôt et restreindre les fusions aux seules heures planifiées, utilisez l’expression CRON dans le paramètre de planification CRON de la tâche de fusion. Elle limite les fichiers de flux arrivant au processeur MergeSnowflakeJournalTable et les fusions ne sont déclenchées qu’au cours d’une période donnée. Pour plus d’informations sur la planification, voir Stratégie de planification.

Exécutez le flux

  1. Cliquez avec le bouton droit de la souris sur l’avion et sélectionnez Enable all Controller Services.

  2. Cliquez avec le bouton droit de la souris sur le groupe de processus importé et sélectionnez Start. Le connecteur démarre l’ingestion des données.