domingo, 1 de junio de 2014

Principales Tecnologias de Big Data II

En el anterior artículo mencionábamos, dentro de la tecnologías clave en el BIG DATA, las bases de datos NoSQL. Las bases de datos NoSQL son sistemas de almacenamiento de información que no cumplen con el esquema entidad-relación al que todos nos acostumbramos desde las primeras asignaturas de bases de datos en las carreras de informática. Mientras que las tradicionales bases de datos relacionales basan su funcionamiento en tablas, joins y transacciones ACID, las bases de datos NoSQL no imponen una estructura de datos en forma de tablas y relaciones entre ellas (no imponen un esquema pre-fijado de tablas), en ese sentido son más flexibles, ya que suelen permitir almacenar información en otros formatos como clave-valor (similar a tablas Hash), Mapeo de Columnas, Documentos o Grafos.

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.