Neste documento, você verá estratégias para dividir um repositório do Dataform e gerenciar dependências entre repositórios.
Os repositórios são as unidades principais do Dataform. Um repositório armazena todos os arquivos SQLX e JavaScript que compõem seu fluxo de trabalho SQL, bem como arquivos de configuração e pacotes 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:
- Obedecer aos limites do Dataform sobre 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.
- Processos de granulação fina. É possível definir processos, como regras de integração contínua (CI, na sigla em inglês), individualmente para cada fragmento dividido do fluxo de trabalho SQL e para a equipe que o desenvolve.
- Permissões de granulação fina. É possível definir permissões individualmente para cada fragmento dividido do fluxo de trabalho do SQL e para a equipe que o desenvolve para aumentar 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 fluxo de trabalho do SQL.
- Melhoria da legibilidade da base de código. Dividir os arquivos que compõem um grande fluxo de trabalho SQL em vários repositórios facilita a navegação de cada repositório individualmente em vez de navegar por 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 do SQL em comparação com a execução de todo o fluxo de trabalho do SQL;
A divisão de um repositório no Dataform tem as seguintes desvantagens:
- Configuração personalizada de integração contínua/desenvolvimento contínuo (CI/CD) necessária para cada repositório do Dataform e o repositório Git correspondente.
- Configuração de programação personalizada necessária para cada repositório do Dataform e o repositório Git correspondente.
- Dificuldade de gerenciar dependências entre objetos do fluxo de trabalho hospedados em vários repositórios.
- Falta de visualização abrangente do gráfico acíclico dirigido (DAG, na sigla em inglês) da divisão do fluxo de trabalho SQL 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 pequenos fluxos de trabalho SQL filhos armazenados em repositórios separados do Dataform.
É possível 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 hospedar o fluxo de trabalho do SQL pai em uma plataforma de hospedagem 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 dedicado de terceiros.
Como gerenciar dependências entre repositórios
A maneira mais eficiente de dividir um repositório é dividir o fluxo de trabalho do SQL pai em fluxos de trabalho filhos autônomos de SQL, 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 é 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 respectivas dependências precisa refletir melhor a estrutura do fluxo de trabalho do SQL pai.
É possível criar dependências entre repositórios com as declarações da fonte de dados do Dataform. É possível declarar um tipo de tabela do BigQuery de um repositório do Dataform como uma fonte de dados no repositório editado atualmente. Depois de declarar uma fonte de dados, é possível referenciá-la 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 um fluxo de trabalho SQL dividido entre repositórios com dependências entre repositórios, você precisa executar os repositórios um por um na ordem das dependências entre repositórios.
É recomendável evitar dividir um repositório em um grupo de repositórios com dependências bidirecionais. Uma dependência bidirecional entre repositórios ocorre quando um repositório é uma fonte de dados para um repositório diferente 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 do SQL pai, bem como 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-se a um repositório Git de terceiros.