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.