El problema fundamental que DataJunction resuelve es la fragmentación y la inconsistencia en la definición y el uso de métricas dentro de organizaciones con grandes volúmenes de datos y equipos analíticos distribuidos. Esta situación, común en empresas de rápido crecimiento, conduce a definiciones de métricas dispersas, datasets redundantes y pipelines de datos duplicados, lo que dificulta la toma de decisiones basada en datos y ralentiza la experimentación.
Históricamente, la gestión de métricas ha evolucionado desde simples agregaciones en bases de datos relacionales hasta cubos OLAP multidimensionales. Sin embargo, la escala y la diversidad de las fuentes de datos modernas, junto con la necesidad de agilidad, han superado la capacidad de estos enfoques para mantener la coherencia y la gobernanza. La necesidad de una capa semántica unificada se ha vuelto crítica para abstraer la complejidad subyacente de los datos y presentar una vista consistente y confiable a los usuarios finales, desde científicos de datos hasta sistemas de IA.
DataJunction emerge como una respuesta a esta necesidad, proporcionando un "single source of truth" para las definiciones de métricas. Al centralizar estas definiciones y permitir su consumo a través de SQL generado dinámicamente, DataJunction busca reducir la fricción en la creación de métricas, acelerar la experimentación y mejorar la confianza en los datos, un desafío persistente en el ámbito de la computación distribuida y el análisis de datos a gran escala.
Arquitectura del Sistema
La arquitectura de DataJunction se centra en una capa semántica robusta que almacena un conjunto consistente de dimensiones y métricas, sirviendo esta información a través de un servicio API. El componente central es su motor de parsing y generación de SQL, que permite definir métricas y dimensiones como nodos en un grafo conectado. Este grafo representa las relaciones entre las definiciones, similar a cómo las bases de datos relacionales gestionan metadatos de vistas y consultas.
Los servicios de DataJunction interactúan con los datos subyacentes (data sources) y proporcionan a la capa de acceso (access layer) las definiciones de negocio en forma de SQL con metadatos, o directamente con datos, dependiendo de la solicitud del cliente. Un concepto clave adoptado son los "cubes" como características de primera clase, que permiten agregar colecciones arbitrarias de métricas y dimensiones compartidas. Estos cubos sirven como interfaz de acceso eficiente para definiciones semánticas y datos, facilitando integraciones con herramientas de análisis como Druid.
La plataforma se enfoca en la capacidad de vincular cualquier definición de métrica originada en DJ de vuelta al ecosistema de DJ, creando un "feedback loop" valioso. Esto permite la resolución de problemas y la introspección de dashboards de negocio al proporcionar enlaces directos a la fuente de la definición, facilitando el análisis ad-hoc y la modificación de métricas existentes. La integración con herramientas internas de Netflix y soluciones open-source como Apache Superset es un pilar fundamental, permitiendo que los sistemas existentes intercambien información de manera estructurada y confiable.
Flujo de Creación y Consumo de Métricas con DataJunction
- 1 Data Scientist/Analyst Define métrica/dimensión usando UI/API de DJ
- 2 DataJunction Semantic Layer Almacena definición en grafo de metadatos
- 3 DataJunction SQL Engine Genera SQL optimizado para la consulta
- 4 Data Sources (e.g., Druid) Ejecuta SQL generado para obtener datos
- 5 Client Tool (e.g., Superset, Data Exp... Visualiza métrica y enlaza a definición en DJ
| Capa | Tecnología | Justificación |
|---|---|---|
| data-processing | DataJunction | Capa semántica centralizada para la definición, gobernanza y generación de métricas y dimensiones. vs Mando (framework interno de Netflix), Minerva (capa semántica open-source de AirBnB) Enfoque en motor de parsing/generación SQL y grafo de metadatos. |
| data-processing | Druid | Motor de análisis de datos rápido para el consumo y materialización de cubos de métricas definidos en DataJunction. Integración personalizada para materialización de cubos. |
| observability | Apache Superset | Herramienta de visualización de datos integrada con DataJunction para consumir y mostrar métricas definidas. Capacidad de enlazar métricas visualizadas de vuelta a su definición en DJ. |
Trade-offs
Ganancias
- ▲ Tiempo de creación de métricas
- ▲ Consistencia y gobernanza de métricas
- ▲ Descubrimiento y reuso de métricas
Costes
- △ Amplitud de funcionalidades (foco inicial)
Fundamentos Teóricos
El concepto de una capa semántica centralizada para métricas y dimensiones tiene raíces profundas en la investigación de bases de datos y sistemas de información. La idea de "cubos" multidimensionales, fundamentales en DataJunction, se remonta a los sistemas OLAP (Online Analytical Processing) de los años 90, popularizados por el trabajo de E.F. Codd sobre el modelo relacional y sus extensiones para el análisis de datos. Los cubos OLAP buscan pre-agregar y organizar datos de manera que faciliten consultas analíticas complejas y rápidas.
La representación de definiciones de métricas como un grafo conectado, similar a cómo las bases de datos gestionan metadatos de vistas, se alinea con los principios de los sistemas de gestión de esquemas y metadatos. La capacidad de parsear y generar SQL dinámicamente se basa en fundamentos de compiladores y optimizadores de consultas, donde la representación intermedia (como un árbol sintáctico abstracto o un grafo de dependencias) es clave para la transformación y optimización de consultas. La portabilidad de métricas, un objetivo inicial de DataJunction, resuena con los desafíos de la federación de datos y la interoperabilidad de esquemas, áreas activas de investigación en bases de datos distribuidas y heterogéneas.