2. Daniel Gomez Jaramillo
▪ Estudiante de Ingeniería de Sistemas en la
Universidad de Cuenca (Ecuador).
▪ Microsoft Student Partner (MSP).
▪ Líder de Microsoft UCuenca.
daniel.gomez@studentpartner.com
@esDanielGomez
3. Parte 1. Bases de datos NoSQL
▪ Situación actual y generalidades.
▪ Tipos y aplicaciones.
Parte 2. Modelos NoSQL con Azure Cosmos DB
• Bases de datos documentales SQL.
• Bases de datos documentales con MongoDB.
• Wide-columna con Cassandra.
• Clave valor con Azure Table.
• Grafos con Gremlin.
Parte 3. Aplicaciones practicas con la API de Azure Cosmos
DB para MongoDB en Node JS.
Agenda
4.
5. Son muchas las aplicaciones web que utilizan algún tipo de
bases de datos para funcionar.
Hasta ahora estábamos acostumbrados a utilizar bases de
datos SQL como son MySQL, Oracle o SQL Server, pero desde
hace ya algún tiempo han aparecido otras que reciben el
nombre de NoSQL (Not only SQL – No sólo SQL) y que han
llegado con la intención de hacer frente a las bases relacionales
utilizadas por la mayoría de los usuarios.
Introducción
6. Se puede decir que la aparición del término NoSQL aparece
con la llegada de la web 2.0.
En ese momento sólo subían contenido a la red aquellas
empresas que tenían un portal, pero con la llegada de
aplicaciones como Facebook, Twitter o Youtube, cualquier
usuario podía subir contenido, provocando así un crecimiento
exponencial de los datos.
Orígenes de las bases de datos NoSQL
7. Qué es lo que está causando ese giro hacia las bases de datos
NoSQL?
Cuatro mega-tendencias interrelacionadas:
❏ Big Users
❏ Internet of Things (IoT)
❏ Big Data,
❏ The Cloud.
Orígenes de las bases de datos NoSQL
8. Qué es lo que está causando ese giro hacia las bases de datos
NoSQL?
BIG USERS
Orígenes de las bases de datos NoSQL
9. Qué es lo que está causando ese giro hacia las bases de datos
NoSQL?
INTERNET DE LAS COSAS (IoT)
Orígenes de las bases de datos NoSQL
14 billones de cosas
Para el 2020,
32 billones de cosas
10. Qué es lo que está causando ese giro hacia las bases de datos NoSQL?
BIG DATA
Orígenes de las bases de datos NoSQL
11. Orígenes de las bases de datos NoSQL
Es en este momento cuando empiezan a aparecer los primeros
problemas de la gestión de toda esa información almacenada en
bases de datos relacionales.
En un principio, para solucionar estos problemas de accesibilidad,
las empresas optaron por utilizar un mayor número de máquinas
pero pronto se dieron cuenta de que esto no solucionaba el
problema, además de ser una solución muy cara.
La otra solución era la creación de sistemas pensados para un uso
específico que con el paso del tiempo han dado lugar a
soluciones robustas, apareciendo así el movimiento NoSQL.
12. No tiene un definición formalmente aceptada
❏ No-RDBMS, No-Relacional
❏ No Solo SQL (NoSQL - Not Only SQL)
Término General para todas las bases de datos que no siguen
los principios de Bases de datos relacionales.
Definición
13. ❏ Se ejecutan en máquinas con pocos recursos.
❏ Pueden manejar gran cantidad de datos.
❏ No genera cuellos de botella.
❏ No utilizan estructuras fijas como tablas para el
almacenamiento de los datos.
❏ No suelen permitir operaciones JOIN.
Características de las bases de datos NoSQL
15. NoSQL no es un sustituto a las bases de datos
relacionales SQL, es solo un movimiento que busca otras
opciones para la manipulación de BD con un rendimiento
extremo.
SQL vs NoSQL
18. Cosmos DB es un servicio de base de datos NoSQL incluido en
Azure.
NoSQL definitivamente significa no solo SQL en el caso de este
servicio de base de datos, porque Cosmos DB proporciona una
API de SQL que nos permite consultar documentos mediante el
uso de SQL en uno de los posibles modelos que admite el
servicio de base de datos.
Cosmos DB es un servicio de base de datos multimodelo y, por
lo tanto, admite diferentes modelos no relacionales.
Azure Cosmos DB
19.
20. Las siguientes son tres características principales que
proporciona Cosmos DB que establecen pilares para admitir
características adicionales:
Partición
Replicación
Gobernanza de recursos
Características de Azure Cosmos DB
21. 1. Clave - Valor
En el tipo Clave - Valor, se utiliza una tabla hash en la que una
clave única apunta a un elemento.
Tipos de almacenamiento NoSQL
22. 2. En columnas
Los datos se almacenan en columnas, en lugar de almacenarse
en filas, (como se hace en la mayoría de los sistemas de gestión
de bases de datos relacionales).
Tipos de almacenamiento NoSQL
23. 3. Documentales
Los almacenes de documentos son similares a los almacenes de
valores clave, porque no tienen un esquema y se basan en un
modelo de valor clave.
Ambos carecen de coherencia en el nivel de base de datos, lo
que hace posible que las aplicaciones proporcionen más
fiabilidad.
Tipos de almacenamiento NoSQL
24. 4. Grafos
En este tipo de bases de datos, la información se representa
como nodos de un grafo y sus relaciones con las aristas del
mismo, de manera que se puede hacer uso de la teoría de
grafos para recorrerla.
Tipos de almacenamiento NoSQL
25. Internamente, Cosmos DB almacena los datos en un formato
llamado Atom-RecordSequence (ARS), que está altamente
optimizado para la partición y la replicación.
Por lo tanto, sin importar el tipo de datos y API de NoSQL, los
datos terminan almacenados en este formato interno.
Como funciona Azure Cosmos DB?
26. Cosmos DB brinda soporte para cinco API diferentes con SDK
para muchos lenguajes de programación y plataformas.
La siguiente tabla resume las cinco API disponibles según los
cuatro modelos de datos:
Azure Cosmos DB y API NoSQL
Tipo NoSQL APIs disponibles
Clave-Valor Table API
Columna Cassandra API
Documental
SQL API
MongoDB API
Grafo Gremlin API
27.
28.
29. Azure Cosmos DB implementa protocolos de conexión de las
bases de datos NoSQL
Al proporcionar una implementación nativa de los protocolos
de conexión directa y eficiente dentro de Cosmos DB, permite
que los SDK, controladores y herramientas existentes de los
clientes de las bases de datos NoSQL interactúen con Cosmos
DB de manera transparente.
La API de Azure Cosmos DB para MongoDB
31. MongoDB (“humongous” que significa enorme) es un sistema
de base de datos NoSQL orientado a documentos, desarrollado
bajo el concepto de código abierto
MongoDB – Definición
33. MongoDB – Formato JSON
En JSON el formato es muy sencillo. Para cada
característica tenemos un par nombre/valor, separados
por el símbolo “:”.
Los valores pueden ser de seis tipos:
• String o cadena
• Number o número
• Boolean o booleano (true o false)
• null
• Array
• Objeto o documento, es decir un objeto JSON puede
contener otro documento JSON, sin límite de
recursividad.
35. MongoDB – Operaciones CRUD
Create operations
Crear o insertar operaciones agrega nuevos documentos a una
colección. Si la colección no existe actualmente, las operaciones
de inserción crearán la colección.
36. MongoDB – Operaciones CRUD
Read operations
Operaciones de lectura recupera documentos de una colección;
es decir, consulta una colección de documentos.
37. MongoDB – Operaciones CRUD
Update operations
Las operaciones de actualización modifican los documentos
existentes en una colección.
38. MongoDB – Operaciones CRUD
Delete operations
Elimina documentos de una colección. MongoDB proporciona
los siguientes métodos para eliminar documentos de una
colección:
39. MongoDB – Selectores de consulta BSON
Nombre Descripción
$eq
Coincide con valores que son iguales a un valor especificado.
$gt Coincide con valores que son mayores que un valor
especificado.
$gte Coincide con valores que son mayores o iguales a un valor
especificado.
$lt Coincide con valores que son menores que un valor
especificado.
$lte Coincide con los valores que son menores o iguales que un
valor especificado.
$ne Coincide con todos los valores que no son iguales a un valor
especificado.
40. MongoDB – Selectores de consulta BSON
Nombre Descripción
$and Une las cláusulas de consulta con un resultado lógico de AND.
Todos los documentos que coinciden con las condiciones de
ambas cláusulas.
$not Invierte el efecto de una expresión de consulta y devuelve
documentos que no coinciden con la expresión de consulta.
$nor Une las cláusulas de consulta con un NOR. Retorno lógico de
todos los documentos que no coinciden con ambas cláusulas.
$or Une las cláusulas de consulta con un OR. Retorno lógico de
todos los documentos que coinciden con las condiciones de
cualquiera de las cláusulas.
41. MongoDB – Selectores de consulta BSON
Nombre Descripción
$exists Coincide con los documentos que tienen el campo
especificado.
$type Selecciona documentos si un campo es del tipo especificado.
De evaluación, geoespaciales, arreglos, bitwise y de proyección:
https://docs.mongodb.com/manual/reference/operator/query/
42. MongoDB – Selectores de consulta BSON
Nombre Descripción
$exists Coincide con los documentos que tienen el campo
especificado.
$type Selecciona documentos si un campo es del tipo especificado.
De evaluación, geoespaciales, arreglos, bitwise y de proyección:
https://docs.mongodb.com/manual/reference/operator/query/
45. Ejercicio
Realizar las siguientes consultas en la colección Persona de la
base de datos dbPersonal:
❏ Mostrar el Nombre, País y Moneda de las personas que
utilizan tarjeta ‘visa’ en China.
❏ Mostrar los nombres y nacionalidades de las personas con
título: ‘Honorable’ de ‘Colombia’ o ‘Venezuela’.
46.
47. Procesamiento de datos en la nube
Map Reduce
MapReduce es un framework
creado por Google, y pensado
para realizar operaciones de
forma paralela sobre grandes
colecciones de datos.
Este framework está compuesto
de dos funciones principales: la
función Map y la función Reduce.
De ahí ese nombre tan original.
49. Procesamiento de datos en la nube
{
_id: 1,
Nombre: ‘Daniel’,
Género: ‘Masculino’,
};
{
_id: 2,
Nombre: ‘Tania’,
Género: ‘Femenino’,
};
{
_id: 3,
Nombre: ‘Jose’,
Género: ‘Masculino’,
};
{
_id: 4,
Nombre: ‘Pedro’,
Género: ‘Masculino’,
};
50. Procesamiento de datos en la nube
Map Reduce – Función Map
CLAVE
Masculino
Femenino
Masculino
Masculino
VALOR
1
1
1
1
51. Procesamiento de datos en la nube
Map Reduce – Función Reduce
CLAVE
Masculino
Femenino
VALOR
3
1
52. Procesamiento de datos en la nube
Map Reduce – en Node JS
var map = function () {
emit(this.Genero, 1);
}
var reduce = function(keys,values)
{
return Array.sum(values);
}
db.Persona.mapReduce ( map, reduce,
{out:‘ColeccionResultado’} );
53. Caso practico
Map Reduce con API Cosmos DB para Mongo DB
De los 1000 documentos aproximadamente de nuestra colección
Persona de la base de datos dbPersonal, se desea calcular una
colección ‘EstadisticasPersona’ para conocer lo siguiente:
❏ El número de personas que tienen género ‘Female’ y ‘Male’ y
que son mayores a 25 años.