Comparación bases de datos relacionales y no relacionales

Escrito por Cesar Cid Robles

8 de octubre de 2019

Los sistemas gestores de bases de datos más populares en su tipo

El pasado mes de Septiembre la empresa en la que trabajo nos patrocinó un viaje al AWS Summit Mexico City 2019, entre la gran cantidad de talleres y charlas que hubo, llamó mi atención la que trató sobre Bases de Datos.

En esta charla nos explicaron sobre los tipos de DB que existen, sus principales ventajas y desventajas entre ellas, pero más importante, se nos presentaron casos en los cuales era aplicado cada uno de estos tipos. El día de hoy hablaremos acerca de los dos tipos de bases más utilizadas en el ambiente productivo en la actualidad.

BASES DE DATOS RELACIONALES

Comencemos por la que seguramente ya conoces, las bases de datos relacionales, este es el modelo que por lo regular enseñan en la universidad y que es ampliamente utilizado por sistemas gestores de contenido muy populares como WordPress.

Este tipo de bases de datos surgieron en los años 70 como una solución para almacenar información de acuerdo a un esquema que permite mostrar la información en forma de tablas, con columnas y filas.

Estos son los gestores de bases de datos relacionales más conocidos y utilizados:

  • Oracle
  • MySQL
  • Microsoft SQL Server
  • PostgreSQL
  • DB2

La integridad de los datos es un factor sumamente importante al momento de diseñar una base de datos de tipo relacional.

Los sistemas RDBMS (Relational Data Base Management System) se rigen por el principio ACID

  • Atomicity: Cuando una operación se realiza sobre los datos, esta debe ser absoluta, esto quiere decir que todos los pasos deben ejecutarse sobre una sola operación, o bien no debe ejecutarse ninguno.
  • Consistency: Cualquier operación realizada en la base de datos debe llevarla de un estado válido a otro, todos los datos deben ser consistentes, por ejemplo en los tipos (string, numérico, boolean)
  • Isolation: Ninguna operación puede o debe afectar a otras.
  • Durability: Cualquier operación realizada en una base de datos debe ser permanente una vez es ejecutada, incluso si ocurre un fallo inesperado en el sistema, los datos deben ser almacenados en su último estado conocido.

VENTAJAS

  • Al ser una tecnología bastante madura, cuenta con una documentación muy extensa y una comunidad bastante activa. Cualquier duda puede ser resuelta con un poco de investigación.
  • Los estándares SQL se encuentran bien definidos y son ampliamente aceptados.
  • Una gran cantidad de desarrolladores cuentan con amplia experiencia en esta tecnología.
  • Toda base de datos relacional debe cumplir con los principios ACID, por lo cual los datos son confiables.

DESVENTAJAS

Hasta hace un tiempo, las bases de datos relacionales eran la primera opción al momento de desarrollar casi cualquier aplicación, eran robustas, confiables y ampliamente conocidas por los desarrolladores, pero pronto surgió un problema, las bases de datos relacionales tienen muy poca escalabilidad, esto quiere decir que si nosotros queremos agregar una nueva funcionalidad a nuestra aplicación probablemente será necesario un rediseño del modelo de nuestra base de datos, lo cual requiere tiempo y recursos por parte del equipo de desarrollo.

Además de esto, no funcionan nada bien cuando no estructuramos bien los datos y tratar de migrar de un sistema gestor a otro implica un proceso muy amplio de análisis para asegurarnos que el esquema establecido para el sistema receptor es idéntico al del origen.

BASES DE DATOS NO RELACIONALES

A diferencia de la creencia de muchas personas, este tipo de bases de datos no es un reemplazo para las bases de datos relacionales, más bien es una alternativa que surgió para satisfacer las necesidades de aplicaciones cada vez más complejas y que se encuentran en constante actualización.

La principal diferencia entre este tipo de bases de datos y las relacionales recae en que no necesitamos invertir tanto tiempo en diseñar una estructura ya que podemos almacenar datos no estructurados y manipularlos libremente.

Dentro de las bases de datos no relacionales también existen diferentes tipos, cada uno con un propósito diferente.

  • Almacenamiento tipo llave-valor: Amazon Dynamo DB o Redis son ejemplos de este tipo, son sistemas sencillos que permiten obtener el valor asociado con una llave conocida. Este tipo de almacenamiento es preferido cuando los datos no son tan complejos y la rapidez de las consultas es un factor importante.
  • Almacenamiento Wide Column: Esta solución está diseñada con el propósito de ser altamente escalables y manejar sin problemas cantidades masivas de datos (petabytes). Este sistema usa una variante de SQL llamada CQL para la definición y manipulación de datos, lo cual las hace familiar hasta cierto punto con los sistemas relacionales.
  • Almacenamiento de documentos: Son sistemas libres de esquemas donde el más popular es MongoDB, su popularidad reside en que los dos stacks más conocidos y de los cuales ya hablé anteriormente MERN y MEAN se valen de este sistema para el desarrollo del backend. Los registros individuales no requieren una estructura uniforme, pueden contener muchos tipos de valores diferentes y pueden anidarse. Esta flexibilidad los hace particularmente adecuados para administrar datos semiestructurados en sistemas distribuidos.
  • Grafos: Almacena los datos como una estructura de red con nodos u objetos interconectados entre si para facilitar la visualización y el análisis de los datos en tiempo real. La próxima vez que ingreses a Facebook, piensa que tu lista de amigos es una red de grafos que a su vez contienen otras redes dentro de ellos.

VENTAJAS

  • Sumamente escalables, se pueden editar al mismo tiempo que nuestro código
  • Tolerantes al fallo
  • Fáciles de respaldar, basta con hacer una copia del archivo.
  • Los datos pueden adaptarse a otro tipo de sistema de manera sumamente sencilla ya que no presentan un esquema definido.

DESVENTAJAS

  • Son una tecnología relativamente reciente, como consecuencia, el conocimiento y la información son más limitados.
  • Cada base de datos tiene su propia manera de formatear sus datos, a diferencia de un lenguaje de consulta estructurado como SQL.

Comparación bases de datos relacionales y no relacionales was originally published in 200 Response on Medium, where people are continuing the conversation by highlighting and responding to this story.