In diesem Dokument werden Strategien zum Aufteilen eines Dataform-Repositories und zum Verwalten von repositorieübergreifenden Abhängigkeiten beschrieben.
Repositories sind die zentralen Einheiten in Dataform. In einem Repository werden alle SQLX- und JavaScript-Dateien gespeichert, aus denen Ihr SQL-Workflow besteht, 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 Repositories in Dataform bietet folgende Vorteile:
- Beachten Sie die Dataform-Limits für die Nutzung von Ressourcen für die Kompilierung. Wenn Sie einen großen SQL-Workflow in mehrere kleinere Repositories aufteilen, verringern Sie das Risiko, die Dataform-Limits für Kompilierungsressourcen zu überschreiten.
- Detaillierte Prozesse Sie können Prozesse wie CI-Regeln (Continuous Integration) individuell für jedes aufgeteilte Fragment Ihres SQL-Workflows und das Entwicklerteam festlegen.
- Detaillierte Berechtigungen Sie können Berechtigungen für jedes aufgeteilte Fragment Ihres SQL-Workflows und das Team, das es entwickelt, individuell festlegen, um die allgemeine Sicherheit des SQL-Workflows zu erhöhen.
- Verbesserung der Zusammenarbeit durch Minimierung der Anzahl der Mitbearbeiter, die an jedem geteilten Fragment Ihres SQL-Workflows arbeiten.
- Verbesserung der Lesbarkeit des Codebase Wenn Sie die Dateien eines großen SQL-Workflows in mehrere Repositories aufteilen, können Sie jedes Repository einzeln aufrufen, anstatt den gesamten SQL-Workflow auf einmal zu bearbeiten.
- Beschleunigung der Workflowausführung jedes geteilten Fragments Ihres SQL-Workflows im Vergleich zur Ausführung des gesamten SQL-Workflows.
Das Aufteilen eines Dataform-Repositorys hat folgende Nachteile:
- Benutzerdefinierte CI/CD-Konfiguration (Continuous Integration/Continuous Development) für jedes Dataform-Repository und das entsprechende Git-Repository.
- Für jedes Dataform-Repository und das zugehörige Git-Repository ist eine benutzerdefinierte Planungskonfiguration erforderlich.
- Schwierigkeiten beim Verwalten von Abhängigkeiten zwischen Objekten Ihres Workflows, die sich in mehreren Repositories befinden.
- Fehlende umfassende DAG-Visualisierung (Directed Acyclic Graph) 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, aus denen ein übergeordneter SQL-Workflow besteht, in kleinere untergeordnete SQL-Workflows auf, die in separaten Dataform-Repositories gespeichert sind.
Sie haben folgende Möglichkeiten, ein Repository aufzuteilen:
- 1 Repository pro Entwicklungsteam.
- 1 Repository pro Domain, z. B. Vertrieb, Marketing oder Logistik.
- 1 zentrales Repository und 1 Repository pro Domain, das den Inhalt des zentralen Repositorys als Datenquellen verwendet.
Wenn Sie den übergeordneten SQL-Workflow auf einer Git-Hostingplattform eines Drittanbieters speichern möchten, müssen Sie jedes der separaten Repositories mit untergeordneten Workflows einzeln mit einem speziellen Git-Repository eines Drittanbieters verbinden.
Repositoryübergreifende Abhängigkeiten verwalten
Die effizienteste Methode zum Aufteilen eines Repositories besteht darin, den übergeordneten SQL-Workflow in eigenständige untergeordnete SQL-Workflows zu unterteilen und unabhängige Repositories zu erstellen. In einem unabhängigen Repository wird der Inhalt eines anderen Repositorys nicht als Datenquelle verwendet. Bei diesem Ansatz müssen keine repositoryübergreifenden Abhängigkeiten verwaltet werden.
Wenn Sie Repository-übergreifende Abhängigkeiten nicht vermeiden können, können Sie sie verwalten, indem Sie ein Repository in eine Reihe von Repositories aufteilen, in denen ein Repository vom Vorgänger abhängt und eine Datenquelle für den Nachfolger ist. Die Abfolge der Repositories und ihre Abhängigkeiten müssen die Struktur des übergeordneten SQL-Workflows am besten widerspiegeln.
Mit Dataform-Datenquellendeklarationen können Sie Abhängigkeiten zwischen Repositories erstellen. 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 darauf wie auf jedes andere Dataform-SQL-Workflowobjekt verweisen und sie zum Entwickeln Ihres SQL-Workflows verwenden.
Wenn Sie die Ausführung eines SQL-Workflows planen, der auf Repositories mit repositoryübergreifenden Abhängigkeiten aufgeteilt ist, müssen Sie die Repositories nacheinander in der Reihenfolge der repositoryübergreifenden Abhängigkeiten ausführen.
Wir empfehlen, ein Repository nicht in eine Gruppe von Repositories mit zweiseitigen Abhängigkeiten aufzuteilen. Eine beidseitige Abhängigkeit zwischen Repositories liegt vor, wenn ein Repository eine Datenquelle für ein anderes Repository ist und dieses Repository auch als Datenquelle verwendet. Zwei-Wege-Abhängigkeiten zwischen Repositories erschweren die Planung und Ausführung des übergeordneten SQL-Workflows sowie die Entwicklungsabläufe.
Nächste Schritte
- Wie sich die Repository-Größe auf die Entwicklung in Dataform auswirkt, erfahren Sie unter Repository-Größe.
- Informationen zum Erstellen eines Repositories in Dataform finden Sie unter Dataform-Repository erstellen.
- Informationen zum Verbinden eines Dataform-Repositorys mit einem Git-Repository eines Drittanbieters finden Sie unter Verbindung zu einem Git-Repository eines Drittanbieters herstellen.