Repositories aufteilen

In diesem Dokument werden Strategien zur Aufteilung eines Dataform-Repositorys und zum Verwalten von Repository-übergreifenden Abhängigkeiten beschrieben.

Repositories sind die Kerneinheiten in Dataform. In einem Repository werden alle SQLX- und JavaScript-Dateien gespeichert, aus denen sich Ihr SQL-Workflow zusammensetzt, sowie Dataform-Konfigurationsdateien und ‐Pakete. Sie können einen SQL-Workflow in einem einzelnen Repository speichern oder einen SQL-Workflow auf mehrere Repositories aufteilen.

Das Aufteilen eines Repositorys in Dataform hat folgende Vorteile:

  • Einhaltung der Dataform-Limits für die Nutzung von Kompilierungsressourcen Wenn Sie einen großen SQL-Workflow in mehrere kleinere Repositories aufteilen, verringert sich das Risiko, die Dataform-Limits für Kompilierungsressourcen zu überschreiten.
  • Präzisionsprozesse Sie können Prozesse wie CI-Regeln (Continuous Integration) einzeln für jedes Teilfragment Ihres SQL-Workflows und das Entwicklungsteam festlegen.
  • Detaillierte Berechtigungen. Sie können die Berechtigungen für jedes aufgeteilte Fragment Ihres SQL-Workflows und für das Entwicklerteam einzeln festlegen, um die Sicherheit des SQL-Workflows insgesamt zu verbessern.
  • Verbessern Sie die Zusammenarbeit, indem Sie die Anzahl der Mitbearbeiter reduzieren, die an jedem aufgeteilten Fragment Ihres SQL-Workflows arbeiten.
  • Die Lesbarkeit der Codebasis wird verbessert. Wenn Sie die Dateien, aus denen ein großer SQL-Workflow besteht, in mehrere Repositories aufteilen, ist es einfacher, jedes Repository einzeln aufzurufen, als den gesamten SQL-Workflow auf einmal durchzugehen.
  • Beschleunigen der Workflow-Ausführung jedes aufgeteilten Fragments Ihres SQL-Workflows im Vergleich zur Ausführung des gesamten SQL-Workflows.

Das Aufteilen eines Repositorys in Dataform hat folgende Nachteile:

  • Benutzerdefinierte Konfiguration für Continuous Integration/Continuous Development (CI/CD), die für jedes Dataform-Repository und das entsprechende Git-Repository erforderlich ist
  • Für jedes Dataform-Repository und das zugehörige Git-Repository ist eine benutzerdefinierte Planungskonfiguration erforderlich.
  • Schwierigkeiten bei der Verwaltung von Abhängigkeiten zwischen Objekten Ihres Workflows, die sich in mehreren Repositories befinden.
  • Es gibt keine umfassende DAG-Visualisierung (Directed Acyclic Graph, DAG) des SQL-Workflows, der auf mehrere Repositories aufgeteilt ist. In jedem Repository stellt der generierte DAG nur einen Teil des gesamten SQL-Workflows dar.

Strategien zum Aufteilen eines Repositorys

Wenn Sie ein Repository aufteilen, teilen Sie die Dateien eines übergeordneten SQL-Workflows in kleinere untergeordnete SQL-Workflows auf, die sich in separaten Dataform-Repositories befinden.

Sie haben folgende Möglichkeiten, ein Repository aufzuteilen:

  • 1 Repository pro Entwicklungsteam.
  • Ein Repository pro Domain, z. B. Vertrieb, Marketing oder Logistik
  • 1 zentrales Repository und 1 Repository pro Domain, das die Inhalte des zentralen Repositorys als Datenquellen verwendet.

Wenn Sie den übergeordneten SQL-Workflow auf der Git-Hostingplattform eines Drittanbieters unterbringen möchten, müssen Sie jedes der separaten Repositories mit untergeordneten Workflows einzeln mit einem dedizierten Git-Repository eines Drittanbieters verbinden.

Repository-übergreifende Abhängigkeiten verwalten

Die effizienteste Methode zum Aufteilen eines Repositorys besteht darin, den übergeordneten SQL-Workflow in eigenständige untergeordnete SQL-Workflows zu unterteilen und so unabhängige Repositories zu erstellen. Ein unabhängiges Repository verwendet nicht den Inhalt eines anderen Repositorys als Datenquelle. Bei diesem Ansatz müssen keine Repository-übergreifenden Abhängigkeiten verwaltet werden.

Wenn sich Repository-übergreifende Abhängigkeiten nicht vermeiden lassen, können Sie sie verwalten, indem Sie ein Repository in eine Reihe von Repositories aufteilen, wobei ein Repository von seinem Vorgänger abhängt und eine Datenquelle für seinen Nachfolger ist. Die Abfolge der Repositories und deren Abhängigkeiten sollte die Struktur des übergeordneten SQL-Workflows am besten widerspiegeln.

Abhängigkeiten zwischen Repositories können mit Dataform-Datenquellendeklarationen erstellt werden. Sie können einen BigQuery-Tabellentyp aus einem anderen Dataform-Repository als Datenquelle im derzeit bearbeiteten Repository deklarieren. Nachdem Sie eine Datenquelle deklariert haben, können Sie wie jedes andere Dataform-SQL-Workflowobjekt darauf verweisen und sie zur Entwicklung Ihres SQL-Workflows verwenden.

Wenn Sie die Ausführung eines SQL-Workflows planen, der zwischen Repositories mit Repository-übergreifenden Abhängigkeiten aufgeteilt ist, müssen Sie die Repositories einzeln in der Reihenfolge der Repository-übergreifenden Abhängigkeiten ausführen.

Wir empfehlen, ein Repository nicht in eine Gruppe von Repositories mit bidirektionalen Abhängigkeiten aufzuteilen. Eine bidirektionale Abhängigkeit zwischen Repositories tritt auf, wenn ein Repository eine Datenquelle für ein anderes Repository ist und dieses Repository ebenfalls als Datenquelle verwendet. Zweiseitige Abhängigkeiten zwischen Repositories erschweren die Planung und Ausführung des übergeordneten SQL-Workflows sowie der Entwicklungsprozesse.

Nächste Schritte