Los conceptos básicos de las bases de datos NoSQL y por qué las necesitamos

Una guía para principiantes del mundo NoSQL

Organizar datos es una tarea muy difícil. Cuando decimos organizar, en realidad estamos categorizando cosas según su tipo y función.

Una opción es que RDBMS es como una hoja de Excel: categoriza los datos en forma de tablas. Puede formar relaciones entre las tablas.

Una consulta cuestiona la base de datos, lo que le da una respuesta relevante a cambio. Este lenguaje de consulta es SQL o lenguaje de consulta estructurado.

Por ejemplo,

select * from Employee_Data;

selecciona todos los datos del empleado de la tabla Employee_Data.

Las bases de datos relacionales siguen un esquema , un plano detallado de cómo funcionan sus tablas.

Usas Amazon, Facebook y muchas aplicaciones de redes. Lanzan actualizaciones, agregan nuevas funcionalidades e incluso módulos adicionales. Entonces, ¿cómo se cambia el esquema cada vez? ¿No les lleva mucho tiempo a empresas tan grandes dedicar su tiempo y trabajo a cambiar el esquema?

Aquí es donde SQL no puede funcionar .

Los contras de RDBMS

Las bases de datos relacionales no son tan malas como la gente describe estos días. Todavía están en uso por muchas organizaciones. La introducción de NoSQL en la imagen es para llenar los espacios donde RDBMS ya no puede ser útil.

Les voy a mostrar ejemplos para que tengan una comprensión clara.

1. RDBMS no puede manejar 'Variedad de datos'.

La cantidad de datos no estructurados sigue aumentando anualmente y su gestión es difícil. RDBMS no puede forzar todos los tipos de datos bajo un esquema unificado de tablas.

Los silos de datos también son un problema para los desarrolladores.

Según Tech Target, un silo de datos es un depósito de datos que permanece bajo el control de un departamento. Está aislado del resto de la organización.

Esto significa que cuando existen más silos para los mismos datos, es probable que su contenido sea diferente. Crea confusión sobre qué repositorio representa la versión más actualizada.

El aumento de datos del año 2013 al 2020 es visible en la imagen a continuación.

Aproximadamente 44 bytes Zeta de datos se generarán en el año 2020.

Manejar datos tan diversos que no están relacionados entre sí podría ser mucho más difícil en RDBMS.

Ejemplo: es difícil almacenar los detalles de un paciente, que tiene diferentes condiciones corporales. La categorización de datos tan diversos es difícil en RDBMS.

2. Dificultad para cambiar tablas y relaciones.

La alteración de las relaciones entre tablas o la adición de una nueva tabla podría afectar las relaciones existentes. Esto significa cambiar el esquema.

Cambiar el esquema sería como eliminar el existente e idear un nuevo esquema.

La adición de una nueva funcionalidad necesitaría todos los elementos para soportar la nueva estructura. El cambio es inevitable.

Ejemplo: cada columna adicional necesita que todas las filas anteriores tengan valores para esa columna. Mientras que en Cassandra (una base de datos NoSQL), puede agregar una columna a particiones de fila específicas.

3. Los RDBMS siguen las propiedades ACID de la base de datos.

Las propiedades ACID de una base de datos son Atomicidad, Consistencia, Aislamiento y Durabilidad. ‌

Atomicidad : un enfoque de "todo o nada". Si falla algún extracto de la transacción, se revierte toda la transacción.

Coherencia: la transacción debe cumplir con todos los protocolos definidos por el sistema. No hay transacciones a medio completar.

Aislamiento: ninguna transacción tiene acceso a ninguna otra transacción que se encuentre en un estado intermedio o inacabado. Cada transacción es independiente.

Durabilidad : garantiza que una vez que una transacción se compromete con la base de datos, se conserva mediante el uso de copias de seguridad y registros de transacciones.

Las propiedades ACID no son flexibles.

Por ejemplo, RDBMS sigue la normalización o un concepto de punto único de verdad . Para cada cambio que realice, debe asegurarse de tener propiedades ACID estrictas. También se aplican las reglas de integridad de entidad e integridad referencial.

El teorema de CAP

Según Wikipedia, el teorema CAP ( teorema de Brewer) establece que es imposible que un almacén de datos distribuido proporcione simultáneamente más de dos de las siguientes tres garantías:

Consistencia: como la C en ACID.

Disponibilidad : ‌Los recursos deben estar siempre disponibles. Debe haber una respuesta sin error.

Tolerancia de partición : no hay un solo punto (o nodo) de falla.

