Portada » NoSQL: qué son estas bases de datos, para qué sirven y cómo funcionan

NoSQL: qué son estas bases de datos, para qué sirven y cómo funcionan

by Donal Sandro Noblejas Huaman

Hola mi nombre es donal Sandro Noblejas Huamán de Lima Perú 🇵🇪 hoy vengo con otro artículo de  Bases de Datos y como siempre y en cada uno de ellos completamente solo y me agrada porque se aprende, y como siempre sin empresas, personas, familiares, ni el estado ni ningún tipo de ayuda cuidado con los estafadores solo en mis tiempos libres redactando jejeje, bueno ahí vamos.

Datos diferentes, almacenamiento diferente.

Anteriormente, los datos de los servicios en línea se almacenaban principalmente en bases de datos relacionales (RDB) con esquemas y relaciones entre tablas estrictamente definidos, independientemente de la cantidad y estructura de los datos. Pero estas bases de datos son difíciles de escalar y son más adecuadas para almacenar registros estructurados, por ejemplo, información sobre pedidos en una tienda en línea o sobre usuarios.

Con el paso de los años, los servicios se han vuelto más complejos y trabajan cada vez más con formatos no estructurados como imágenes, vídeo y audio. Para almacenarlos, se necesitaban herramientas más flexibles y sencillas: así aparecieron los sistemas de gestión de bases de datos no relacionales, o NoSQL. Hablaremos de ellos en este artículo..

¿Qué es NoSQL?

NoSQL (no sólo SQL, “no sólo SQL”)  es un término para tecnologías de gestión de datos distintas de SQL. NoSQL incluye sistemas de columnas, gráficos, orientados a documentos y de valores clave.

La diferencia entre tiendas relacionales y no relacionales es cómo almacenan el contenido.

En las bases de datos relacionales, los datos se presentan en forma de tablas con un número fijo de columnas. Normalmente las tablas están relacionadas entre sí mediante campos comunes. Por ejemplo, la tabla de usuarios podría tener un campo de grupo que almacene el número del grupo del que es miembro el usuario. Este campo vincula a los usuarios a la tabla de grupos , que contiene información sobre los grupos de usuarios. Este modelo es conveniente si trabajamos con el mismo tipo de datos.

Pero trabajar con datos de diferentes formatos en bases de datos relacionales es un inconveniente: deberá ajustar los datos a un único estándar. Por lo tanto, una estructura SQL rígida no es adecuada; es mejor agregar entidades solo con los campos necesarios. Esta función está disponible en MongoDB, uno de los DBMS NoSQL más populares. Se basa en un enfoque orientado a documentos, del que hablaremos con más detalle.

Por qué apareció el modelo NoSQL

La estructura rígida del ejemplo anterior no es el único problema con las bases de datos relacionales. Otras desventajas son la lentitud, la vinculación a un único punto de acceso, la escasa escalabilidad y los problemas al procesar grandes cantidades de datos. Este es el reverso de los estándares ACID sobre los que se construyen las bases de datos relacionales:

Atomicidad : una transacción se ejecuta por completo o no se ejecuta en absoluto. En relación con las bases de datos, una transacción es una acción o cadena de acciones con una base de datos: agregar, cambiar, eliminar un registro, etc.

Coherencia : los estados antes y después de una transacción deben ser consistentes. El principio recuerda a la ley de conservación de la masa en física: nada desaparece sin dejar rastro y nada aparece de la nada.

Por ejemplo, cuando un cliente de un banco transfiere 100 soles de la cuenta A a la cuenta B, el saldo de la cuenta A debería disminuir en 100 soles y el saldo de la cuenta B debería aumentar en la misma cantidad.

La coherencia garantiza que incluso si una transacción falla, el saldo total de ambas cuentas no cambiará. Por ejemplo, si se produce un error después de que se reduce el saldo de la cuenta A, pero antes de que se aumente el saldo de la cuenta B, la base de datos volverá a un estado en el que los saldos de las cuentas cumplen con las reglas comerciales.

Aislamiento : las transacciones que se ejecutan en paralelo no tienen acceso a los estados intermedios de cada una y reflejan los resultados como si se ejecutaran secuencialmente.

