logoBosonit_blanco

Tipos de bases de datos NoSQL 2

Bosonit
Bosonit

Tras la comparación entre las bases de datos NoSQL y SQL, pasamos a explicar los tres primeros tipos de bases de datos NoSQL: clave-valor, documentales y columnares.

Bases de datos NoSQL clave-valor

Características generales, ventajas e inconvenientes

Se trata del modelo más simple y flexible, basado en estructuras de pares clave-valor. La clave puede ser sintética o autogenerada, así como tener diferentes formatos, pero en todos los casos tiene que ser única. De todos modos, en un modelo particionado, los datos se dividen en buckets, de modo que diferentes buckets sí que pueden contener la misma clave. Esto significa que los elementos únicos se identificarán mediante la tupla (bucket, clave).

Los valores, por otro lado, van a tener una estructura sencilla, pudiendo aceptar formatos string, numéricos, JSON o incluso estructuras más complejas. Su uso se basa en las operaciones básicas get (obtener datos asociados a una clave), put (asociar un valor a una clave) y delete (borrar entrada con una clave específica).

Sus principales ventajas son 3: simplicidad, eficiencia y flexibilidad, que permiten unas búsquedas rápidas en lecturas a toda la base de datos, así como funciones de agregación efectivas. Por otro lado, la simplicidad también marcará sus principales inconvenientes: al carecer de estructura no es posible lanzar consultas mediante queries, y solo lo constan de una colección, complicado la implementación modelos complejos.

Posibles aplicaciones

  1. Memorias caché de páginas web, donde la URL es la clave y el contenido el valor.
  2. Logs de operaciones, con los timestamp como clave y el contenido como valor.

Principales bases de datos clave-valor

Riak KV (AP)

Base de datos con licencia open source (Apache) y Enterprise, diseñada para el seguimiento de información relacionada con sesiones y usuarios. Permite operaciones de búsqueda de valores concretos, uso de índices secundarios y operaciones map-reduce. Permite la eliminación de datos antiguos de manera automática. Con conectores de spark, apache mesos framework e integración con redis. Partición mediante sharding.

Redis (CP)

Base de datos con licencia open source y procesamiento en memoria. Útil para caché, sesiones de usuario y monitorización de mensajes, aunque posee módulos adicionales para el procesamiento de datos, como búsquedas, índices secundarios, transacciones o machine learning modeling. Partición mediante sharding y sistemas de replicación maestro-esclavo y multi-master. Control de acceso basado en usuario-contraseña.

Bases de datos NoSQL documentales

 

Características generales, ventajas e inconvenientes

Derivan de las bases de datos clave-valor, pero permiten mayor nivel de complejidad a través del uso de metadatos. La unidad de organización de datos es el documento, que se compone de una serie de pares clave-valor cuyo valor puede tomar diferentes formatos. Cada documento consta de un ID único para facilitar métodos de indexación, y a menudo tienen un esquema predefinido, aunque éste será flexible. Dado que existe un esquema preestablecido, los datos se agrupan en colecciones, que usualmente tendrán esquema similar.

Estableciendo un símil con SQL, las colecciones equivaldrán a las tablas, y los documentos a las filas. Generalmente estas bases de datos seguirán dos tipos de estructura: JSON y XML, siendo los JSON el formato más utilizado.

La principal ventaja de estas bases de datos es su organización. Al tener unas estructuras predefinidas, muchos proveedores han implementado lenguajes similares a SQL para la realización de consultas, permitiendo en algunos casos incluso el uso de joins entre colecciones. Además, gracias al carácter estructurado de los documentos y al uso de índices, estas bases de datos responden bien a consultas y operaciones de filtrado y agregación.

Por otro lado, y sobre todo cuando se comparan estas bases de datos con SQL, el uso de un esquema flexible las hace propensas a errores de introducción de datos, estableciendo la necesidad de implementar procedimientos de saneado y limpieza de datos

Posibles aplicaciones

  1. Datos de sensores provenientes de diferentes fabricantes
  2. Fichas de clientes con diferentes características
  3. Catálogos de inventario de productos para una tienda o fábrica

