Este documento discute estratégias para dividir um repositório do Dataform e gerenciar dependências entre repositórios.
Os repositórios são as unidades principais no Dataform. Um repositório armazena todos os arquivos SQLX e JavaScript que compõem seu fluxo de trabalho SQL, além de arquivos e pacotes de configuração do Dataform. É possível armazenar um fluxo de trabalho SQL em um único repositório ou dividir um fluxo de trabalho SQL entre vários repositórios.
A divisão de um repositório no Dataform traz as seguintes vantagens:
- Siga os limites do Dataform para o uso de recursos de compilação. A divisão de um grande fluxo de trabalho SQL em vários repositórios menores reduz o risco de exceder os limites do Dataform nos recursos de compilação.
- Detalhamento de processos. É possível definir processos, como regras de integração contínua (CI), individualmente para cada fragmento dividido do fluxo de trabalho do SQL e para a equipe que o desenvolve.
- Permissões detalhadas. É possível definir permissões individualmente para cada fragmento dividido do fluxo de trabalho do SQL e para a equipe que o desenvolve para melhorar a segurança geral do fluxo de trabalho do SQL.
- Melhore a colaboração minimizando o número de colaboradores que trabalham em cada fragmento dividido do seu fluxo de trabalho do SQL.
- Melhorar a legibilidade da base de código. A divisão dos arquivos que compõem um grande fluxo de trabalho SQL em vários repositórios facilita a navegação em cada repositório individualmente, em vez de navegar em todo o fluxo de trabalho SQL de uma só vez.
- Acelerar a execução do fluxo de trabalho de cada fragmento dividido do fluxo de trabalho SQL em comparação com a execução de todo o fluxo de trabalho SQL.
A divisão de um repositório no Dataform tem as seguintes desvantagens:
- Configurações personalizadas de integração/entrega contínuas (CI/CD, na sigla em inglês) necessárias para cada repositório do Dataform e o repositório do Git correspondente.
- Configuração de programação personalizada necessária para cada repositório do Dataform e o repositório Git correspondente.
- Dificuldade em gerenciar dependências entre objetos do seu fluxo de trabalho armazenados em vários repositórios.
- Falta de visualização abrangente do gráfico acíclico dirigido (DAG, na sigla em inglês) do fluxo de trabalho SQL dividido entre vários repositórios. Em cada repositório, o DAG gerado representa apenas uma parte do fluxo de trabalho SQL completo.
Estratégias para dividir um repositório
Ao dividir um repositório, você divide os arquivos que compõem um fluxo de trabalho SQL pai em fluxos de trabalho SQL filhos menores armazenados em repositórios separados do Dataform.
Você pode dividir um repositório de uma das seguintes maneiras:
- Um repositório por equipe de desenvolvimento.
- Um repositório por domínio, por exemplo, vendas, marketing ou logística.
- Um repositório central e um repositório por domínio que usa o conteúdo do repositório central como fontes de dados.
Para armazenar o fluxo de trabalho SQL pai em uma plataforma de hospedagem de Git de terceiros, você precisa conectar individualmente cada um dos repositórios separados que contêm fluxos de trabalho filhos a um repositório Git de terceiros dedicado.
Gerenciar dependências entre repositórios
A maneira mais eficiente de dividir um repositório é dividir o fluxo de trabalho SQL pai em fluxos de trabalho SQL filhos independentes, criando repositórios independentes. Um repositório independente não usa o conteúdo de um repositório diferente como fonte de dados. Essa abordagem não exige o gerenciamento de dependências entre repositórios.
Quando não for possível evitar dependências entre repositórios, é possível gerenciá-las dividindo um repositório em uma sucessão de repositórios em que um repositório depende do antecessor e é uma fonte de dados para o sucessor. A sucessão de repositórios e as dependências deles precisam refletir melhor a estrutura do fluxo de trabalho SQL principal.
É possível criar dependências entre repositórios com declarações de fonte de dados do Dataform. É possível declarar um tipo de tabela do BigQuery de um repositório do Dataform diferente como uma fonte de dados no repositório editado no momento. Depois de declarar uma fonte de dados, é possível fazer referência a ela como qualquer outro objeto de fluxo de trabalho SQL do Dataform e usá-la para desenvolver seu fluxo de trabalho SQL.
Ao programar a execução de uma divisão de fluxo de trabalho SQL entre repositórios com dependências entre repositórios, é necessário executar os repositórios um por um na ordem das dependências entre repositórios.
Recomendamos evitar dividir um repositório em um grupo de repositórios com dependências de duas vias. Uma dependência bidirecional entre repositórios ocorre quando um repositório é uma fonte de dados para outro repositório e também usa esse repositório como uma fonte de dados. As dependências bidirecionais entre repositórios complicam a programação e a execução do fluxo de trabalho SQL pai, além dos processos de desenvolvimento.
A seguir
- Para saber como o tamanho do repositório afeta o desenvolvimento no Dataform, consulte Visão geral do tamanho do repositório.
- Para saber como criar um repositório no Dataform, consulte Criar um repositório do Dataform.
- Para saber como conectar um repositório do Dataform a um repositório Git de terceiros, consulte Conectar a um repositório Git de terceiros.