Tipos de bases de datos: Cuál usar según las necesidades
En este artículo hablamos sobre los tipos de bases de datos que existen, la evolución de la gestión de datos y los...
En este artículo vamos a intentar resolver todas las dudas que surgen sobre si es mejor usar bases de datos relacionales o bases de datos no relacionales.
Tabla de contenidos
Ingenieros de Infraestructura de TI, Administradores de Sistemas, Ingenieros DevOps e Ingenieros de Software deben de considerar varios factores para seleccionar la compra o adquisición libre (Open Source) de una base de datos basados en sus necesidades puntuales basadas en el proyecto que quieran comenzar.
Hay muchas opciones de bases de datos sobre las cuales se puede hacer la elección basados en la compatibilidad de productos con los que la base de datos va a interactuar, el tipo de soporte que desean tener y el tamaño y el tipo de datos sobre los cuales se va a operar, pero sobre todos estos criterios, primariamente, estas pueden ser divididas en dos categorías: SQL (Base de Datos Relacional) y NoSQL (Base de Datos No-Relacional).
En este artículo vamos a presentar las características de ambas categorías y sus principales fortalezas y debilidades.
Las bases de datos relacionales datan desde los años 70. Una base de datos relacional es aquella que está compuesta por datos agrupados en tablas y que permite el reconocimiento y acceso a datos específicos en relación a un criterio aplicado. Almacena datos a través de múltiples tablas las cuales están organizadas en filas y columnas, y que permite al usuario hacer consultas de datos sobre varias tablas simultáneamente.
Para poder elaborar esas consultas y poderse adecuadamente mantener en buenas condiciones, una base de datos relacional usa un Sistema Relacional de Administración de Base de Datos (RDBMS por sus siglas en inglés). Este sistema usa un lenguaje especializado llamado SQL (Structured Query Language) que hace posible su operación y administración haciendo consultas relacionales sobre los datos que hospedan este tipo de bases de datos.
SQL no es el único lenguaje usado por los sistemas RDBMS, han existido otros lenguajes, pero el lenguaje más dominante y poderoso es SQL, al punto de que hay muchas variaciones y extensiones que se derivan del mismo y poseen muchas similitudes entre sí pero tienen sintaxis y funcionalidades propias como por ejemplo los lenguajes PL/SQL de Oracle, Transact-SQL de Microsoft, SQL/SPM de la base de datos Open Source MySQL, PL/pgSQL de la base de datos Open Source PostgreSQL y otros.
Muchos piensan que el concepto NoSQL se refiere a bases de datos que no tienen relación o no usan en ningún aspecto SQL, pero la verdad es que NoSQL se refiere más bien a “Not Only SQL” o traducido al español: “No Solamente SQL”. El concepto de NoSQL no es una exclusión en si, sino que se refiere a alternativas sobre SQL, si bien las bases de datos NoSQL no se basan en SQL como lenguaje principal para sus operaciones existen bases de datos NoSQL que incluyen la posibilidad de hacer consultas en SQL, simplemente significa que son bases de datos que no usan RDBMS para llevar a cabo sus consultas y operaciones de mantenimiento.
Su arquitectura de base para el almacenamiento de información no es tablar, sino que es basada en estructuras de datos mucho más flexibles y dinámicas que involucran diferentes tipos de tecnologías y lenguajes para su funcionamiento. Estos tipos de tecnologías y lenguajes ofrecen mayor tolerancia en cuanto a particionamiento y sobre todo mayor velocidad en operaciones, una alta disponibilidad y un escalamiento ágil que se nota ampliamente cuando la cantidad de datos que se almacena es más grande o crece de manera muy rápida, todo esto suena muy positivo pero hay un costo grande sobre todas esta cualidades: sacrificio en consistencia en datos.
El concepto de NoSQL no es nuevo, es más, se empezó a oír desde la década de los años 60, sin embargo, no fue sino hasta finales de los años 90 que fue acuñado y masivamente difundido a finales de los años 2000 con tecnologías alternativas desarrolladas de manera amplia enfocado a un tipo de mercado buscando explotar las debilidades propias del modelo clásico relacional.
Estas debilidades se vieron ampliamente expuestas con la gran explosión de generación de datos que vino en parte con el nacimiento de la World Wide Web y con el advenimiento de nuevas tecnologías emergentes como el Big Data, los servicios de Nube, la implementación de tecnologías de infraestructuras basadas en la Arquitectura de Micro-servicios y la generación masiva de nueva información creada por las redes sociales que exigen un estudio analítico de los gustos de clientela potencial para compra de servicios y productos, de allí nació la necesidad de un nuevo tipo de base de datos que pudiera con este nuevo tipo de información generada.
Primero, antes que todo y entrar en una comparación cruda entre ambos tipos de bases de datos debemos proceder a explicar dos estándares que se siguen en ambos tipos de bases de datos, pero de manera realista ambos estándares son más cumplidos en unas más que en otras.
Por sus siglas en inglés el estándar ACID es un acrónimo que es formado por las letras iniciales de las siguientes propiedades en inglés que deben de ser cumplidas en su totalidad para considerase que una base de datos cumpla con este estándar, si una de estas propiedades no es cumplida entonces no se considera una base de datos ACID:
Atomicity (Atomicidad): se asegura de que todos los datos en la base datos son correctamente validados, si no es llevada a cabo en cada una de las transacciones entonces se regresa al estado inicial antes de la transacción.
Consistency (Consistencia): esta propiedad establece que cuando una transacción de datos es realizada debe ser válida, y se debe de conservar la consistencia de la base de datos y su integridad tanto en datos como en su estructura.
Isolation (Aislamiento): Esta propiedad obedece al principio de que cuando se realiza cada transacción, esta es aislada de las demás transacciones, de esta manera una transacción no puede poner en riesgo la integridad de otras transacciones.
Durability (Durabilidad): Después de que una transacción es realizada, los cambios en la base de datos deben de persistir aún en el caso de que hayan fallas de sistemas.
Por sus siglas en inglés el estándar BASE es un acrónimo que es formado por las letras iniciales de las siguientes propiedades en inglés que deben de ser cumplidas en su totalidad para considerase que una base de datos cumpla con este estándar, si una de estas propiedades no es cumplida entonces no se considera una base de datos BASE:
Basically Available (Básicamente Disponible): Propiedad que garantiza la disponibilidad de los datos a través de la replicación de datos en otras máquinas organizadas en clústeres tomando una de las principales ventajas de las bases de datos NoSQL: Escalamiento Horizontal.
Soft-State (Estado Maleable): Maleabilidad de la base de datos, capacidad de cambiar conforme a cambios en la generación y el tipo de datos de manera ágil y eficiente, esta propiedad pone de manifiesto que los desarrolladores son responsables por la consistencia de las bases de datos.
Eventually Consistent (Entra en un estado de Consistencia eventualmente): La consistencia no es inmediata, pero puede ser alcanzada transcurrido un tiempo, las bases de datos combaten este defecto que puede traer efectos no deseados comúnmente llamados “lecturas rancias” con técnicas WAL (write-ahead logging) o haciendo registros de transacciones por adelantado.
Habiendo expuesto estos dos estándares las bases de datos SQL siguen fielmente el estándar ACID, es prácticamente un estándar que se puede hallar y comprobar ampliamente en todas las bases de datos SQL de mayor uso y popularidad en el mundo, en cambio las bases de datos NoSQL siguen el estándar BASE que es más flexible y se ajusta perfectamente a cuatro de las principales cualidades que ofrecen las bases de datos NoSQL: Flexibilidad, mayor velocidad en transacciones, Alta Disponibilidad y Escalamiento Horizontal. Aunque algunas bases de datos NoSQL profesan seguir los dos estándares, en la práctica se ha demostrado que no es así.
A continuación, presentamos algunos criterios de comparación entre uno y otro tipo de bases de datos.
Las bases de datos SQL tienen una estructura de datos tablar-relacional, organizadas por filas y columnas. Usa como herramienta principal el lenguaje SQL para su operación y mantenimiento. Entre las fortalezas principales de las bases de datos SQL están la integridad y la consistencia de datos, ideal para escenarios en los que la predictibilidad y naturaleza de los datos que va a albergar sean consistentes en mayor medida de lo posible.
Las bases de datos NoSQL son más flexibles en cuanto a su estructura de datos, ideales para manejar datos no rígidamente estructurados que pueden cambiar rápidamente de categoría o cantidad, para esto este tipo de bases de datos pueden utilizar múltiples tecnologías y lenguajes para interactuar con los datos que almacena, tales como Almacenamiento Clave-Valor (Key-Value Store, por sus siglas en inglés) basado en Arreglos, Almacenamiento de Columna-Ancha (Wide-Column Store, por sus siglas en inglés) donde los nombres y formatos de las columnas no son rígidos sino que pueden cambiar, Orientadas a Documentos creados con formatos específicos tales como JSON (JavaScript Object Notation), YAML (Yet Another Markup Language), XML (Extensible Markup Language).
El esquema que usan las bases de datos SQL es fijo y predefinido, por lo que su preparación y diseño deben de hacerse de manera muy cuidadosa antes de que se haga la implementación de este tipo de base de datos, cambios grandes en la estructura de datos una vez que se ha implementado este tipo de bases de datos son muy difíciles de llevar a cabo una vez puestas en producción.
El esquema que usan las bases de datos NoSQL es dinámico, con una base de datos de este tipo no es necesario tener un diseño y preparación fijos y extensivos de cómo va a quedar la estructura de datos, la estructura y tipo de los datos pueden variar mucho sin afectarlas, pues este tipo de base de datos está diseñado para poder hacer cambios grandes en su estructura de datos una vez que ya han sido puestas en producción. Esta flexibilidad las hace ideales para escenarios en donde la predictibilidad y cantidad del tipo de datos que las alimentan cambien de manera drástica en un tiempo relativamente corto.
En las bases de datos SQL el escalamiento es de tipo Vertical, es decir que cuando se necesitan más recursos para hacer frente a un incremento en la cantidad de datos que van a ser almacenados se hace el escalamiento sobre el hardware que las contiene, tales escalamientos pueden incluir aumento de capacidad de memoria RAM, actualización de Procesadores, agregado de discos de tecnologías más eficientes como por ejemplo Discos de Estado Sólido ó SSD.
En las bases de datos NoSQL el escalamiento es Horizontal, es decir que cuando la demanda de más recursos es necesaria servers adicionales son agregados a un conjunto de servidores dispuestos a manera de clústeres para tener más poder de procesamiento y alta disponibilidad, de esta manera si un servidor falla otro toma su lugar ofreciendo Alta Disponibilidad real.
Estas son algunas de las más importantes bases de datos basadas en SQL que usan el RDBMS, el orden de aparición no significa que una sea mejor o más usada que las otras:
Bases de Datos NoSQL más usadas en el mundo
Estas son algunas de las más importantes bases de datos NoSQL usadas en el mundo, igual que la lista anterior, no son enlistadas en base a su rendimiento o mayor uso una respecto a la otra:
Las Bases de datos SQL tienen su fortaleza en el estándar ACID, ya que se enfocan en ofrecer al usuario Integridad y Consistencia de Datos, cuando se trata de obtener exactitud, confiabilidad y se tiene la disponibilidad de hacer un análisis y un diseño de estructura de datos relacionales en el cual el tipo de información a manejar sea bastante predecible.
Este tipo de base de datos es ideal para sistemas de bases de datos en una institución financiera o bancaria en la cual la integridad y consistencia de datos es vital, también podríamos poner como ejemplo un sistema que lleve el control de calificaciones de alumnos en una institución educativa buscando manejar y obtener datos exactos y únicos sobre sus estudiantes, otros ejemplos podrían ser un sistema de reservación de citas médicas en un hospital, un sistema de inventario, un sistema de base de datos para un software de contabilidad, un sistema de reservación para hoteles, todos estos sistemas de bases de datos requieren exactitud y sus estructuras de datos son muy predecibles.
El tipo de profesional que requiere administrar este tipo de base de datos es un Administrador de Base de Datos SQL especialista en el tipo de tecnologías propietarias o exclusivas que usa la base de datos SQL elegida. Dependiendo del tamaño y complejidad del proyecto esta puede ser una única persona o un equipo completo de Administradores de Bases de Datos SQL.
Siendo los principales enfoques de este tipo de bases de datos la Maleabilidad, Alta Disponibilidad y Velocidad son ideales para manejar gran cantidad de datos que pueden variar constantemente.
Una base de datos NoSQL podría ser ideal como herramienta para hacer estudios de Mercadeo llevando a cabo recopilación de datos sobre actividades en redes sociales en forma de datos sobre personas que están en ciertos rangos de edad y regiones geográficas específicas que puedan indicar afinidad hacia ciertos tipos de productos o servicios.
Otros ejemplos podrían ser sistemas de bases de datos NoSQL que registren actividades o tendencia de compras de ciertos productos o servicios por parte de una masiva y variable cantidad de usuarios o clientes recurrentes a los que se les sugieran a través de anuncios y/o correos electrónicos la compra de éstos, los resultados efectivos de este tipo de ejemplos se miran en la práctica todos los días por parte de grandes compañías con presencia internacional tales como Amazon, Facebook, Instagram, Google o Twitter en el que la cantidad de información generada por sus usuarios es súper masiva y requiere de un enfoque de Big Data y el uso de bases de datos SQL sería impráctico.
Es importante hacer notar que para llevar a cabo este tipo de implementación de bases de datos veloces, flexibles, con alta disponibilidad y gran capacidad de escalamiento requieren de un tipo de profesionales diferentes al típico Administrador de Bases de Datos. Se necesita que el administrador de este tipo de bases de datos se especialice en las tecnologías y lenguajes que este tipo de base de datos utilizan, puede también ser un equipo conformado por un Administrador de Bases de Datos y un Ingeniero de Software que conozca bien las tecnologías y lenguajes usados por este tipo de base de datos para que se complementen el uno al otro.
Podemos resumir que entre más sea la complejidad y el tamaño del proyecto a realizar, más personal especializado se deberá emplear pues prácticamente el corazón de este tipo de bases de datos es su personal de Ingeniería especializado en los tipos de tecnologías y lenguajes en los que se centraliza la base de datos NoSQL elegida.
Para poder elegir entre usar una base de datos SQL y una NoSQL se debe de analizar qué tipo de datos van a ser recopilados, su predictibilidad y que tipo de información vamos a recopilar. Si este tipo de información requiere altos niveles de integridad y consistencia, requiriéndose que la información requiera del estándar ACID entonces una Base de Datos SQL es la elección más lógica.
Si por el contrario el tipo de datos a recopilar no es muy predecible, se pueden anticipar muchos cambios en el tipo de datos recopilados en períodos relativamente cortos de tiempo, que la información igual que sea cambiante sea masiva o pueda tener un potencial grande de crecimiento en el que el escalamiento ágil horizontal a través de plataformas Cloud sea una prioridad, y que el estándar BASE sea a todas luces el camino a tomar, entonces la opción más lógica sería una base de datos NoSQL.
Todo depende de la naturaleza del proyecto a llevar a cabo y los recursos con los que se cuente.
También te puede interesar
En este artículo hablamos sobre los tipos de bases de datos que existen, la evolución de la gestión de datos y los...
Con este curso de MongoDB aprenderás a crear y gestionar bases de datos NoSQL utilizando MongoDB, la base...
¿Quieres embarcarte en la aventura de los datos? Este curso es perfecto para curiosos digitales y aspirantes a...