Divide repositorios

En este documento, se analizan las estrategias para dividir un repositorio de Dataform y administrar dependencias entre repositorios.

Los repositorios son las unidades principales de Dataform. Un repositorio almacena todos los archivos SQLX y JavaScript que conforman el flujo de trabajo de SQL, así como los paquetes y archivos de configuración de Dataform. Puedes almacenar un flujo de trabajo de SQL en un solo repositorio o dividir un flujo de trabajo de SQL entre varios repositorios.

Dividir un repositorio en Dataform tiene las siguientes ventajas:

  • Cumple con los límites de Dataform sobre el uso de recursos de compilación. La división de un flujo de trabajo grande de SQL en varios repositorios más pequeños reduce el riesgo de exceder los límites de Dataform en los recursos de compilación.
  • Procesos de gran detalle. Puedes configurar procesos, como reglas de integración continua (CI), de forma individual para cada fragmento dividido del flujo de trabajo de SQL y el equipo que lo desarrolla.
  • Permisos detallados. Puedes establecer permisos de forma individual para cada fragmento dividido del flujo de trabajo de SQL y para el equipo que lo desarrolla con el objetivo de mejorar la seguridad general del flujo de trabajo de SQL.
  • Mejorar la colaboración mediante la minimización de la cantidad de colaboradores que trabajan en cada fragmento de división del flujo de trabajo de SQL.
  • Mejora de la legibilidad de la base de código Dividir los archivos que conforman un flujo de trabajo grande de SQL en varios repositorios facilita la navegación por cada repositorio de manera individual que navegar por todo el flujo de trabajo de SQL a la vez.
  • Acelerar 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.

Dividir un repositorio en Dataform presenta las siguientes desventajas:

  • Configuración personalizada de integración continua/desarrollo continuo (CI/CD) necesaria para cada repositorio de Dataform y su repositorio de Git correspondiente.
  • La configuración de programación personalizada necesaria para cada repositorio de Dataform y su repositorio de Git correspondiente.
  • La dificultad para administrar dependencias entre objetos de tu flujo de trabajo alojados 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 completo de SQL.

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 use el contenido del repositorio central como fuentes de datos

Para alojar el flujo de trabajo de SQL superior en la plataforma de hosting 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 dedicado de terceros.

Administra 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 para crear repositorios independientes. Un repositorio independiente no utiliza el contenido de un repositorio diferente como fuente de datos. Este enfoque no requiere administrar dependencias entre repositorios.

Cuando no puedas evitar las dependencias entre repositorios, puedes administrarlas dividiendo un repositorio en una sucesión de repositorios en los que un repositorio dependa de su predecesor y sea 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 superior.

Puedes crear dependencias entre repositorios con las declaraciones de fuentes de datos de Dataform. Puedes declarar un tipo de tabla de BigQuery de un repositorio de Dataform diferente como fuente de datos en el repositorio editado actualmente. Después de declarar una fuente de datos, puedes hacer referencia a ella como a cualquier otro objeto de flujo de trabajo de SQL de Dataform y usarla para desarrollar tu flujo de trabajo en 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 no dividir un repositorio en un grupo de repositorios con dependencias bidireccionales. Una dependencia bidireccional entre los 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 bidireccionales entre repositorios complican la programación y la ejecución del flujo de trabajo de SQL superior, además de los procesos de desarrollo.

¿Qué sigue?