Imagínese la situación. Dos clientes decidieron simultáneamente comprar el mismo producto en una tienda online, que quedó en un solo ejemplar.

El cliente A agrega un producto al carrito y el sistema inicia una transacción para reservar el artículo. Casi simultáneamente, el Cliente B selecciona el mismo producto y lo añade a su carrito.

Si el pago del cliente A se realiza correctamente, el sistema confirma la compra y la cantidad de productos disponibles en el sitio cambia (en nuestro caso a 0).

Cuando el cliente B complete su transacción, el sistema ya entenderá que el producto ha sido vendido, por lo que cancelará la compra.

La durabilidad garantiza que una vez completada una transacción, los cambios en la base de datos se conserven incluso en caso de falla.

Los estándares ACID hacen de los RDB un modelo de almacenamiento de datos confiable pero lento que no es adecuado para servicios de alta carga.

Esto quedó claro a medida que Internet se difundió. El crecimiento explosivo del volumen de datos procesados ​​obligó a los servidores a trabajar al límite y a los programadores a ajustar los datos en un solo formato. Las empresas necesitaban más servidores y especialistas, y todo esto no era barato. Se decidió almacenar la información de otra manera.

¿Cuáles son las ventajas de NoSQL?

A finales de la década de 2000, las grandes empresas comenzaron a utilizar DBMS no relacionales, que tenían varias ventajas importantes sobre los sistemas tradicionales:

  • La capacidad de trabajar con cualquier formato de datos le permite utilizar una base de datos para todos los datos de la empresa. Una base de datos es más barata de almacenar y más fácil de mantener.
  • Las bases de datos NoSQL pueden escalarse horizontalmente fácilmente; si hay más información o consultas, simplemente agregue más nodos. Las bases de datos relacionales deberán escalarse verticalmente, es decir, transferirse a un servidor más potente. Además, NoSQL es más fácil de migrar a la nube.
  • La alta velocidad de procesamiento de solicitudes simplifica el rendimiento de las aplicaciones en general.
  • Desarrollar aplicaciones con NoSQL es más fácil. Los equipos de desarrollo pueden crear e implementar nuevas funciones y servicios más rápido.

Las empresas que enfrentan un rápido crecimiento en volumen de datos y carga de trabajo pueden resolver sus problemas de manera fácil y económica utilizando NoSQL. Estas ventajas quedan demostradas por los estándares de la arquitectura BASE , cuyo nombre significa Básicamente Disponible, Estado Suave y Eventualmente consistente.

La disponibilidad básica significa que el sistema siempre se puede leer y escribir, incluso durante fallas u otras anomalías. El costo de la compensación es que algunas consultas pueden arrojar resultados intermedios o parcialmente incorrectos.

El estado suave implica que el estado del sistema puede cambiar con el tiempo para lograr coherencia.

Eventualmente consistente significa que se puede violar la consistencia de los datos, pero con el tiempo llegarán a un estado consistente. Esto permite una mayor disponibilidad y rendimiento.

Por lo tanto, los desarrolladores de bases de datos NoSQL abandonaron los estándares ACID en aras de la velocidad y la facilidad de escalamiento.

Cómo funcionan las bases de datos NoSQL

A diferencia de las bases de datos relacionales con su estructura rígida, las entidades en NoSQL no necesitan ajustarse a un formato tabular. Los desarrolladores son libres de agregar nuevos campos, eliminar o cambiar la estructura de datos de cada entidad.

En una base de datos no relacional, cada película se puede representar como un documento separado (si la base de datos está orientada a documentos), que contiene todos los datos sobre la película.disculpen que no escriba código de ejemplo se haría tedioso y laborioso para mí debido a como escribo y también tener que escribir código es algo complicado.

// Документ фильма в формате JSON

Ahora imaginemos que los gerentes de producto nos pidieron que agregáramos una nueva característica: una lista de premios para cada película. En el caso de una base de datos SQL, tendríamos que realizar la siguiente secuencia de acciones:

  • Piense en un esquema de implementación de datos.
  • Cree una nueva tabla de “Recompensas”.
  • Establezca una relación con la tabla Películas mediante una clave externa.
  • Cambie el código para insertar datos de recompensa en la tabla.

