Llegamos a ustedes gracias a:



Reportajes y análisis

Más allá de SQL: 8 nuevos lenguajes para consultas de datos

[12/04/2022] Durante las últimas tres décadas, las bases de datos y el lenguaje de consulta estructurado (SQL, por sus siglas en inglés) fueron casi sinónimos. Cualquiera que quisiera recuperar información de una base de datos tenía que aprender SQL. Cualquiera que quisiera cuidar una base de datos, o aceptar un trabajo como administrador de la base de datos, necesitaba dominar sus matices.

El lenguaje en sí es un retroceso, una oportunidad para pensar y codificar como lo hicieron los usuarios de mainframe. Mientras que el resto del mundo adoptó las letras minúsculas, los usuarios de SQL continuaron escribiendo palabras como SELECT o WHERE. Incluso hoy en día, a pocos parece importarles que algunos usuarios de Tik Tok se burlen de ellos o les pregunten por qué están gritando. Si TODO MAYÚSCULAS era lo suficientemente bueno para los jinetes de tarjetas perforadas que usan corbatas y camisas de manga corta, bueno, todavía es lo suficientemente bueno para el trabajador remoto de hoy en día, que usa un pijama de ositos.

[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]

Pero el control de SQL sobre la recuperación de datos se está desvaneciendo. Están surgiendo nuevas bases de datos y algunas hablan idiomas completamente nuevos. No es que SQL se esté volviendo menos popular. En todo caso, se está escribiendo más SQL que nunca. Es solo que el mundo del almacenamiento de datos está explotando aún más rápido, y parte de ese crecimiento está estimulando la necesidad de experimentar y diversificarse.

Este artículo presenta ocho enfoques nuevos para recuperar datos. En algunos casos, las innovaciones son meramente cosméticas. Los desarrolladores han actualizado la sintaxis de SQL para que sea un poco más ordenado y fácil de leer, por lo que es menos molesto cambiar de marcha entre escribir código para el navegador y recuperar datos. Los creadores de estas herramientas enfatizan que la estructura subyacente es esencialmente la misma que SQL. Seguirá siendo fácil de aprender. No se preocupe.

Otras herramientas nos invitan a pensar de una manera completamente diferente. Las bases de datos que almacenan sus bits en gráficos, o en una serie de tiempo, ofrecen nuevos paradigmas sobre cómo los programadores especifican lo que quieren encontrar.

No todas estas opciones serán mejores que SQL para lo que necesita hacer. No todos ellos captarán las posibilidades que está buscando. Pero todos ofrecen la oportunidad de pensar de manera diferente sobre ese mar de bytes en algún servidor, esperando que usted encuentre una manera de deletrear lo que necesita.

GraphQL

El nombre de GraphQL es un poco confuso porque no es realmente un lenguaje diseñado para explotar todas las posibilidades de las bases de datos de gráficos. Es más como una abreviatura elegante para consultar datos almacenados en un formato anidado similar a JSON. La consulta es solo una descripción rápida de cómo deberían ser los resultados. El back end mira esta lista de campos, que pueden tener restricciones en los valores, e intenta encontrar los resultados que coinciden. Donde SQL especifica cómo la base de datos debe completar una solicitud, los usuarios de GraphQL simplemente proporcionan una lista de campos. Algunos lo llaman "consulta en base a ejemplo.

El lenguaje es una combinación natural para algunas bases de datos JSON, pero GraphQL también se está volviendo más popular para buscar bases de datos relacionales con un esquema tabular. Los back ends inteligentes pueden traducir las solicitudes anidadas en un patrón de JOIN que se ajuste al esquema.

El lenguaje original comenzó como un proyecto interno en Facebook, pero después de que se lanzó como un proyecto de código abierto independiente, otros comenzaron a desarrollar los back ends de GraphQL. Ahora existen versiones escritas en todos los idiomas principales y también en muchos idiomas experimentales modernos.

PRQL

