PRESENTACIÓN TEMARIO BROCHURE MATRICULATE CONTÁCTENOS

 

Fechas
Sábado 11 de Octubre del 2014

Duración
8 horas

Horario

9:00 am - 18:00 pm

Inversión

1,000.00 soles

incluido el IGV

Informes

informes@kasperu.com

Instructor

Samuel Oporto Díaz

 


Qué es una Base de Datos NoSQL

 

Las base de datos "not only SQL" es una categoría general de sistemas de gestión de base de datos que difieren de los tradicionales RDBMS (sistema de gestión de bases de datos relacionales) en diferentes modos:

  • No usan el SQL como el principal lenguaje de consultas, tienen su propio sistema de consultas.

  • No es necesario crear esquemas fijos.

  • Los datos no necesariamente se almacenan como tablas.

  • No necesariamente soportan operaciones JOIN

  • No garantizan completamente el ACID (atomicidad, consistencia, aislamiento y durabilidad).

  • Pueden escalar horizontalmente.

Cuándo usar el NoSQL

La gestión de la información en la era del BigData presenta nuevos desafíos que es necesario resolver, entre estos desafíos tenemos el crecimiento exponencial del volumen de los datos, particularmente de los datos no estructurados o semi-estructurados (fuente: portal www.emc.com) que requieren herramientas diferentes a los tradicionales sistemas de base de datos relacionales.

 

 

 

Datos no estructurados y  semi-estructurados.

Son aquellos datos que no se pueden almacenar en estructuras de datos previamente definidas o estructuras relacionales, estos pueden ser a su vez: 

  • Datos No Estructurados

Son aquellos datos que no pueden ser almacenada en estructuras de datos relacionales predefinidas. Estos pueden ser a su vez datos de tipo texto (corresponde a documentos y presentaciones) y no-texto (corresponde a archivos de audio o video).

  • Datos semi-estructurados.

Son aquellos datos que no residen en bases de datos relacionales, pero presentan una organización interna que facilita su tratamiento, tales como documentos XML y datos almacenados en bases de datos NoSQL. Entre ellos tenemos a las bases de datos de grafos.

 

Tratamiento de datos no estructurados.

Qué hacer cuando nos enfrentamos a datos no estructurados, como grafos o documentos: 

  • Crear una plataforma escalable (en infraestructura y procesos). que permita tratar grandes cantidades de datos. Los RDBMS son insuficientes para tratar información no estructurada. Es necesario un esquema de almacenamiento y capacidad de proceso escalable. es recomendable considerar la opción cloud, dado el el coste económico de mantener plataformas escalables. Se recomienda utilizar in-memory analytics para soportar la necesidad de procesamiento.

  • Añadir información/estructura complementaria a los datos no estructurados. Es recomendable añadir algún tipo de estructura a los datos no estructurados que ayude a su tratamiento. Por ejemplo, en una colección grafos de redes sociales es recomendable añadir campos como el idioma, la localización geográfica y la fecha de descarga del grafo. Esta estructura adicional debe ser modelada pensando en su constante evolución.

  • Crear conjuntos reducidos de datos que sean representativos. Dado el volumen ingente de información, es importante trabajar con muestras de datos que sean estadísticamente representativos sobre los datos a analizar. Muchos análisis pueden llevarse a cabo con un grado de exactitud razonable, utilizando conjuntos de datos que son más pequeños en un orden de magnitud que la información en bruto.

  • Desarrollo de algoritmos. Hay diferentes tipos de aproximación hacia la información no estructurada. Por ejemplo, para procesos de text mining, puede utilizarse natural language processing combinado con redes neuronales. Otras técnicas como redes bayesianas permiten descubrir patrones sobre múltiples dimensiones. Son importantes también las técnicas de visualización de datos.

  • Procesos de depuración/limpiado de datos. Dado el ingente volumen de datos, se convierte en crítico la correcta gestión del histórico de datos. Detección de datos no usados o de frecuencia de consulta muy baja con objeto de limpiar información y liberar espacio.  

ACID vs. BASE

Cuando se trabaja con Bases de Datos Relacionales se está familiarizado con las transacciones ACID, que garantizan la consistencia y estabilidad de las operaciones, pero que requieren lockings sofisticados:

  • ACID = Atomicidad, Consistencia, (Isolation) aislamiento y Durabilidad

