Dos arquitecturas de constructores de consultas SQL

Fuentes: Two Kinds of SQL Query Builders

El lenguaje SQL presenta una paradoja: aunque fue diseñado para usuarios humanos, la mayoría de su código se genera por computadoras. Esta complejidad ha llevado al desarrollo de bibliotecas especializadas para construir consultas, como FunSQL, que combina la cobertura completa de las capacidades de SQL con una interfaz orientada a datos y compositiva. A diferencia de otras herramientas, FunSQL permite reordenar los nodos de procesamiento en el pipeline sin alterar el resultado final, lo que la distingue de constructores como Active Record o Laravel, que sí dependen del orden estricto de las cláusulas.

La diferencia fundamental radica en cómo se interpreta el pipeline. En los constructores 'data-oriented' como FunSQL, EF/LINQ y dbplyr, el pipeline define el resultado esperado y se convierte en SQL mediante técnicas de anidación, ya que el orden de las cláusulas en SQL es rígido. Por el contrario, Active Record y Laravel construyen el árbol de sintaxis SQL de forma incremental, llenando slots fijos según el orden gramatical. Este artículo explica cómo esta distinción interna, aunque oculta bajo una interfaz similar, afecta directamente a la lógica de ejecución y la eficiencia de las consultas en bases de datos como OMOP CDM.