Gestion de l’ingestion

Une fois le connecteur configuré, il peut commencer à ingérer les données. Cependant, des informations supplémentaires sont généralement nécessaires avant de pouvoir ingérer les données du système source. La plupart des systèmes conservent les données avec au moins une certaine granularité, qu’il s’agisse de tables, de référentiels, de fichiers ou de rapports. Snowflake Native SDK for Connectors utilise le terme resource quel que soit son nom dans le système d’origine. Pour identifier les ressources et personnaliser les paramètres de leur ingestion, resource_ingestion_definitions est utilisé. En outre, le processus d’ingestion proprement dit est organisé en ingestion_processes, qui se composent de plusieurs ingestion_runs. Cette abstraction facilite le suivi, la planification et la différenciation des processus.

Exigences

Cette section nécessite au moins l’exécution des fichiers SQL suivants lors de l’installation de l’application native :

  • ingestion/ingestion_management.sql

  • ingestion/ingestion_definitions_view.sql

  • ingestion/ingestion_process.sql

  • ingestion/ingestion_run.sql

  • ingestion/resource_ingestion_definition.sql

Définition de l’ingestion de ressources

La définition de l’ingestion des ressources est une entité générique qui contient la définition des données source dans le système source. Pour rester aussi générique que possible, les options spécifiques au système sont conservées sous la forme de variants dans la table STATE.RESOURCE_INGESTION_DEFINITION sous-jacente. Toutefois, la définition Java du référentiel ResourceIngestionDefinitionRepository est une interface générique qui permet de mieux contrôler le typage.

Étant donné que la plupart des définitions de l’ingestion des ressources peuvent être personnalisées lors de la mise en œuvre, il appartient au développeur de décider comment utiliser les champs génériques et d’en faire usage lors de l’ingestion.

Les principales propriétés personnalisables de la définition de l’ingestion de ressources sont les suivantes :

  • parent_id

Ce paramètre facultatif permet de lier les définitions de ressources entre elles, par exemple pour hériter d’une partie de la configuration.

  • resource_id

Cette variant doit permettre l’identification d’une ressource dans le système source, elle doit être unique.

  • ingestion_configurations

Chaque définition peut avoir plusieurs configurations, par exemple si, pour une raison quelconque, la même ressource doit être ingérée à deux moments différents ou sauvegardée dans plusieurs tables de stockage. Cette propriété comporte certains champs obligatoires, mais elle offre une certaine souplesse lorsqu’il s’agit de définir une configuration personnalisée et la destination des données.

  • resource_metadata

Cette propriété doit contenir toute information supplémentaire qui est nécessaire, mais qui n’entre pas dans les champs mentionnés ci-dessus.

Processus d’ingestion

Le processus d’ingestion est une entité représentant le processus activé d’ingestion d’une ressource définie. Il est créé lorsqu’une ressource est ajoutée ou activée et doit être complété lorsqu’elle est supprimée ou désactivée. D’une certaine manière, c’est un peu comme un processus d’arrière-plan dans le système d’exploitation, il peut être vivant mais ne fait pas nécessairement de travail à ce moment précis. Lorsque l’ingestion est en cours d’exécution, elle peut passer à l’état IN_PROGRESS, sinon elle peut rester à l’état SCHEDULED. Lors de la répartition du travail, scheduler récupère tous les processus SCHEDULED et lance l’ingestion pour eux.

Le processus d’ingestion peut également être utilisé pour définir différents types d’ingestion. Par exemple, disons qu’un connecteur charge quotidiennement des données, mais que, pour une raison ou une autre, d’anciennes données sont corrompues et doivent être rechargées. Si c’est le cas, un nouveau type de processus peut être introduit, par exemple RELOAD. Ensuite, scheduler peut avoir une logique personnalisée pour effectuer différentes opérations pour différents types de processus.

Cycle d’ingestion

Le cycle d’ingestion est une autre entité qui stocke des informations sur l’ingestion passée et en cours. Toutefois, ces données sont plus granulaires que le processus ingestion_process lui-même. Tout d’abord, le cycle d’ingestion doit être considéré comme des données de journal. Deuxièmement, ingestion_run est une entrée décrivant un seul appel au cours d’un processus de longue durée. Ainsi, si une ressource est ingérée une fois par jour, il doit y avoir chaque jour une nouvelle entrée dans le cycle d’ingestion. Toutes ces entrées seront liées au processus unique.

Opérations de gestion de l’ingestion

Création d’une nouvelle ressource

Le processus de création de ressources est utilisé pour définir et planifier une ingestion de données à partir d’un système source. Il crée un enregistrement de définition d’ingestion de ressources et des processus d’ingestion correspondants si une ressource donnée doit être initialement activée.

Pour plus d’informations, consultez Créer une ressource.

Affichage des ressources

Les définitions des ressources configurées peuvent être examinées dans la vue PUBLIC.INGESTION_DEFINITIONS. Cependant, cette vue ne renvoie que des informations de base sur chaque ressource. Toutes les configurations personnalisées ne sont pas visibles pour l’utilisateur final, notamment parce que certaines d’entre elles peuvent être générées en interne par la logique du connecteur.

Désactivation d’une ressource

L’étape de désactivation d’une ressource permet d’arrêter l’ingestion de données pour une ressource donnée. Elle termine les processus d’ingestion actifs et marque une définition d’ingestion de ressources comme désactivée.

Pour plus d’informations, consultez Désactiver la ressource.

Activation d’une ressource

L’activation d’une ressource permet de démarrer l’ingestion de données pour une ressource donnée. Elle crée de nouveaux processus d’ingestion et marque une définition d’ingestion de ressources comme activée.

Pour plus d’informations, consultez Activer la ressource.

Mise à jour d’une ressource

La mise à jour d’une ressource permet de modifier une configuration d’ingestion pour une ressource donnée. Elle modifie une définition d’ingestion de ressources et termine ou crée de nouveaux processus d’ingestion.

Pour plus d’informations, voir Mettre à jour la ressource.