Principales bases de datos NoSQL documentales

MongoDB

Una de las más usadas en el mercado. Open source con almacenamiento de datos en formato BSON (binary JSON). Permite índices secundarios, partición mediante sharding y replicación mediante sistemas maestro-esclavo. Versiones nuevas permiten joins entre colecciones, consultas mediante queries y el uso de 2 frameworks para operar en paralelo: mapreduce y aggregation frameworks.

CouchDB

Open source que usa JSON de forma nativa, aunque permite formatos binarios. Especializada en replicación master-master en diferentes dispositivos y plataformas, tiene variantes para browsers web (pouchDB) y sistemas iOS y Android (couchbase lite). Permite el uso de protocolos HTTP. Óptimo para plataformas que normalmente funcionan off-line gracias a este sistema de replicación. Particionado mediante sharding.

CouchBase (AP)

Derivada de couchDB con memcache integrada, es también una base de datos documental basada en ficheros JSON. Se definen como una ‘engagement database’, donde prima la alta accesibilidad en diferentes tipos de dispositivos y apps. Como con couchDB, ofrece replicaciones master-master, así como particiones mediante sharding.

MarkLogic (CP)

Base de datos multiplataforma basada principalmente en un sistema de ficheros XML y JSON. De pago. Permite transacciones ACID y la implementación de sistemas de seguridad basado en roles a nivel de documentos y subdocumentos. Partición mediante sharding y permite la aplicación de rutinas map-reduce.

Bases de datos NoSQL columnares

Características generales, ventajas e inconvenientes

A nivel conceptual, son el modelo más similar a las bases de datos SQL (junto con las documentales), ya que los datos siguen una estructura de filas y columnas. Sin embargo, a diferencia de las SQL, éstas bases de datos NoSQL agrupan funcionalmente las celdas en columnas, donde cada columna es una tupla de valores (correspondientes a las filas), mientras que las SQL organizan sus datos en filas. Aunque luego se extendiesen a otros formatos de Bases de datos NoSQL, las rutinas map-reduce fueron diseñadas basándose en este tipo de bases de datos, por lo que, si nuestras consultas se basan en este paradigma, esta opción será la más óptima.

Como ventajas, las bases de datos columnares contienen un esquema conceptualmente simple, aunque todavía flexible, que permite el uso de lenguaje SQL para consultas. Su estructura columnar favorece consultas que requieran lecturas completas de la tabla, como extracción y agregación de datos. Consultas que son agilizadas mediante la aplicación de rutinas map-reduce. Además, permiten el uso de joins, siendo más efectivos que SQL (aunque estas bases de datos sigan sin estar optimizadas para su uso).

Como principal inconveniente, resaltar que permiten datos no estructurados, pero las inconsistencias creadas van a ser problemáticas a la hora de realizar operaciones y consultas.  Además, están diseñadas generalmente como bases de datos persistentes que efectúan lecturas sobre toda la bases de datos, por lo que no estarán optimizadas para consultas a tiempo real (aunque pueden ser muy efectivas a la hora de establecer transacciones dada su similitud con SQL).

Posibles aplicaciones

  1. Catálogos de productos con características predefinidas
  2. Datos de sensores homogéneos y con altas frecuencias de muestreo
  3. Aplicaciones de mensajería

 

Principales bases de datos columnares

Cassandra (AP)

Open source bajo licencia Apache. Su principal baza es una escalabilidad robusta y flexible, con una disponibilidad continua y seguridad robusta a nivel de objeto. Permite la aplicación de rutinas map-reduce y es fácil de usar mediante lenguajes SQL-like.

Hbase (CP)

Open source bajo licencia Apache, funciona bajo la infraestructura HDFS de Hadoop. Al igual que Cassandra, su punto fuerte es la escalabilidad, con sistemas de particionamiento mediante shardings y modelos de replicación en servidores regionales. También permiten el uso de rutinas map-reduce.

Últimas noticias