Las Bases de Datos NoSQL son repositorios de almacenamiento más optimistas, pues siguen el modelo BASE:

  •  Basic availability. El almacén funciona la mayoría del tiempo incluso ante fallos gracias al almacenamiento distribuido y replicado.

  • Soft-sate. Los almacenes no tienen porque ser consistentes ni sus réplicas en todo momento. El programador puede verificar esa consistencia.

  • Eventual consistency. La consistencia que se da eventualmente.

BASE es una alternativa flexible a ACID para aquellos almacenes de datos que no requieren un adherencia estricta a las transacciones.

 

RDBMS vs NoSQL

 

Los Sistema de Gestión de Bases de Datos Relacionales (RDBMS por sus siglas en inglés: Relational Database Management System) tradicionales permiten definir la estructura de un esquema que demanda reglas rígidas y garantizan ACID.

Las aplicaciones web y sistemas de información modernos presentan desafíos muy distintos a los sistemas empresariales tradicionales (como los sistemas bancarios):

  • Datos a escala web

  • Alta frecuencia de lecturas y escrituras

  • Cambios de esquema de datos frecuentes

  • Las aplicaciones sociales (no bancarias) no necesitan el mismo nivel de ACID

En ese contexto aparecen las soluciones NoSQL: Cassandra, MongoDB, Jackrabbit , CouchDB, BigTable, Dynamo o Neo4j.

 

Tipos de Base de Datos NoSQL

Los principales tipos de base de datos no SQL de acuerdo a los criterios de gestión de los datos son los siguientes:

  • Base de Datos Orientados a Documentos.

Son aquellas que gestionan datos semi estructurados, tales como documentos. Estos datos son almacenados en algún formato estándar como puede ser XML, JSON o BSON. Son las bases de datos NoSQL más versátiles, utilizados en gran cantidad de proyectos, incluyendo aquellos que operan sobre bases de datos relacionales.


En esta categoría encontramos:

MongoDB. Es la base de datos NoSQL más conocida. En lugar de guardar los datos en tablas como se hace en las base de datos relacionales, los guarda en estructuras de datos en documentos tipo JSON con un esquema dinámico (llamado formato BSON), haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.

 

CouchDB. Es la base de datos orientada a documentos de Apache. Es un gestor de bases de datos que emplea JSON para almacenar los datos, JavaScript como lenguaje de consulta por medio de MapReduce y HTTP como API. Tiene gran facilidad para hacer replicaciones. No almacena los datos y sus relaciones en tablas. Cada base de datos es una colección de documentos independientes. Cada documento mantiene sus propios datos y su esquema autocontenido.

  • Base de Datos Orientados a Columnas.

    Este tipo de bases de datos están pensadas para realizar consultas y agregaciones sobre grandes cantidades de datos. Funcionan de forma parecida a las bases de datos relacionales, pero almacenando columnas de datos en lugar de registros.
    En esta categoría encontramos:


Cassandra. incluida en esta sección, aunque en realidad sigue un modelo híbrido entre orientada a columnas y clave-valor. Es utilizada por Facebook y Twitter (aunque dejaron de usarla para almacenar tweets).

 


HBase. Escrita en Java y mantenida por el Projecto Hadoop de Apache, se utiliza para procesar grandes cantidades de datos. La utilizan Facebook, Twitter o Yahoo.

  • Base de Datos Orientados a Clave valor.

    Estas son las más sencillas de entender. Simplemente guardan tuplas que contienen una clave y su valor. Cuándo se quiere recuperar un dato, simplemente se busca por su clave y se recupera el valor.
    En esta categoría encontramos:


DynamoDB. Desarrollada por Amazon, es una opción de almacenaje que puedemos usar desde los Amazon Web Services. La utilizan el Washington Post y Scopely.

 


Redis. Desarrollada en C y de código abierto, es utilizada por Craiglist y Stack Overflow.

  • Base de Datos Orientados a Grafos.

    Basadas en la teoría de grafos utilizan nodos y aristas para representar los datos almacenados. Son muy útiles para guardar información en modelos con muchas relaciones, como redes y conexiones sociales.
    En esta categoría encontramos:


Infinite Graph. Escrita en Java y C++ por la compañía Objectivity. Tiene dos modelos de licenciamiento: uno gratuito y otro de pago.

 


Neo4j. Base de datos de código abierto, escrita en Java por la compañía Neo Technology. Utilizada por compañías como HP, Infojobs o Cisco.