Siguiendo con la serie de artículos sobre BBDD NoSQL, hoy vamos a ver los tipos de estás que hay. Para realizar la clasificación nos basaremos, como suelen hacer todas las clasificaciones que podemos encontrar en Internet, en el modo en que las distintas BBDD almacenan la información.
Cabe decir, antes de empezar, que aunque encontraréis listados de clasificaciones muy extensas y con muchos tipos, principalmente hay cuatro tipos. Estos cuatro tipos son los más extendidos y los que más se utilizan a día de hoy. El resto de tipos, parecen más extensiones, pequeñas modificaciones o adaptaciones a entornos concretos que tipos en si. Así que por esta razón solo nos vamos a centrar en describir estos cuatro tipos. Si queréis un listado más completo podéis echarle un ojo por ejemplo a la página “nosql-database” donde veréis hasta once tipos, y una pequeña descripción de BBDD asociadas a cada uno de los tipos.
Clave-valor (Key-Value)
Por hacer una similitud fácil de entender para desarrolladores, seguirían el mismo modo de almacenar información que utiliza un HashMap. Es decir, asocian a una clave a un valor.
Como ejemplo, nosotros hemos visto Redis en las mini demos que hicimos en los primeros artículos de esta serie.
Familia de columnas (Wide Column Store/Column Family)
Este tipo sigue un modelo de familia de columnas, es decir, es un modelo tabular donde cada fila puede tener una configuración diferente de columnas. En este modelo, cada clave está asociada a uno o varios atributos.
Este tipo de BBDD se consideran buenas para realizar tareas de MapReduce, alta disponibilidad y gestión de tamaño.
Como ejemplo, nosotros hemos visto Cassandra en las mini demos que hicimos en los primeros artículos de esta serie.
Documentos (Document Store)
Este tipo sique un modelo de datos que consiste en almacenar colecciones de datos (documentos) que a su vez contienen colecciones de claves-valor.
Este tipo de BBDD se consideran buenas para el desarrollo rápido, implementación de operaciones de CRUD, lo cual las hace útiles para entornos web, y además son amigables de cara al desarrollador porque permiten un modelado natural de los datos, es decir, un modelo de datos muy cercano a la realidad.
Como ejemplo de estas, en nuestras pequeñas demos nosotros hemos visto MongoDB.
Grafos (Graph Databases)
Este tipo de BBDD se basan en las teorías de grafos. El modelo de datos que siguen son diferentes nodos relacionados entre si a través de pares clave-valor.
A pesar de estar incluidos en la categoría de BBDD NoSQL, no cumple exactamente con las propiedades que CAE (Cost-efficiency, High Availability and Elasticity) que aplican en este tipo de BBDD.
De este tipo no hemos visto ninguna en nuestras mini demos, ya que yo personalmente no he utilizado ninguna, y solo las conocía de oídas, pero como ejemplo diremos Neo4J, que es la única que me suena el nombre. Si queréis alguno más, os remito al enlace que he puesto al inicio de este post.
En principio, la serie de post sobre NoSQL estaba pensada para terminar aquí, pero por motivos que ahora no vienen mucho al caso y si tengo tiempo, me estoy planteando hacer uno artículo más sobre recomendaciones de seguridad para entornos NoSQL. Pero este de llegar será sorpresa, ya que doy la serie por terminada aquí. Nos vemos.