Questo documento illustra le strategie per suddividere un repository Dataform e gestire le dipendenze tra repository.
I repository sono le unità di base di Dataform. Un repository memorizza tutti i file SQLX e JavaScript che compongono il flusso di lavoro SQL, nonché i file di configurazione e i pacchetti Dataform. Puoi archiviare un flusso di lavoro SQL in un singolo repository o suddividerlo in più repository.
La suddivisione di un repository in Dataform offre i seguenti vantaggi:
- Rispettare i limiti di Dataform per l'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 per le risorse di compilazione.
- Processi di definizione di granularità. Puoi impostare le procedure, ad esempio le regole di integrazione continua (CI), singolarmente per ogni frammento suddiviso del flusso di lavoro SQL e per il team che lo sviluppa.
- Autorizzazioni granulari. Puoi impostare le autorizzazioni singolarmente per ogni frammento suddiviso del flusso di lavoro SQL e per il team che lo sviluppa per migliorare la sicurezza complessiva del flusso di lavoro SQL.
- Migliora la collaborazione riducendo al minimo il numero di collaboratori che lavorano su ogni frammento suddiviso del flusso di lavoro SQL.
- Miglioramento della leggibilità della base di codice. La suddivisione dei file che compongono un grande flusso di lavoro SQL in più repository semplifica la navigazione in ciascun repository singolarmente rispetto alla navigazione nell'intero flusso di lavoro SQL contemporaneamente.
- Accelera l'esecuzione del flusso di lavoro di ogni frammento suddiviso del flusso di lavoro SQL rispetto all'esecuzione dell'intero flusso di lavoro SQL.
La suddivisione di un repository in Dataform presenta i seguenti svantaggi:
- Configurazione personalizzata di integrazione/sviluppo continui (CI/CD) obbligatoria per ogni repository Dataform e per il relativo repository Git.
- Configurazione di pianificazione personalizzata richiesta per ogni repository Dataform e per il relativo repository Git.
- Difficoltà nella gestione delle dipendenze tra gli oggetti del flusso di lavoro ospitati in più repository.
- Mancanza di una visualizzazione completa del grafo aciclico diretto (DAG) del flusso di lavoro SQL suddiviso in più repository. In ogni repository, il DAG generato rappresenta solo una parte del flusso di lavoro SQL completo.
Strategie per suddividere un repository
Quando dividi un repository, suddividi i file che compongono un flusso di lavoro SQL principale in flussi di lavoro SQL secondari più piccoli ospitati in repository Dataform separati.
Puoi scegliere di suddividere un repository in uno dei seguenti modi:
- 1 repository per un team di sviluppo.
- 1 repository per dominio, ad esempio vendite, marketing o logistica.
- 1 repository centrale e 1 repository per dominio che utilizza i contenuti del repository centrale come origini dati.
Per ospitare il flusso di lavoro SQL principale in una piattaforma di hosting Git di terze parti, devi collegare singolarmente ciascuno dei repository separati contenenti i flussi di lavoro secondari a un repository Git di terze parti dedicato.
Gestione delle dipendenze tra repository
Il modo più efficiente per suddividere un repository è dividere il flusso di lavoro SQL principale in flussi di lavoro SQL secondari autocontenuti, creando repository indipendenti. Un repository indipendente non utilizza i contenuti di un altro repository come origine dati. Questo approccio non richiede la gestione delle dipendenze tra repository.
Quando non puoi evitare le dipendenze tra repository, puoi gestirle dividendo un repository in una serie di repository in cui un repository dipende dal suo predecessore ed è un'origine dati per il suo successore. La successione dei repository e le relative dipendenze devono riflettere al meglio la struttura del flusso di lavoro SQL principale.
Puoi creare dipendenze tra i repository con le dichiarazioni delle origini dati di Dataform. Puoi dichiarare un tipo di tabella BigQuery da un altro repository Dataform come origine dati nel repository attualmente in modifica. Dopo aver dichiarato un'origine dati, puoi farvi riferimento come a qualsiasi altro oggetto del flusso di lavoro SQL di Dataform e utilizzarla per sviluppare il flusso di lavoro SQL.
Quando pianifichi l'esecuzione di un flusso di lavoro SQL suddiviso tra diversi 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 i 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 principale, nonché i processi di sviluppo.
Passaggi successivi
- Per scoprire in che modo le dimensioni del repository influiscono sullo sviluppo in Dataform, consulta Panoramica delle dimensioni del repository.
- Per scoprire come creare un repository in Dataform, consulta Creare un repository Dataform.
- Per scoprire come collegare un repository Dataform a un repository Git di terze parti, consulta Eseguire la connessione a un repository Git di terze parti.