En este documento, se analizan estrategias para dividir un repositorio de Dataform y gestionar dependencias entre repositorios.
Los repositorios son las unidades principales de Dataform. Un repositorio almacena todos los archivos SQLX y JavaScript que conforman tu flujo de trabajo de SQL, así como los archivos y paquetes de configuración de Dataform. Puedes almacenar un flujo de trabajo de SQL en un solo repositorio o dividirlo entre varios repositorios.
La división de un repositorio en Dataform tiene las siguientes ventajas:
- Cumplir con los límites de Dataform sobre el uso de recursos de compilación Dividir un flujo de trabajo de SQL grande en varios repositorios más pequeños reduce el riesgo de exceder los límites de Dataform en los recursos de compilación.
- Procesos detallados Puedes configurar procesos, como las reglas de integración continua (IC), de forma individual para cada fragmento dividido de tu flujo de trabajo de SQL y el equipo que lo desarrolla.
- Permisos detallados Puedes configurar permisos de forma individual para cada fragmento dividido de tu flujo de trabajo de SQL y el equipo que lo desarrolla para mejorar la seguridad general del flujo de trabajo de SQL.
- Mejora la colaboración minimizando la cantidad de colaboradores que trabajan en cada fragmento dividido de tu flujo de trabajo de SQL.
- Mejora la legibilidad de la base de código. Dividir los archivos que conforman un flujo de trabajo de SQL grande en varios repositorios facilita la navegación por cada repositorio de forma individual en lugar de navegar por todo el flujo de trabajo de SQL a la vez.
- Acelera la ejecución del flujo de trabajo de cada fragmento dividido de tu flujo de trabajo de SQL en comparación con la ejecución de todo el flujo de trabajo de SQL.
La división de un repositorio en Dataform tiene las siguientes desventajas:
- Configuración personalizada de integración continua/desarrollo continuo (CI/CD) obligatoria para cada repositorio de Dataform y su repositorio de Git correspondiente
- Configuración de programación personalizada necesaria para cada repositorio de Dataform y su repositorio de Git correspondiente.
- Dificultad para administrar las dependencias entre los objetos de tu flujo de trabajo que se alojan en varios repositorios.
- Falta de visualización integral del grafo acíclico dirigido (DAG) del flujo de trabajo de SQL dividido entre varios repositorios. En cada repositorio, el DAG generado representa solo una parte del flujo de trabajo de SQL completo.
Estrategias para dividir un repositorio
Cuando divides un repositorio, divides los archivos que conforman un flujo de trabajo de SQL superior en flujos de trabajo de SQL secundarios más pequeños alojados en repositorios separados de Dataform.
Puedes dividir un repositorio de una de las siguientes maneras:
- 1 repositorio por equipo de desarrollo
- 1 repositorio por dominio, por ejemplo, ventas, marketing o logística.
- 1 repositorio central y 1 repositorio por dominio que usa el contenido del repositorio central como fuentes de datos
Para alojar el flujo de trabajo de SQL principal en una plataforma de alojamiento de Git de terceros, debes conectar de forma individual cada uno de los repositorios independientes que contienen flujos de trabajo secundarios a un repositorio de Git de terceros dedicado.
Administración de dependencias entre repositorios
La forma más eficiente de dividir un repositorio es dividir el flujo de trabajo de SQL superior en flujos de trabajo de SQL secundarios independientes, lo que crea repositorios independientes. Un repositorio independiente no usa el contenido de un repositorio diferente como fuente de datos. Este enfoque no requiere la administración de dependencias entre repositorios.
Cuando no puedes evitar las dependencias entre repositorios, puedes administrarlas dividiendo un repositorio en una sucesión de repositorios en los que un repositorio depende de su predecesor y es una fuente de datos para su sucesor. La sucesión de repositorios y sus dependencias debe reflejar mejor la estructura de tu flujo de trabajo de SQL principal.
Puedes crear dependencias entre repositorios con las declaraciones de fuentes de datos de Dataform. Puedes declarar un tipo de tabla de BigQuery desde un repositorio de Dataform diferente como fuente de datos en el repositorio que se está editando. Después de declarar una fuente de datos, puedes hacer referencia a ella como cualquier otro objeto de flujo de trabajo de Dataform SQL y usarla para desarrollar tu flujo de trabajo de SQL.
Cuando programas la ejecución de un flujo de trabajo de SQL dividido entre repositorios con dependencias entre repositorios, debes ejecutar los repositorios uno por uno en el orden de las dependencias entre repositorios.
Te recomendamos evitar dividir un repositorio en un grupo de repositorios con dependencias de dos vías. Una dependencia bidireccional entre repositorios se produce cuando un repositorio es una fuente de datos para un repositorio diferente y también usa ese repositorio como fuente de datos. Las dependencias de dos vías entre los repositorios complican la programación y la ejecución del flujo de trabajo de SQL superior, así como los procesos de desarrollo.
¿Qué sigue?
- Para obtener información sobre cómo el tamaño del repositorio afecta el desarrollo en Dataform, consulta Descripción general del tamaño del repositorio.
- Si quieres aprender a crear un repositorio en Dataform, consulta Cómo crear un repositorio de Dataform.
- Para obtener más información sobre cómo conectar un repositorio de Dataform a uno de Git de terceros, consulta Cómo conectarse a un repositorio de Git de terceros.