Suddivisione dei repository

Questo documento illustra le strategie per suddividere un repository Dataform e gestire le dipendenze tra repository.

I repository sono le unità principali di Dataform. Un repository archivia tutti i file SQLX e JavaScript che costituiscono il flusso di lavoro SQL, nonché i file e i pacchetti di configurazione Dataform. Puoi archiviare un flusso di lavoro SQL in un singolo repository o dividerlo tra più repository.

La suddivisione di un repository in Dataform offre i seguenti vantaggi:

  • Rispettare i limiti di Dataform sull'utilizzo delle risorse di compilazione. La suddivisione di un flusso di lavoro SQL di grandi dimensioni in più repository più piccoli riduce il rischio di superare i limiti di Dataform sulle risorse di compilazione.
  • Processi di grana fine. Puoi impostare singoli processi, ad esempio regole di integrazione continua (CI) per ogni frammento di suddivisione del flusso di lavoro SQL e per il team che lo sviluppa.
  • Autorizzazioni di maggiore precisione. Puoi impostare le autorizzazioni singolarmente per ogni frammento di suddivisione del flusso di lavoro SQL e per il team che lo sviluppa per migliorare la sicurezza complessiva del flusso di lavoro SQL.
  • Migliorare la collaborazione riducendo al minimo il numero di collaboratori che lavorano su ogni frammento di suddivisione del flusso di lavoro SQL.
  • Miglioramento della leggibilità del codebase. La suddivisione dei file che costituiscono un flusso di lavoro SQL di grandi dimensioni in più repository semplifica la navigazione su ogni singolo repository piuttosto che la navigazione contemporaneamente nell'intero flusso di lavoro SQL.
  • Accelerazione dell'esecuzione del flusso di lavoro di ogni frammento di suddivisione del flusso di lavoro SQL rispetto all'esecuzione dell'intero flusso di lavoro SQL.

La suddivisione di un repository in Dataform comporta i seguenti svantaggi:

  • Configurazione di integrazione continua/sviluppo continuo personalizzata (CI/CD) richiesta per ciascun repository Dataform e il rispettivo repository Git.
  • La configurazione della pianificazione personalizzata è obbligatoria per ogni repository Dataform e per il repository Git corrispondente.
  • Difficoltà di gestione delle dipendenze tra oggetti del flusso di lavoro ospitati in più repository.
  • Mancanza di una visualizzazione completa del grafo diretto aciclico (DAG) della suddivisione del flusso di lavoro SQL tra più repository. In ogni repository, il DAG generato rappresenta solo una parte del flusso di lavoro SQL completo.

Strategie per la suddivisione di un repository

Quando suddividi un repository, dividi i file che costituiscono un flusso di lavoro SQL padre in flussi di lavoro SQL figlio più piccoli ospitati in repository separati di Dataform.

Puoi scegliere di suddividere un repository in uno dei seguenti modi:

  • Un repository per team di sviluppo.
  • Un repository per dominio, ad esempio vendite, marketing o logistica.
  • Un repository centrale e un repository per dominio che utilizza i contenuti del repository centrale come origini dati.

Per ospitare il flusso di lavoro SQL padre su una piattaforma di hosting Git di terze parti, devi connettere singolarmente ogni repository separato contenente i flussi di lavoro figlio a un repository Git di terze parti.

Gestione delle dipendenze tra repository

Il modo più efficiente per suddividere un repository è dividere il flusso di lavoro SQL padre in flussi di lavoro SQL figlio autonomi, creando repository indipendenti. Un repository indipendente non utilizza i contenuti di un altro repository come origine dati. Questo approccio non richiede la gestione di dipendenze tra repository.

Quando non è possibile evitare dipendenze tra repository, puoi gestirle suddividendo un repository in una successione di repository in cui un repository dipende dal suo predecessore e rappresenta un'origine dati per il suo successore. La successione dei repository e delle loro dipendenze deve riflettere al meglio la struttura del flusso di lavoro SQL padre.

Puoi creare dipendenze tra i repository con le dichiarazioni delle origini dati Dataform. Puoi dichiarare un tipo di tabella BigQuery da un altro repository Dataform come origine dati nel repository attualmente modificato. Dopo aver dichiarato un'origine dati, puoi farvi riferimento come qualsiasi altro oggetto del flusso di lavoro SQL di Dataform e utilizzarla per sviluppare il tuo flusso di lavoro SQL.

Quando pianifichi l'esecuzione di un flusso di lavoro SQL suddiviso tra repository con dipendenze tra repository, devi eseguire i repository uno alla volta nell'ordine delle dipendenze tra repository.

Ti consigliamo di evitare di suddividere un repository in un gruppo di repository con dipendenze bidirezionali. Una dipendenza bidirezionale tra repository si verifica quando un repository è un'origine dati per un altro repository e lo utilizza anche come origine dati. Le dipendenze bidirezionali tra i repository complicano la pianificazione e l'esecuzione del flusso di lavoro SQL padre, nonché i processi di sviluppo.

Passaggi successivi