Dado que los RDB requieren una estructura de datos rígida, deberá pensar detenidamente el esquema de integración con anticipación. Y si la base de datos ya ha crecido considerablemente o se utiliza activamente en producción, entonces tendrá que trabajar duro: crear copias de seguridad de los datos, escribir y verificar scripts de migración, actualizar las aplicaciones y servicios asociados.

El cambio de estructura en NoSQL se realiza en dos pasos:

  • Simplemente agreguemos un nuevo campo “Premios” a los documentos de la película.
  • Llenemos este campo con datos sobre los premios de cada película.

Por lo tanto, las bases de datos no relacionales se utilizan en proyectos donde la estructura de datos cambia con frecuencia.

¿Para qué tareas son adecuadas las bases de datos NoSQL?

Las bases de datos NoSQL ofrecen una alternativa a las bases de datos tradicionales basadas en el modelo SQL. Esto es útil cuando la aplicación necesita ser altamente escalable, responsiva y flexible, pero se puede sacrificar una fuerte coherencia.

Normalmente, NoSQL se utiliza en servicios de alta carga que requieren una alta frecuencia de consultas a la base de datos, procesando grandes cantidades de datos, así como datos de un formato indefinido o no persistente. Por ejemplo, en juegos online, aplicaciones de Internet de las cosas o sistemas de análisis.

Tipos de bases de datos NoSQL

Veamos los principales tipos de bases de datos no relacionales y escribamos consultas simples en Python para escribir y leer datos.

Tiendas de valor clave. El tipo más simple de tecnología NoSQL. Los datos se almacenan como pares clave-valor. Cada dato tiene una clave única que recupera el valor de ese dato.

Estos almacenamientos son similares a una guía telefónica: el nombre del suscriptor es la clave y el número es el valor. Para saber el número de una persona, es necesario extraer el valor correspondiente a su clave, es decir, su nombre:

Este tipo de base de datos también es excelente para la autocorrección. Una palabra mal escrita se reemplaza por una escrita correctamente y una expresión obscena se reemplaza por un sinónimo impreso. Los almacenes de valores clave se utilizan a menudo para registrar consultas en otras bases de datos.

Otras tiendas de valores clave:

Las bases de datos orientadas a documentos almacenan datos en forma de documentos JSON (o BSON ). Cada documento es un registro separado; la estructura flexible del documento le permite almacenar datos complejos. Así es como se ve escribir y leer un documento en  MongoDB  , una popular base de datos orientada a documentos:

Otras bases de datos orientadas a documentos:

En  las bases de datos en columnas, los datos se almacenan, como probablemente ya habrás adivinado, en forma de columnas. Esto proporciona una gestión cómoda de determinadas propiedades de los objetos. Si tuviéramos que compilar nuestra biblioteca de películas en una base de datos SQL y quisiéramos agregar información sobre si una película se puede ver en 3D, tendríamos que crear una tabla separada de “Disponibilidad 3D” y llenar la mayoría de las celdas con el valor “No”. ”.

Otras bases de datos en columnas:

En  las bases de datos de gráficos, los datos se representan en forma de gráfico: una estructura de nodos y aristas, donde los nodos son objetos y los bordes son conexiones entre ellos. Estas bases de datos le permiten realizar consultas de manera eficiente relacionadas con el análisis multidimensional.

Una red social puede utilizar una base de datos gráfica para almacenar información sobre los usuarios (nodos) y sus conexiones (bordes): amigos, suscripciones, etc.

Así es como se ven las consultas en la popular base de datos de gráficos  Neo4j :

Otras bases de datos de gráficos:

Que sigue

Puede obtener más información sobre las bases de datos no relacionales en los libros “NoSQL. Metodología de desarrollo de bases de datos no relacionales de Pramodkumar Sadalaj y Martin Fowler y Seven Databases in Seven Weeks. Introducción a las bases de datos modernas y la ideología NoSQL por Eric Redmond. 

Autor Donal Sandro Noblejas Huamán

Lima Perú 🇵🇪 

Whatsapp:51924118897 – 51939416004

Sitio web verlista.com/blog

verlista.com

https://pe.linkedin.com/in/donal-sandro-noblejas-huaman

You may also like

Leave a Comment

Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?
-
00:00
00:00
Update Required Flash plugin
-
00:00
00:00