Si, naturalmente, usted piensa en el software como un pipeline o un lenguaje ensamblador, es posible que le guste PRQL, que significa Lenguaje de Consulta Relacional Canalizado (pronunciado "Pricuel). Las consultas en este lenguaje se estructuran como una cadena de pequeños comandos. En conjunto, los comandos producen un resultado con solo los datos que desea.

Al igual que muchos lenguajes de programación modernos, el modelo mental de una consulta adopta un enfoque funcional. Las características simples como las variables reducen la repetición y simplifican el flujo. Los resultados de una línea se alimentan a la siguiente línea en una larga cadena. Si desea eliminar un paso, a menudo puede simplemente comentar esa línea y el resto del pipeline seguirá funcionando.

El código de PRQL está escrito en Rust como transpilador para convertir PRQL en SQL. La estructura básica está destinada a ser extensible, por lo que puede agregar más abstracciones para adaptarse a su caso de uso. Esta facilidad de experimentación asegura que el lenguaje evolucionará rápidamente.

WebAssembly

Muchos desarrolladores piensan en WebAssembly (abreviado "Wasm) como una herramienta para crear aplicaciones rápidas que se ejecutan en navegadores web. Cuando Redpanda comenzó a construir una herramienta de transmisión de datos para reemplazar a Kafka, querían agregar un mecanismo no solo para entregar los datos, sino también para transformarlos ocasionalmente en el camino. WebAssembly fue su elección.

Redpanda actúa como un libro mayor al crear un flujo de datos que es inmutable y ordenado. Se agregan eventos y los programadores pueden acceder a la transmisión en cualquier momento en el pasado. La mayoría comenzará con eventos recién creados, pero algunos pueden comenzar en el pasado para crear agregaciones históricas.

WebAssembly, por supuesto, es incluso mucho más capaz y de bajo nivel que los procedimientos almacenados que forman parte de algunas bases de datos. No todos los desarrolladores quieren escribir un código de nivel de byte de bits. Pero la opción abre el flujo de datos para elaborar transformaciones que van mucho más allá de lo que es posible con SQL.

GQL

Graph Query Language, o GQL, es un estándar propuesto que combina lenguajes declarativos similares como Cypher, PGQL y GSQL. Los desarrolladores crean consultas especificando un modelo particular para un conjunto de nodos, y luego la base de datos es responsable de encontrar coincidencias. GQL trabaja con gráficos de propiedades más complejos, que permiten que pares de nodos compartan varias conexiones diferentes.

El estándar está en desarrollo activo. Actualmente, las mejores implementaciones son herramientas de investigación que no están diseñadas para una implementación a largo plazo.

Gremlin

Gremlin, uno de los lenguajes originales para buscar un gráfico, solicita un conjunto de pasos para buscar a través de las conexiones entre nodos. Algunos lo llaman un lenguaje "basado en rutas o "recorrido de gráficos. Cada consulta se basa en pasos, y cada paso puede implicar mapear el nodo actual, filtrar una lista o tabular el resultado de alguna manera.

El lenguaje es a menudo solo un punto de partida. Algunos, por ejemplo, están expandiendo Gremlin incorporando un intérprete de Python en su interior para que las consultas puedan incluir código de Python. Otros están incorporando Gremlin dentro de un lenguaje de programación estándar como Java para que los programadores puedan aprovechar el poder de Gremlin desde dentro de ese lenguaje.

Gremlin se construyó por primera vez para el proyecto TinkerPop, de Apache, y ha sido adoptado por las principales bases de datos de gráficos transaccionales como Neptune de Amazon y marcos de procesamiento de gráficos, usando Apache Spark o Hadoop.

N1QL

A lo largo de los años, Couchbase ha buscado la mejor manera de consultar documentos generales. Al principio, la consulta se escribía como una función de JavaScript que se entregaba a la base de datos para su ejecución. Era una buena solución general que a veces tardaba una eternidad en generar un resultado, pero requería que los programadores pensaran un poco diferente.

N1QL (pronunciado "nickel) está diseñado para facilitar que los nativos de SQL trabajen con los objetos JSON que podrían almacenarse en Couchbase. Una consulta básica tiene varias secciones especificadas por las palabras clave SELECT, FROM y WHERE, al igual que SQL. Los detalles de especificar la ruta a la estructura de datos de la que provendrán los datos se ajustan y adaptan al mundo anidado de los objetos JSON.

Para fomentar la experimentación, N1QL ofrece un banco de trabajo de consulta con una interfaz visual para probar y refinar las consultas. Couchbase también ofrece una opción genérica de búsqueda de texto completo, que se ejecuta de forma independiente, para consultas que buscan palabras de texto en lugar de datos estructurados.

Malloy

El problema de SQL, según los creadores de Malloy, radica en los detalles sintácticos. Expresar incluso la consulta más simple lleva tiempo porque el lenguaje es detallado y está lleno de trampas de rendimiento ocultas. Entonces, crearon un lenguaje de programación moderno con valores predeterminados naturales y una sintaxis más simple que se puede compilar en SQL, por lo que nadie necesita actualizar una base de datos de valores.

El resultado es una sintaxis que se asemeja a un GraphQL, pero más potente. Una consulta es más como un modelo o una visión del resultado, incluidas las restricciones, las coincidencias o los valores predeterminados. Malloy maneja algunas optimizaciones en segundo plano. Los JOIN más inteligentes, por ejemplo, se pueden generar automáticamente para evitar abismos y trampas en el rendimiento de los fanáticos. Las subconsultas se pueden agregar para ahorrar tiempo. También se agregan índices según sea necesario. Como resultado, escribir consultas se parece más a escribir código moderno, con puntuación que sirve para mantener la estructura sucinta.

Para incluirlo en el código de Node.js, el núcleo de código abierto de Malloy está construido en TypeScript. Un complemento de VS Code simplifica el desarrollo.

Basis

La mayoría de los lenguajes de consulta están vinculados directamente a una base de datos en particular. Basis está construyendo más de un pipeline que puede extraer de una variedad de fuentes antes de filtrarlas con una combinación de SQL y Python. Al final del pipeline están los exportadores que entregan los datos a una variedad de opciones estándar, que van desde código en ejecución hasta algoritmos de inteligencia artificial, gráficos y paneles.

Los desarrolladores ya están creando pipelines como ésta en su propio código y muchos proyectos dependen de estructuras similares. Basis ofrece una opción construida previamente, que se puede personalizar de formas más elaboradas. Los inputs van desde consultas de base de datos estándar hasta toques de API y código Python personalizado. Los transformadores no se limitan a las cláusulas WHERE básicas de SQL porque, a medida que los datos fluyen por el pipeline, usted puede escribir código de Python que hace más que filtrar.

Basis es solo un ejemplo de las herramientas de pipeline de datos más nuevas que están abriendo el proceso de consulta para extraer datos de más de una fuente, filtrar con más de un idioma y entregar los datos en más de una forma. Es una visión de poder tomar datos de casi cualquier fuente y entregarlos a casi cualquier consumidor.

Puede ver también:

Primer Contacto

Más »

Casos de éxito

Más »