Contacta con nosotros.

Bosonit Agile Center

Portales 71, 2º Of. 7,8,9 y 10. LOGROÑO

Isabel la Católica, 6. (Edificio Hiberus). ZARAGOZA

Salvador Granes, 3. MADRID

San Esteban de Etxebarri, 8. BILBAO

Contacta con nosotros.
Back to top

Bosonit

  /  Big Data   /  Tipos de bases de datos NoSQL 2: Clave-valor, documentales y columnares.

Tras el post en el que se realizó la comparación entre las bases de datos NoSQL y SQL , pasamos a explicar en esta publicación los tres primeros tipos de bases de datos NoSQL: clave-valor, documentales y columnares.

1. 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 BBDD, 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 BBDD clave-valor

Riak KV (AP)

http://basho.com/products/riak-kv/ BBDD 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)

https://redis.io/ BBDD con licencia open source y procesamiento en memoria. Útil para cache, 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.

2. Documentales

Características generales, ventajas e inconvenientes

Derivan de las BBDD 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 BBDD seguirán dos tipos de estructura: JSON y XML, siendo los JSON el formato más utilizado.

La principal ventaja de estas BBDD 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 BBDD responden bien a consultas y operaciones de filtrado y agregación.

Por otro lado, y sobre todo cuando se comparan estas BBDD 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 BBDD documentales

MongoDB (CP)

https://www.mongodb.com/ 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 (AP)

http://docs.couchdb.org/ 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)

https://www.couchbase.com/ derivada de couchDB con memcache integrada, es también una BBDD 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)

https://www.marklogic.com/ BBDD 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.

3. Columnares

Características generales, ventajas e inconvenientes

A nivel conceptual, son el modelo más similar a las BBDD SQL (junto con las documentales), ya que los datos siguen una estructura de filas y columnas. Sin embargo, a diferencia de las SQL, éstas 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 noSQL, las rutinas map-reduce fueron diseñadas basándose en este tipo de BBDD, por lo que, si nuestras consultas se basan en este paradigma, esta opción será la más óptima.

Como ventajas, las BBDD 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 BBDD 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 BBDD persistentes que efectúan lecturas sobre toda la BBDD, 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 BBDD columnares

Cassandra (AP)

http://cassandra.apache.org/ 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)

http://hbase.apache.org/ 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.

 

En el siguiente post, analizaremos las Bases de datos NoSQL de tipo grafo, series temporales y repositorios de contenido.