Este artículo presenta brevemente los fundamentos de SQL: su significado, definición y aplicación a diferentes tecnologías de bases de datos. Se presentan diferentes tipos de sistemas que utilizan SQL, desde bases de datos hasta procesamiento de flujos de eventos.
¿Qué es SQL?
Define: SQL [pron. "secuela"] - significa Lenguaje de consulta estructurado (SQL)Lenguaje de Definición de Datos (DDL), utilizado por las bases de datos para modelar y gestionar conjuntos de datos tabulares/relacionales; un conjunto de funciones estandarizadas del Lenguaje de Definición de Datos (DDL) para crear tablas, vistas y definir modelos de esquemas relacionales, y Lenguaje de Manipulación de Datos (DML) para consultar, insertar y modificar datos en las tablas.
*Las consultas selectas de sólo lectura forman parte técnicamente de su grupo de Lenguaje de consulta de datos (DQL). Aun así, operativamente, muchos se refieren a él como DML porque puede hacer más que consultas de solo lectura.
Brevísima historia de SQL
Investigadores de IBM Donald Chamberlin y Raymond Boyce crearon SQL en los años 70 para dar vida al concepto de modelos de datos relacionales de Edgar Codd. Este nuevo lenguaje para bases de datos relacionales permitía acceder a los datos sin tener que entender cómo o dónde los almacenaba físicamente el sistema.
Sus miembros llevan años desarrollando y proponiendo normas ISO para encapsular las especificaciones SQL. Por ejemplo, en 1987, el organismo internacional de normalización elaboró la especificación ISO 9075:1987. Otra aplicación popular fue SQL 92, que hace referencia a la norma ISO de 1992. En fecha tan reciente como 2016.
Otros productos derivados son Chamberlin's trabajo en curso con SQL para aplicaciones y análisis de datos modernos adicionales.
¿Quién utiliza SQL?
Las principales plataformas de bases de datos han adoptado SQL como interfaz de comandos estándar para los sistemas de bases de datos relacionales. Pero no sólo las bases de datos transaccionales se interesan por SQL. Las plataformas y aplicaciones de streaming también lo han utilizado para abstraer distintos tipos de servicios back-end para los desarrolladores.
Las plataformas analíticas y NoSQL también han utilizado SQL para facilitar las consultas a los usuarios finales, reduciendo la necesidad de codificación personalizada. Además, todos los lenguajes de programación tienen alguna interfaz con SQL para uso de los desarrolladores.
¿Qué puede hacer una base de datos SQL?
Una base de datos SQL almacena tablas de información dentro de un conjunto de definiciones de filas y columnas conocidas como esquemas. Las tablas agrupan los valores de las filas que comparten características comunes - por ejemplo, una tabla de tiendas, otra de transacciones de venta, etc.
Con una base de datos SQL, puedes insertar nuevos datos en estas tablas y extraerlos más tarde mediante una simple consulta. Las tablas pueden unirse, agruparse y resumirse, lo que permite realizar cálculos sobre la marcha a partir de sus valores.
Las bases de datos SQL se centran en el almacenamiento y la persistencia de los datos en un disco para acceder a ellos a largo plazo. De ahí que existan otras funciones para gestionar las tablas, el almacenamiento y los servicios relacionados.
Este interés por la normalización ha contribuido a que las bases de datos se conviertan hoy en día en una parte fundamental de las empresas.
¿Qué es una consulta SQL?
Una consulta SQL indica a la base de datos cómo recuperar o gestionar sus tablas de datos. Existen diferentes consultas para seleccionar filas, crear tablas e insertar o eliminar filas.
Por ejemplo, las consultas SELECT solicitan columnas con nombres específicos de una tabla y reciben de vuelta un conjunto de filas:
1 |
SELECCIONE COLUMNA DESDE CUADRO1; |
También puede solicitar filas cuyas columnas coincidan con valores específicos:
1 |
SELECCIONE COLUMNA DESDE CUADRO1 DONDE COLUMNA = 100; |
Unir varias tablas virtualmente en una consulta cuando se comparan valores de una tabla y se asignan a otra:
1 |
SELECCIONE COLUMNA, COLUMNAB DESDE CUADRO1, CUADRO2 DONDE CUADRO1.ID = CUADRO2.STOREID; |
Las consultas también crean nuevas tablas definiendo los tipos de datos de cada columna. Este ejemplo crea tres columnas de enteros, caracteres de cadena de longitud variable y números de coma flotante:
1 |
CREAR CUADRO VENTAS (STORENUM INT, NOMBRE VARCHAR, DAILYSALES FLOTADOR); |
A continuación, añada nuevas filas a la nueva tabla con una sentencia INSERT:
1 |
INSERTAR EN VENTAS VALORES (1, HAPPY MART, 13570.00); |
Los comandos SQL pueden ser mucho más avanzados y complejos, pero todos se basan en los ejemplos básicos anteriores.
Diferentes plataformas de bases de datos SQL
Las bases de datos SQL incluyen bases de datos relacionales empresariales como Oracle, Microsoft SQL Server*, IBM DB2, MySQL, PostgreSQL y muchas más. Muchas empresas utilizan estas bases de datos como parte esencial de sus soluciones y esperan una gran fiabilidad, alto rendimiento y seguridad inmediata, incluida la gestión de roles de usuario y el cifrado.
*Nótese que el nombre del producto de Microsoft confunde a menudo a las personas que buscan el término general de "base de datos SQL", por lo que a veces los términos se utilizan indistintamente por error. Se utiliza "MSSQL" para referirse a ella con mayor claridad.
Se ha escrito mucho sobre estas bases de datos comunes, pero existen muchos otros sistemas que utilizan SQL como lenguaje de elección. A continuación se analizan algunos de estos sistemas.
Bases de datos SQL integradas y de escritorio
Estamos tan acostumbrados a las bases de datos empresariales que es fácil olvidar lo cruciales que son (o han sido) otras plataformas de bases de datos. Las bases de datos de escritorio se basan en archivos y no incluyen una capa de red que conecte con una fuente central. Los usuarios comprimían un archivo o carpeta y lo compartían con otros como un archivo de proyecto o documento.
Al principio, los desarrolladores y analistas de escritorio recurrieron a Microsoft Access y Dbase como las primeras bases de datos compatibles con SQL. Muchos administradores de datos siguen utilizando Access para crear herramientas internas de introducción de datos basadas en formularios.
Del mismo modo, muchos eligen SQLite para escenarios incrustados y fuera de línea en los que se requiere una baja sobrecarga. Está diseñado para alimentar aplicaciones autónomas que también pueden ser portátiles. A día de hoy, SQLite es una opción muy popular entre los desarrolladores de aplicaciones para móviles.
Aunque no se ejecutan desde un servicio centralizado en tiempo real, existen soluciones de sincronización para este tipo de tecnología. Las soluciones de sincronización les permiten actualizar los almacenes de datos de la empresa si es necesario, pero otra capa de programación suele ofrecerlo sobre la propia base de datos.
Bases de datos SQL en la nube
Los proveedores de plataformas en la nube pública, como Google Cloud, Amazon Web Services y Microsoft Azure, han alojado ofertas de bases de datos como servicio (DBaaS) que utilizan SQL. El proveedor se centraba en proporcionar el sistema backend, mientras que el usuario se centraba en codificar las aplicaciones.
Pueden diferir de las versiones on-prem de ofertas similares, pero llevan incorporadas consolas de gestión, supervisión, optimizaciones y entornos informáticos distribuidos escalables.
Los proveedores de nube también pueden proporcionar un control escalable a través de la orquestación de contenedores (por ejemplo, Kubernetes), mientras que otros crecen o decrecen automáticamente en función de la demanda.
Bases de datos híbridas en la nube
Muchas empresas quieren la flexibilidad de una DBaaS basada en SQL pero con la seguridad de tener una copia de seguridad on-prem. Los proveedores de bases de datos han aprovechado las plataformas en la nube para ofrecer opciones de despliegue flexibles. Los despliegues híbridos de bases de datos SQL en la nube almacenan algunas partes de una base de datos distribuida en diferentes plataformas o en local, repartiendo la carga y la fiabilidad.
Esta área temática sigue desarrollándose a medida que madura la integración de bases de datos en la nube. Las empresas siempre intentarán mantener distintos niveles de control en función de las necesidades. No espere que esto cambie pronto.
Bases de datos SQL analíticas
Algunas bases de datos basadas en SQL se centran en la realización de análisis más avanzados, de gran volumen o de alto rendimiento. Estas bases de datos analíticas de big data incluyen ofertas on-prem y basadas en la nube. Algunos ejemplos son Snowflake, Amazon Redshift y Teradata.
Bases de datos NoSQL
¿Qué tiene que ver NoSQL con SQL? Aunque inicialmente se orientaron a facilitar el desarrollo web con almacenes de documentos JSON, algunas plataformas NoSQL han integrado SQL como una forma más de indexar y acceder a los datos.
Los proveedores NoSQL como Couchbase, MongoDB, Cassandra y Redis tienen cada uno su propio enfoque para consultar e interactuar con sus sistemas.
Algunos utilizan controladores ODBC/JDBC de terceros para proporcionar una capa sobre su sistema de consulta SQL. Otros, como Couchbase, incorporan la capacidad en el sistema, lo que permite una indexación eficiente y optimizaciones flexibles del análisis de consultas.
SQL para JSON
El uso de SQL en datos JSON requiere una sintaxis adicional a la de SQL estándar. Por ejemplo, las funciones adicionales pueden consultar objetos dentro de un array o buscar subobjetos en un conjunto complejo de mapeos.
Por ejemplo, Couchbase desarrolló N1QL para ampliar SQL y permitir este tipo de interacción. Couchbase también integra el lenguaje SQL++ de Chamberlin en su servicio de análisis.
Otras bases de datos empresariales tienen algunas funciones para manipular JSON, pero puede que no almacenen e interactúen con JSON directamente en la base de datos como hacen las bases de datos NoSQL.
Desarrolladores de aplicaciones
Es importante diferenciar entre los administradores de bases de datos (DBA) y los desarrolladores: ambos tienen requisitos únicos para SQL. Un DBA siempre dominará SQL, ya que muchas funciones de mantenimiento lo requieren. Sin embargo, un desarrollador sólo necesita saber lo suficiente para introducir o extraer datos.
Para ello, los desarrolladores pueden utilizar las bibliotecas Object-Relational Mapping (ORM) u Object Data Modeller (ODM) para abstraer la programación de la base de datos subyacente y su lenguaje de consulta SQL. Los métodos de alto nivel permiten al programador centrarse en escribir código familiar, mientras que las bibliotecas ORM/ODM crean el SQL y gestionan los datos tabulares. También ayudan a gestionar y "migrar" el modelo de datos cuando es necesario realizar cambios en el código.
Algunos ejemplos son Eloquent ORM de Laravel, .NET Entity Framework, SQLx y paquetes dedicados principalmente a gestionar migraciones de tablas, como golang-migrate. Otomano es un modelador de datos de objetos (ODM) para el SDK Node.js de Couchbase que proporciona un esquema JSON y validación para NoSQL (Introducción al puesto otomano).
Cuando una aplicación se convierte en un sistema de producción, la eficiencia de las consultas SQL también se vuelve más crítica. Un usuario avanzado o desarrollador centrado en SQL llevará el SQL al máximo, identificará cuellos de botella en el código y encontrará formas de optimizar las consultas. También pueden verse obligados a manejar manualmente la generación de código SQL en lugar de utilizar un ORM u otro sistema automatizado.
GraphQL es una alternativa a ORM, que aborda algunos de los retos inherentes al mapeo objeto-relacional. Proporciona un lenguaje de interacción de datos coherente independientemente del tipo de fuente de datos. Otros paquetes, como Prisma, proporcionan una capa de conectividad con bases de datos.
SQL para Big Data
Además de las bases de datos analíticas, muchas otras plataformas utilizan SQL para aplicaciones de ciencia de datos, elaboración de informes, procesamiento de flujos y cuadros de mando.
Chispa
El entorno de análisis distribuido de Apache Spark, utilizado a menudo por los científicos de datos, utiliza varios lenguajes, incluido Spark SQL para acceder a conjuntos de datos de archivos distribuidos como Data Frames. En este caso, utilizarías SQL para abstraer un complejo conjunto de agentes que realizan el trabajo de fondo.
El entorno Spark está disponible a través de plataformas web como Jupyter, Zeppelin y Databricks.
Cuadros de mando de inteligencia empresarial
Los analistas de datos y de negocio que utilizan interfaces gráficas de usuario para bases de datos están familiarizados con la conexión a bases de datos backend. No tienen que utilizar SQL directamente. En su lugar, los analistas de negocio utilizan asistentes para elegir y analizar los valores relevantes.
El resultado es un gráfico, un mapa o un resumen de tablas que el usuario puede incluir en un informe. La propia aplicación suele leer las tablas en memoria y transformarlas para los fines del usuario sin exponer el SQL subyacente.
Estas plataformas se convierten en un reto cuando los conjuntos de datos son grandes. En ese momento, el sistema puede pasar una consulta SQL a la base de datos (también conocida como consulta pass-through) para realizar agregaciones o cálculos antes de enviar los datos al cliente. Entre los productos de BI de esta categoría se encuentran Tableau, QlikView y SAP, entre otros.
Streaming de eventos SQL
El éxito de Apache Kafka ha contribuido a que sea posible mover datos de muchas fuentes a un sistema de mensajería distribuido de "registro de cambios". Sin embargo, no es fácil crear una aplicación sobre Kafka que realice análisis en tiempo real a medida que pasan los eventos. Los flujos de eventos disponen de opciones basadas en SQL para extraer valor de los datos en tiempo real.
ksqlDB soluciona este problema utilizando SQL para crear y gestionar los flujos subyacentes. De este modo, los usuarios pueden crear consultas estándar tanto con los datos almacenados como con los flujos en tiempo real a medida que se reciben.
Lecturas complementarias
Como se puede ver por los muchos usos diferentes anteriores, las soluciones de bases de datos actuales utilizan SQL de forma generalizada. Puedes aprender sus patrones básicos rápidamente y luego aplicarlos a muchos escenarios analíticos y operativos diferentes. Aquí tienes algunos enlaces para saber más sobre cómo la tecnología Couchbase aprovecha la flexibilidad y familiaridad de SQL.