A día de hoy existen unos 150 sistemas
de bases de datos NoSQL. Elegir uno
de ellos puede ser muy difícil, ya que ninguno ha obtenido todavía la fama que
sí han conseguido las bases de datos relacionales.
Existen diferentes formas para clasificar las bases de datos NoSQL, pero
nosotros vamos a basarnos en su
orientación al uso: orientadas a documentos, orientadas a columnas, de clave-valor y en grafo.
Orientadas a documentos
Son aquellas que gestionan datos semi estructurados. Es decir
documentos. Estos datos son almacenados en algún formato estándar como puede
ser XML, JSON o BSON. Dentro de las bases de datos NoSQL orientadas a
documentos destaca MongoDB.
MongoDB
MongoDB es un sistema de base de datos multiplataforma orientado a documentos,
de esquema libre. Como ya os expliqué, esto significa que cada entrada o
registro puede tener un esquema de datos diferente, con atributos o “columnas”
que no tienen por qué repetirse de un registro a otro. Está escrito en C++, lo
que le confiere cierta cercanía a los recursos de hardware de la máquina, de
modo que es bastante rápido a la hora de ejecutar sus tareas. Además, está
licenciado como GNUAGPL 3.0,
de modo que se trata de un software de licencia libre. Funciona en sistemas
operativos Windows, Linux, OS X y Solaris.
MongoDB se basa en el principio de
almacenar los datos en una estructura tipo llave-valor; MongoDB por su lado se
enfoca específicamente en que los valores de estas llaves (llamadas colecciones)
son estructuras tipo JSON (llamados documentos), es decir
objetos Javascript, lenguaje sobre el cual se basa esta solución de base de
datos. Esto facilitará su manipulación a muchos que ya conozcan el lenguaje.
MongoDB posee varias estrategias de manejo de datos que la han
posicionado donde se encuentra hoy en día, tales como sus procesos de división
de datos en distintos equipos físicos o también conocido como clusterización,
también el caso similar de documentos muy grandes que superen el límite
estipulado de 16MB se aplica una estrategia llamada GridFS que automáticamente
divide el documento en pedazos y los almacena por separado, al recuperar el
documento el driver se encarga de armar automáticamente el
documento nuevamente.
Usos MongoDB
§
Aplicaciones que almacenan grandes cantidades de datos o datos
complejos.
§
Por ejemplo para aplicaciones con estructuras complejas como
blogs (post, comentarios, rollbacks,etc) o aplicaciones de analítica (Google
analytics).
Características
de MongoDB:
§
Ausencia de transacciones · Esto le
permite a MongoDB ser más rápida y escalable a nivel horizontal.
§
Escalabilidad horizontal En sistemas tradicionales RDBMS, para mejorar
el rendimiento de la base de datos se adquiría una máquina más potente
(escalado vertical). En MongoDB funciona mejor el escalado horizontal
(incrementar número de máquinas)
§
Almacenamiento Orientado a
documentos (BSON) JSON
es más que una gran forma de intercambiar información, es también una
excelente forma de almacenarla. MongoDB almacena todo un registro
en un mismo documento. · No hay necesidad de especificar estructura alguna y
sus documentos pueden cambiarse individualmente. · MongoDB usa BSON
(Binary-JSON),un formato abierto basado en JSON que permite manejar datos
binarios, · Con el uso de BSON MongoDB es muy rápida en la búsqueda,
indexación, almacenamiento y recuperación de la información BSON es fácil y rápidamente transformable en
cualquier tipo de dato nativo de cualquier lenguaje de programación.
§
Soporte a Querys dinámicas · Como
en las bases de datos tradicionales, MongoDB también acepta la ejecución de
queries dinámicas (a diferencia de otras como CouchDB)
§
Indexación de Documentos · Todos
los documentos son automáticamente indexados con una clave llamada _id.
· Esta clave nos asegura que cada documento es único, · MongoDB permite indexar
documentos embebidos (se puede crear un índice en un código postal)
§
Indices Geoespaciales Permite la indexación de la información basado
en la localización. · Permite crear consultas del tipo: “cuantos artículos se
encuentran a cierta distancia de un determinado conjunto de coordenadas”,
§
Analisis de Rendimiento de
Queries MongoDB provee una
herramienta para el análisis de consultas que permite determinar el rendimiento
de nuestras consultas o conocer posibles defectos en su estructura o
simplemente mejorar el tiempo de respuesta de las mismas.
§
Replicación de Datos ·
MongoDB provee mecanismo llamado replicación maestro-esclavo,
con lo que solo una base de datos está activa para escritura en un momento
dado. · Todas las peticiones de escritura se realizan en la base de datos
maestra y esta las pasa a la réplica (esclavo). · Si la bd principal falla la
esclava ocupa su lugar. · MongoDB implementa el concepto de réplica a pares de
modo que cuando falla se determina cuál de las 2 bases de datos
(maestro-esclavo) es la que tomará el control para continuar prestando el
servicio.