Es difícil lograr las tres condiciones. Uno debe comprometerse entre los tres.

BASE al rescate!

‌NoSQL se basa en un modelo más suave conocido como modelo BASE. BASE ( B asically A vailable, S oft estado, E consistencia ventual).

Básicamente disponible: garantiza la disponibilidad de los datos. Habrá una respuesta a cualquier solicitud (también puede haber fallas).

Estado suave : el estado del sistema puede cambiar con el tiempo.

Consistencia eventual: el sistema eventualmente se volverá consistente una vez que deje de recibir información.

Las bases de datos NoSQL renuncian a los requisitos A, C y / o D y, a cambio, mejoran la escalabilidad.

NoSQL

Aquí es cuando NoSQL vino al rescate. Se trata de bases de datos “ No solo SQL” o “No relacionales”.

Características de NoSQL:

  • Sin esquema
  • Eventualmente consistente (como en la propiedad BASE)
  • Replicación de almacenes de datos para evitar punto único de falla.
  • Puede manejar variedad de datos y grandes cantidades de datos.

Tipos de bases de datos NoSQL

Las bases de datos NoSQL se dividen en cuatro categorías principales:

Tiendas de valor clave: Riak, Voldemort y Redis

Tiendas de columnas anchas: Cassandra y HBase.

Bases de datos de documentos - MongoDB

Bases de datos de gráficos : Neo4J e HyperGraphDB.

Las palabras del lado derecho son ejemplos de los tipos de bases de datos NoSQL.

1. Almacenes de valor clave

Un almacén de valor clave utiliza una tabla hash en la que existe una clave única y un puntero a un elemento de datos en particular.

Imagine que los almacenes de valores clave son como un directorio telefónico donde los nombres de la persona y sus números se mapean juntos.

Los almacenes de valores clave no tienen un idioma de consulta predeterminado. Recupera datos usando los comandos get, put y delete . Ésta es la razón por la que tiene un alto rendimiento.

Aplicaciones : Útil para almacenar comentarios e información de sesiones. ‌Pinterest usa Redis para almacenar listas de usuarios, seguidores, no seguidores, tableros.

2. Almacenes de columnas anchas

En una base de datos de almacén de columnas, las columnas de cada fila están contenidas dentro de esa fila.

Cada familia de columnas es un contenedor de filas en una tabla RDBMS. La clave identifica la fila que consta de varias columnas.

No es necesario que las filas tengan el mismo número de columnas. Las columnas se pueden agregar a cualquier fila en cualquier momento sin tener que agregarlas a otras filas. Es una tienda de filas particionadas.

¿Cómo almacena los datos una base de datos en columnas?

Aplicaciones : Spotify utiliza Cassandra para almacenar metadatos y atributos de perfil de usuario.

3. Bases de datos de documentos

‌Las tiendas de documentos utilizan documentos JSON, XML o BSON (codificación binaria de JSON) para almacenar datos.

Es como una base de datos de clave-valor, pero un almacén de documentos consta de datos semiestructurados .

Un solo documento es para almacenar registros y sus datos.

‌No admite relaciones ni uniones.

Si queremos almacenar los datos del cliente y sus pedidos, podemos utilizar almacenes de documentos para hacerlo.

Aplicaciones: SEGAusa MongoDB para manejar 11 millones de cuentas en el juego creadas en MongoDB.

4. Bases de datos gráficas

‌ Los nodos y las relaciones son los componentes esenciales de las bases de datos de gráficos. Un nodo representa una entidad. Una relación representa cómo se asocian dos nodos.

‌En RDBMS, agregar otra relación da como resultado muchos cambios de esquema.

La base de datos de gráficos solo requiere almacenar datos una vez (nodos). Los diferentes tipos de relaciones (bordes) se especifican para los datos almacenados.

Las relaciones entre los nodos están predeterminadas, es decir, no se determinan en el momento de la consulta.

Atravesar relaciones persistentes es más rápido.

Es difícil cambiar una relación entre dos nodos. Daría lugar a cambios regresivos en la base de datos.

Ejemplo : Esta imagen muestra cómo funciona MySQL donde tiene que realizar muchas operaciones para encontrar un resultado correcto para Alice.

Una base de datos gráfica , que predetermina las relaciones.

Esta es parte de la información básica que necesitará para comenzar a explorar NoSQL. Se están inventando nuevas bases de datos para usos específicos.

Conozca el tipo de datos que genera su aplicación, y luego es fácil elegir la base de datos correcta.

Escribo historias sobre lecciones de vida, codificación y tecnología. Para leer más, sígueme en Twitter y Medium.