Aufnahmeverwaltung¶
Nachdem der Konnektor konfiguriert ist, kann er mit der Aufnahme von Daten beginnen. In der Regel werden jedoch weitere Informationen benötigt, bevor die Datenaufnahme (Ingestion) aus dem Quellsystem erfolgen kann. Die meisten Systeme halten die Daten zumindest mit einer gewissen Granularität fest, seien es Tabellen, Repositorys, Dateien oder Berichte. Das Snowflake Native SDK for Connectors verwendet den Begriff der Ressource (resource
) unabhängig von der Bezeichnung im Originalsystem. Um Ressourcen zu identifizieren und die Einstellungen für deren Aufnahme anzupassen, werden Definitionen für die Datenaufnahme der Ressourcen (resource_ingestion_definitions
) verwendet. Außerdem ist der eigentliche Prozess der Datenaufnahme in Datenaufnahmeprozesse (ingestion_processes
) organisiert, die aus mehreren Datenaufnahmeläufen (ingestion_runs
) bestehen. Diese Abstraktion macht es einfacher, Prozesse zu verfolgen, zu planen und zu differenzieren.
Anforderungen¶
Dieser Abschnitt erfordert mindestens die folgenden SQL-Dateien, die während der Installation der nativen App ausgeführt werden müssen:
ingestion/ingestion_management.sql
ingestion/ingestion_definitions_view.sql
ingestion/ingestion_process.sql
ingestion/ingestion_run.sql
ingestion/resource_ingestion_definition.sql
Datenaufnahmedefinition der Ressource¶
Die Datenaufnahmedefinition der Ressource ist eine generische Entität, die die Definition der Quelldaten im Quellsystem enthält. Um es so allgemein wie möglich zu halten, werden die systemspezifischen Optionen als variants
in der zugrunde liegenden Tabelle STATE.RESOURCE_INGESTION_DEFINITION
gespeichert. Die Java-Definition des Repositorys ResourceIngestionDefinitionRepository
ist jedoch eine generische Schnittstelle, um eine bessere Kontrolle über die Typisierung zu haben.
Da die meisten Werte der Datenaufnahmedefinition der Ressource während der Implementierung angepasst werden können, liegt es am Entwickler zu entscheiden, wie die generischen Felder verwendet werden sollen, und sie dann während der Aufnahme zu nutzen.
Die wichtigsten anpassbaren Eigenschaften der Datenaufnahmedefinition der Ressource sind:
parent_id
Dieser optionale Parameter ermöglicht es, Ressourcendefinitionen miteinander zu verknüpfen, um z. B. einen Teil der Konfiguration zu erben.
resource_id
Dieser variant
-Wert sollte die Identifizierung einer Ressource im Quellsystem ermöglichen, er sollte eindeutig sein.
ingestion_configurations
Diese Eigenschaft ist die eigentliche Konfiguration der Datenaufnahme. Jede Definition kann mehrere Konfigurationen haben, z. B. wenn dieselbe Ressource aus irgendeinem Grund zu zwei verschiedenen Zeitpunkten aufgenommen oder in mehreren Senkentabellen gespeichert werden soll. Diese Eigenschaft enthält einige obligatorische Felder, bietet aber dennoch eine gewisse Flexibilität, wenn es darum geht, die kundenspezifische Konfiguration und das Ziel der Daten zu definieren.
resource_metadata
Diese Eigenschaft sollte alle zusätzlichen Informationen enthalten, die erforderlich sind, aber nicht in die oben genannten Felder passen.
Datenaufnahmeprozess¶
Ein Datenaufnahme- oder Ingestion-Prozess ist eine Entität, die den aktivierten Datenaufnahmeprozess für eine bestimmte Ressource darstellt. Der Prozess wird erstellt, sobald eine Ressource hinzugefügt oder aktiviert wird, und sollte abgeschlossen werden, sobald die Ressource gelöscht oder deaktiviert wird. In gewisser Weise ist es wie ein Hintergrundprozess im Betriebssystem, der zwar aktiviert sein kann, aber nicht unbedingt in diesem Moment aktiv ist, also Aktionen ausführt. Wann immer die Datenaufnahme tatsächlich ausgeführt wird, kann sie in den Zustand IN_PROGRESS
übergehen, andernfalls kann sie im Zustand SCHEDULED
verbleiben. Beim Dispatching ruft der Scheduler (scheduler
) alle Prozesse im Zustand SCHEDULED
ab und führt die Datenaufnahme für sie durch.
Der Ingestion-Prozess kann auch verwendet werden, um verschiedene Datenaufnahmetypen zu definieren, z. B. wenn der Konnektor täglich einige Daten lädt, aber aus irgendeinem Grund einige alte Daten beschädigt sind und neu geladen werden müssen. Wenn das der Fall ist, kann ein neuer Prozesstyp type
eingeführt werden, zum Beispiel RELOAD
. Dann kann der Scheduler (scheduler
) über eine kundenspezifische Logik verfügen, um verschiedene Operationen für verschiedene Typen von Prozessen auszuführen.
Datenaufnahmelauf¶
Der Datenaufnahmelauf ist eine weitere Entität, in der Informationen zu vergangenen und laufenden Datenaufnahmen gespeichert werden. Diese Daten sind jedoch detaillierter als die in der Datenaufnahmeprozess (ingestion_process
) selbst. Zunächst einmal sollte der Datenaufnahmelauf als Protokolleintrag betrachtet werden. Zweitens ist ingestion_run
ein Eintrag, der nur einen einzigen Aufruf während eines lang laufenden Prozesses beschreibt. Wenn also für eine Ressource einmal pro Tag eine Datenaufnahme ausgeführt wird, sollte jeden Tag ein neuer Eintrag für den Datenaufnahmelauf erstellt werden. Alle diese Einträge werden mit einem einzigen Prozess verknüpft.
Operationen der Datenaufnahmeverwaltung¶
Neue Ressource erstellen¶
Der Prozess der Ressourcenerstellung dient der Definition und dem Zeitplanung für die Datenaufnahme aus einem Quellsystem. Er erstellt einen Datensatz zur Datenaufnahmedefinition der Ressource und entsprechende Aufnahmeprozesse, wenn eine bestimmte Ressource anfänglich aktiviert werden soll.
Weitere Informationen finden Sie unter Ressource erstellen.
Ressourcen anzeigen¶
Konfigurierte Definitionen von Ressourcen können in der PUBLIC.INGESTION_DEFINITIONS
-Ansicht eingesehen werden. Die Ansicht liefert jedoch nur Basisinformationen zu jeder Ressource. Alle kundenspezifischen Konfigurationen sind für den Benutzer nicht sichtbar, insbesondere weil einige von ihnen intern von der Logik des Konnektors generiert werden können.
Deaktivieren einer Ressource¶
Der Schritt zum Deaktivieren einer Ressource wird verwendet, um die Aufnahme von Daten für eine bestimmte Ressource zu beenden. Es beendet aktive Datenaufnahmeprozesse und markiert eine Datenaufnahmedefinition der Ressource als deaktiviert.
Weitere Informationen finden Sie unter Ressource deaktivieren.
Aktivieren einer Ressource¶
Das Aktivieren einer Ressource wird verwendet, um mit der Datenaufnahme für eine bestimmte Ressource zu beginnen. Es erstellt neue Datenaufnahmeprozesse und markiert eine Datenaufnahmedefinition der Ressource als aktiviert.
Weitere Informationen finden Sie unter Ressource aktivieren.
Aktualisieren einer Ressource¶
Die Aktualisierung einer Ressource wird verwendet, um die Konfiguration der Datenaufnahme für eine bestimmte Ressource zu ändern. Sie ändert eine Datenaufnahmedefinition der Ressource und beendet oder erstellt neue Aufnahmeprozesse.
Weitere Informationen finden Sie unter Ressource aktualisieren.