6 puntos por xguru 2025-07-01 | Aún no hay comentarios. | Compartir por WhatsApp
  • Formato e interfaz de código abierto diseñado para serializar e intercambiar operaciones estructuradas de procesamiento de datos (álgebra relacional, planes de consulta, etc.) entre distintas bases de datos y motores de análisis/consulta
  • Está siendo adoptado e incorporado con el objetivo de intercambiar planes de consulta/ejecución y asegurar compatibilidad entre sistemas distintos en varios motores de BD, procesamiento distribuido y consulta como DuckDB, Spark, DataFusion y Sirius
  • Expresa los planes de ejecución de distintos lenguajes o motores de consulta como SQL, DataFrame y Pandas en un formato neutral/estandarizado (Protocol Buffers, YAML, JSON, etc.), lo que simplifica la integración de plugins y motores de terceros, así como la conexión con aceleradores de hardware

¿Qué es Substrait?

  • Proyecto de código abierto que define en un formato estándar los "planes de consulta" (Logical/Physical Plan) de los sistemas de análisis/procesamiento de datos
    • Serializa y deserializa con un esquema estándar las estructuras de consulta de diversos lenguajes como SQL, DataFrame y LINQ (por ejemplo: SELECT-FROM-WHERE, Join, Aggregation, Projection, Filter, etc.)
  • Como cada base de datos y motor tiene su propio parser y plan de ejecución, existen límites para la interoperabilidad y el uso de aceleradores de hardware → se abstrae mediante un estándar común (representación intermedia)
  • Los planes de ejecución de distintos lenguajes y frameworks de consulta, como SQL, DataFrame y Pandas, pueden convertirse al formato Substrait y compartirse

Características principales de Substrait

  • Representación neutral de consultas: puede expresar tanto planes de consulta lógicos (operadores lógicos) como físicos (operadores de ejecución)
  • Serialización basada en Protocol Buffers (principalmente usando esquemas .proto), lo que permite un intercambio eficiente de datos en diversos lenguajes y sistemas
  • Extensibilidad de motores/plugins: también se pueden ampliar nuevas funciones, operadores y tipos mediante un esquema de plugins
  • Integración con aceleración por hardware: facilita la integración a nivel de plan de consulta con motores para GPU/FPGA/aceleradores dedicados (Sirius, Velox, NVIDIA RAPIDS, etc.)
  • Interoperabilidad entre plataformas: distintos motores para data lakes, procesamiento distribuido y análisis local pueden aceptar y ejecutar el mismo plan de consulta

¿Por qué es importante Substrait?

  • Si cada motor soporta Substrait, la integración del ecosistema se vuelve posible de inmediato sin que cada uno tenga que crear interfaces personalizadas por separado
  • Funciona como el "lenguaje común de los planes de consulta/análisis" entre motores y plataformas de datos
    • Consulta en una BD → plan Substrait → envío y ejecución en un motor GPU/distribuido o en un acelerador independiente
    • Conexión entre motores a nivel de plan de ejecución sin necesidad de convertir o reescribir la consulta
  • Aunque aparezcan nuevos motores de consulta, pueden reemplazarse o combinarse fácilmente como "plugins" (flexibilidad para cambiar de motor)
  • Unifica distintos lenguajes y entornos de consulta como SQL/Python/consultas distribuidas
  • Permite operar combinando varios motores en entornos de clúster/distribuidos (soporte para entornos heterogéneos)
  • Al ofrecer una versión en texto, permite analizar fácilmente los planes de consulta o integrarlos con herramientas de visualización

Ejemplos de uso real

  • Intercambio de planes de consulta entre un parser SQL y un motor de ejecución (Calcite → Arrow, DuckDB → Sirius, etc.)
    • DuckDB: soporta exportar planes de consulta internos a Substrait e importar consultas Substrait desde el exterior
    • Sirius: puede recibir directamente el plan de consulta Substrait generado por DuckDB y ejecutar SQL sobre GPU, sin necesidad de parsear ni modificar la consulta
  • Ejecución de operaciones de DataFrame (como Pandas) en una base de datos externa
  • Creación de herramientas de visualización de planes de consulta de terceros (D3, Web, etc.)
  • Velox, Spark, DataFusion, etc.: exportan los planes de consulta de cada motor a Substrait para integrarse con diversos motores de análisis y aceleración

¿Qué estructura tiene técnicamente?

  • Los planes de Substrait se definen principalmente con base en Protocol Buffers (.proto)
    • Se componen de LogicalPlan, PhysicalPlan, Rel, Expression, Function, etc.
    • Esquemas claros por operador, como Filter, Join, Aggregate, Project y Sort
  • Catálogo extensible de funciones/tipos y posibilidad de ampliar UDF (User-Defined Function)

Conclusión

  • Substrait es el "estándar de planes de ejecución de consultas" del ecosistema de bases de datos y plataformas de análisis, y es clave para la interoperabilidad entre motores, la aceleración por hardware y la escalabilidad del ecosistema de datos
  • Se está consolidando como un estándar base que simplifica la integración de aceleradores de hardware y motores de consulta, y facilita construir infraestructura de análisis de alto rendimiento sin necesidad de parsing o transformación compleja de consultas

Aún no hay comentarios.

Aún no hay comentarios.