Diviser des dépôts

Ce document présente les stratégies permettant de diviser un dépôt Dataform et de gérer les dépendances entre les dépôts.

Les dépôts sont les unités principales de Dataform. Un dépôt stocke tous les fichiers SQLX et JavaScript qui constituent votre workflow SQL, ainsi que les fichiers de configuration et les packages Dataform. Vous pouvez stocker un workflow SQL dans un seul dépôt ou diviser un workflow SQL entre plusieurs dépôts.

La division d'un dépôt dans Dataform offre les avantages suivants:

  • Respect des limites de Dataform concernant l'utilisation des ressources de compilation. La division d'un workflow SQL volumineux en plusieurs dépôts plus petits réduit le risque de dépasser les limites de Dataform sur les ressources de compilation.
  • Traitement précis des processus. Vous pouvez définir des processus, tels que des règles d'intégration continue (CI), individuellement pour chaque fragment de votre workflow SQL et pour l'équipe qui le développe.
  • Autorisations précises. Vous pouvez définir des autorisations individuellement pour chaque fragment de division de votre workflow SQL et pour l'équipe qui le développe afin d'améliorer la sécurité globale du workflow SQL.
  • améliorer la collaboration en réduisant le nombre de collaborateurs travaillant sur chaque fragment de votre workflow SQL ;
  • Amélioration de la lisibilité du codebase. La division des fichiers qui constituent un workflow SQL volumineux en plusieurs dépôts facilite la navigation individuelle dans chaque dépôt plutôt que la navigation simultanée dans l'ensemble du workflow SQL.
  • Accélération de l'exécution de chaque fragment de division de votre workflow SQL par rapport à l'exécution de l'ensemble du workflow SQL.

Diviser un dépôt dans Dataform présente les inconvénients suivants:

  • Configuration personnalisée d'intégration continue/de développement continu (CI/CD) requise pour chaque dépôt Dataform et le dépôt Git correspondant.
  • Configuration de la planification personnalisée requise pour chaque dépôt Dataform et le dépôt Git correspondant.
  • Difficulté à gérer les dépendances entre les objets de votre workflow hébergés dans plusieurs dépôts.
  • Absence de visualisation complète du graphe orienté acyclique (DAG) de la répartition du workflow SQL entre plusieurs dépôts. Dans chaque dépôt, le DAG généré ne représente qu'une partie du workflow SQL complet.

Stratégies de division d'un dépôt

Lorsque vous divisez un dépôt, vous divisez les fichiers qui constituent un workflow SQL parent en workflows SQL enfants plus petits, hébergés dans des dépôts Dataform distincts.

Vous pouvez choisir de diviser un dépôt de l'une des manières suivantes:

  • Un dépôt par équipe de développement.
  • Un dépôt par domaine (ventes, marketing ou logistique, par exemple).
  • Un dépôt central et un dépôt par domaine qui utilisent le contenu du dépôt central comme sources de données.

Pour héberger le workflow SQL parent sur une plate-forme d'hébergement Git tierce, vous devez connecter individuellement chacun des dépôts distincts contenant des workflows enfants à un dépôt Git tiers dédié.

Gérer les dépendances entre les dépôts

Le moyen le plus efficace de diviser un dépôt consiste à diviser le workflow SQL parent en workflows SQL enfants autonomes, ce qui crée des dépôts indépendants. Un dépôt indépendant n'utilise pas le contenu d'un autre dépôt comme source de données. Cette approche ne nécessite pas de gérer les dépendances inter-dépôts.

Si vous ne pouvez pas éviter les dépendances entre les dépôts, vous pouvez les gérer en divisant un dépôt en une série de dépôts, dans lesquels un dépôt dépend de son prédécesseur et constitue une source de données pour son successeur. La succession de dépôts et leurs dépendances doit refléter au mieux la structure de votre workflow SQL parent.

Vous pouvez créer des dépendances entre les dépôts avec des déclarations de sources de données Dataform. Vous pouvez déclarer un type de table BigQuery à partir d'un autre dépôt Dataform en tant que source de données dans le dépôt en cours de modification. Une fois que vous avez déclaré une source de données, vous pouvez la référencer comme n'importe quel autre objet de workflow SQL Dataform et l'utiliser pour développer votre workflow SQL.

Lorsque vous planifiez l'exécution d'un workflow SQL réparti entre des dépôts avec des dépendances inter-dépôts, vous devez exécuter les dépôts un par un, dans l'ordre des dépendances inter-dépôts.

Nous vous recommandons d'éviter de diviser un dépôt en un groupe de dépôts avec des dépendances bidirectionnelles. Une dépendance bidirectionnelle entre les dépôts se produit lorsqu'un dépôt est une source de données d'un autre dépôt et l'utilise également comme source de données. Les dépendances bidirectionnelles entre les dépôts compliquent la planification et l'exécution du workflow SQL parent, ainsi que des processus de développement.

Étapes suivantes