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.