NoSQL para Mentes Relacionales

Cuando los desarrolladores piensan por primera vez en gestionar datos o elegir una base de datos para su aplicación, lo primero que a menudo les viene a la mente es —

— así es, una tabla.

Luego configuran diferentes tablas para los diferentes tipos de datos, como tener una tabla para usuarios y otra para productos, pedidos, y así sucesivamente. Con los datos distribuidos en diferentes tablas, están obligados a tener una relación entre sí. Por lo tanto, las tablas tendrán referencias a los elementos en otras tablas a través de una clave foránea. Y al final, pueden terminar eligiendo una base de datos relacional cada vez para resolver sus problemas. Especialmente al tratar con relaciones, la idea de una base de datos no relacional puede parecer muy poco intuitiva.

Pero el problema es — los datos no siempre son planos. Los requisitos de datos pueden ser complejos, y cuando los desarrolladores visualizan sus datos sin considerar las bases de datos, a menudo no son tabulares. En cambio, pueden aparecer anidados, jerárquicos o incluso similares a un grafo.

Graph, nested, and hierarchical data

No necesitas imaginar una tabla cada vez que empieces a trabajar con datos. En aplicaciones modernas, los datos a menudo necesitan tener un esquema flexible con tipos de datos complejos. Por lo tanto, aplanarlos en una tabla puede no ser siempre la mejor idea. Además, las bases de datos relacionales también tienen sus propias limitaciones de escalado. A medida que escalas, puede que necesites preocuparte por la fragmentación, lo que a menudo requiere cambios significativos a nivel de aplicación.

Introduce bases de datos no relacionales, más comúnmente conocidas como NoSQL. Puede que estés perdiendo la oportunidad de extraer todo el potencial de NoSQL si has estado evitándolas en tus elecciones de diseño. En este artículo, definimos rápidamente qué son las bases de datos no relacionales y luego proporcionamos diferentes opciones de bases de datos NoSQL para diferentes problemas de la vida real.

Al final, también cubriremos las ventajas que las bases de datos NoSQL ofrecen sobre las relacionales, y también mencionaremos escenarios donde una base de datos relacional sigue siendo una mejor elección.

Bases de Datos No Relacionales, o NoSQL

En pocas palabras, estas bases de datos almacenan datos en un formato no tabular. Vienen en diferentes tipos, cada uno construido para propósitos específicos y el tipo de datos no estructurados que pueden soportar. Los más comunes son:

  1. Bases de datos de documentos: Almacenan datos en documentos similares a JSON
  2. Bases de datos clave-valor: Almacenan datos con una estructura ‘clave-valor’ para claves únicas.
  3. Bases de datos de gráficos: Utilizan nodos, aristas y propiedades para representar y almacenar relaciones entre puntos de datos.

Otros tipos son bases de datos orientadas a columnas, en memoria y series temporales.

Diferentes proveedores de bases de datos NoSQL ofrecen características como la creación de índices en ciertos campos, SDKs amigables para desarrolladores, alta disponibilidad, operaciones transaccionales y la capacidad de escalar fácilmente tu base de datos hacia arriba o hacia abajo.

Resolviendo Problemas de la Vida Real Con NoSQL

Veamos algunos ejemplos donde resolvemos problemas de la vida real con bases de datos NoSQL.

Construyendo una Aplicación de Blog que Soporta Comentarios y Etiquetas

Las bases de datos de documentos son las mejores para este tipo de sistemas de gestión de contenido. Cada contenido puede ser un documento separado. El esquema es flexible y cada documento puede contener subcolecciones. Puedes aprovechar las capacidades de indexación de campos de arreglo de los proveedores de bases de datos de documentos para realizar consultas complejas, por ejemplo, recuperar todos los blogs con sus etiquetas.

Plataformas de Redes Sociales y Profesionales

Las bases de datos de grafos ayudan a definir relaciones complejas entre personas. Encuentra fácilmente amigos de amigos a través de búsquedas en grafos.

Datos de Sensores IoT

Utiliza datos de series temporales para manejar grandes cantidades de datos con marca de tiempo de un dispositivo sensor.

Carrito de Compras

Utiliza una base de datos de pares clave-valor, que ofrece alta concurrencia con lecturas y escrituras rápidas. También puedes usar bases de datos clave-valor para almacenar la información de sesión de los usuarios, y el carrito de compras puede ser un campo dentro de la sesión (para una sesión de compra individual).

Motores de Recomendación

Utiliza bases de datos de grafos para mapear relaciones entre usuarios, productos y preferencias.

Donde NoSQL Supera a las Bases de Datos Relacionales

A continuación se presentan algunos puntos donde las bases de datos NoSQL ofrecen ventajas sobre las bases de datos relacionales:

  1. Productividad del desarrollador: Los proveedores de bases de datos NoSQL ofrecen APIs y SDKs diseñados para el desarrollo de aplicaciones modernas, lo que permite una prototipación y desarrollo más rápidos.
  2. Escalabilidad: Las bases de datos NoSQL escalan horizontalmente (simplemente necesitas agregar más servidores o nodos), lo cual es rentable y más fácil de gestionar en comparación con la escalabilidad vertical requerida por las bases de datos relacionales.
  3. Flexibilidad: NoSQL ofrece un esquema flexible, ideal para el desarrollo ágil y los requisitos de aplicación en constante evolución.
  4. Manejo de datos anidados: A menudo, los datos están anidados o son jerárquicos, como en formatos JSON o XML. Las bases de datos NoSQL pueden admitir estos formatos, donde una transformación compleja puede ser necesaria al utilizar bases de datos relacionales para estos casos.

Donde las bases de datos relacionales aún tienen ventaja

A continuación se presentan algunos casos de uso en los que las bases de datos relacionales siguen siendo relevantes y son una buena opción.

  1. Análisis e informes: Las bases de datos relacionales están optimizadas para consultas ad hoc, agregaciones e informes. Para cualquier caso de uso analítico e informes, las bases de datos relacionales siguen siendo la elección preferida.
  2. Uso intensivo de relaciones y joins: Aunque aún puedes gestionar y trabajar con relaciones en bases de datos NoSQL, si tu aplicación depende en gran medida de joins entre diferentes conjuntos de datos, las bases de datos relacionales aún pueden ser una buena opción.
  3. Consistencia sobre disponibilidad: En escenarios donde la consistencia de los datos es más importante que la disponibilidad (por ejemplo, transacciones financieras), las bases de datos relacionales pueden ofrecer más garantías.

Y con esto concluimos nuestro artículo. Exploramos qué son las bases de datos NoSQL y cómo abordan los desafíos del mundo real en la gestión de datos. Las bases de datos NoSQL abren un mundo de posibilidades para aplicaciones modernas, desde su flexibilidad en el manejo de estructuras de datos complejas hasta las potentes características ofrecidas por los proveedores. Para aquellos que aún no han probado NoSQL, espero que esto les inspire a intentarlo en su próximo proyecto: podría ser la solución perfecta para sus necesidades.

Source:
https://dzone.com/articles/nosql-for-relational-minds