Diviser des dépôts

Ce document présente des 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 de base de Dataform. Un dépôt stocke tous les fichiers SQLX et JavaScript qui constituent votre workflow SQL, ainsi que les fichiers et les packages de configuration Dataform. Vous pouvez stocker un workflow SQL dans un seul dépôt ou le diviser entre plusieurs dépôts.

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

  • Respecter les limites Dataform sur l'utilisation des ressources de compilation. Diviser un grand workflow SQL en plusieurs petits dépôts réduit le risque de dépasser les limites de Dataform sur les ressources de compilation.
  • Processus de précision Vous pouvez définir des processus, tels que des règles d'intégration continue (CI), individuellement pour chaque fragment fractionné de votre workflow SQL et l'équipe qui le développe.
  • Autorisations précises. Vous pouvez définir des autorisations individuellement pour chaque fragment fractionné de votre workflow SQL et pour l'équipe qui le développe afin d'améliorer la sécurité globale du workflow SQL.
  • Améliorez la collaboration en réduisant le nombre de collaborateurs travaillant sur chaque fragment fractionné de votre workflow SQL.
  • Amélioration de la lisibilité du codebase. Diviser les fichiers qui constituent un grand workflow SQL en plusieurs dépôts permet de naviguer plus facilement dans chaque dépôt individuellement que dans l'ensemble du workflow SQL en une seule fois.
  • Accélérez l'exécution du workflow de chaque fragment fractionné de votre workflow SQL par rapport à l'exécution de l'ensemble du workflow SQL.

La division d'un dépôt dans Dataform présente les inconvénients suivants:

  • Configuration personnalisée de l'intégration/développement continus (CI/CD) requise pour chaque dépôt Dataform et son dépôt Git correspondant.
  • Configuration de planification personnalisée requise pour chaque dépôt Dataform et son 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) du workflow SQL réparti 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 fractionnement d'un dépôt

Lorsque vous divisez un dépôt, vous divisez les fichiers qui constituent un workflow SQL parent en petits workflows SQL enfants 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 utilise le contenu du dépôt central comme source 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, créant ainsi 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 entre les dépôts.

Lorsque 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 succession 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 des dépôts et de leurs dépendances doit refléter au mieux la structure de votre workflow SQL parent.

Vous pouvez créer des dépendances entre des dépôts à l'aide de 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 actuellement en cours de modification. Après avoir 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 entre les dépôts, vous devez exécuter les dépôts un par un dans l'ordre des dépendances entre les 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 pour un autre dépôt et qu'il utilise également ce dépôt 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 les processus de développement.

Étape suivante