bases de datos no relacionales. mongodb · comenzando a implementar en access/mysql planteando...

50
Introducci´ on Panorama actual Cambio de escala NoSQL MongoDB Getting started Bases de datos no relacionales. MongoDB Luis Valencia Cabrera ([email protected]) Research Group on Natural Computing Departamento de Ciencias de la Computaci´ on e Inteligencia Artificial Universidad de Sevilla 09-12-2019, Bases de Datos Luis Valencia Cabrera ([email protected]) Bases de Datos Bases de datos no relacionales

Upload: others

Post on 29-May-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Bases de datos no relacionales. MongoDB

Luis Valencia Cabrera ([email protected])

Research Group on Natural ComputingDepartamento de Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

09-12-2019, Bases de Datos

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 2: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Indice

1 Introduccion al mundo no relacional

2 Panorama actual

3 Cambio de escala

4 NoSQL

5 MongoDB

6 Getting started

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 3: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Indice

1 Introduccion al mundo no relacional

2 Panorama actual

3 Cambio de escala

4 NoSQL

5 MongoDB

6 Getting started

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 4: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Mundo relacional

Hemos trabajado con bases de datos relacionales...

Capturando requisitos funcionalesAbstrayendo a un diseno conceptualTrasladando a diseno logicoNormalizando el disenoComenzando a implementar en Access/MySQLPlanteando consultas sobre la BD con SQL

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 5: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Mundo relacional

Hemos trabajado con bases de datos relacionales...Capturando requisitos funcionales

Abstrayendo a un diseno conceptualTrasladando a diseno logicoNormalizando el disenoComenzando a implementar en Access/MySQLPlanteando consultas sobre la BD con SQL

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 6: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Mundo relacional

Hemos trabajado con bases de datos relacionales...Capturando requisitos funcionalesAbstrayendo a un diseno conceptual

Trasladando a diseno logicoNormalizando el disenoComenzando a implementar en Access/MySQLPlanteando consultas sobre la BD con SQL

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 7: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Mundo relacional

Hemos trabajado con bases de datos relacionales...Capturando requisitos funcionalesAbstrayendo a un diseno conceptualTrasladando a diseno logico

Normalizando el disenoComenzando a implementar en Access/MySQLPlanteando consultas sobre la BD con SQL

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 8: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Mundo relacional

Hemos trabajado con bases de datos relacionales...Capturando requisitos funcionalesAbstrayendo a un diseno conceptualTrasladando a diseno logicoNormalizando el diseno

Comenzando a implementar en Access/MySQLPlanteando consultas sobre la BD con SQL

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 9: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Mundo relacional

Hemos trabajado con bases de datos relacionales...Capturando requisitos funcionalesAbstrayendo a un diseno conceptualTrasladando a diseno logicoNormalizando el disenoComenzando a implementar en Access/MySQL

Planteando consultas sobre la BD con SQL

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 10: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Mundo relacional

Hemos trabajado con bases de datos relacionales...Capturando requisitos funcionalesAbstrayendo a un diseno conceptualTrasladando a diseno logicoNormalizando el disenoComenzando a implementar en Access/MySQLPlanteando consultas sobre la BD con SQL

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 11: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Fortalezas

Podemos resaltar algunas bondades de este enfoque:

Diseno solidoCaptura de estructuras logicas inherentes al mundorepresentadoEstandarizacion del lenguaje de consultasSeparacion de datos y aplicaciones

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 12: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Fortalezas

Podemos resaltar algunas bondades de este enfoque:Diseno solido

Captura de estructuras logicas inherentes al mundorepresentadoEstandarizacion del lenguaje de consultasSeparacion de datos y aplicaciones

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 13: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Fortalezas

Podemos resaltar algunas bondades de este enfoque:Diseno solidoCaptura de estructuras logicas inherentes al mundorepresentado

Estandarizacion del lenguaje de consultasSeparacion de datos y aplicaciones

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 14: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Fortalezas

Podemos resaltar algunas bondades de este enfoque:Diseno solidoCaptura de estructuras logicas inherentes al mundorepresentadoEstandarizacion del lenguaje de consultas

Separacion de datos y aplicaciones

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 15: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Fortalezas

Podemos resaltar algunas bondades de este enfoque:Diseno solidoCaptura de estructuras logicas inherentes al mundorepresentadoEstandarizacion del lenguaje de consultasSeparacion de datos y aplicaciones

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 16: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Otros ambitos¿Es siempre el enfoque adecuado?

Veamos...

Hay necesidades distintas segun el ambito de aplicacionA veces la estructura es demasiado dinamicaPuede resultar imposible dotar de un esquema mas o menosestablePodemos tener volumenes de datos que lo hagan impracticableLas necesidades de consulta y actualizacion concurrentepueden demandar nuevas solucionesLas BD relacionales pueden presentar problemas deescalabilidadHay otras soluciones que escalan bien horizontalmente ypueden ayudarnos a subsanar el problema

Recordemos lo que vimos en el primer tema...

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 17: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Otros ambitos¿Es siempre el enfoque adecuado?

Veamos...Hay necesidades distintas segun el ambito de aplicacion

A veces la estructura es demasiado dinamicaPuede resultar imposible dotar de un esquema mas o menosestablePodemos tener volumenes de datos que lo hagan impracticableLas necesidades de consulta y actualizacion concurrentepueden demandar nuevas solucionesLas BD relacionales pueden presentar problemas deescalabilidadHay otras soluciones que escalan bien horizontalmente ypueden ayudarnos a subsanar el problema

Recordemos lo que vimos en el primer tema...

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 18: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Otros ambitos¿Es siempre el enfoque adecuado?

Veamos...Hay necesidades distintas segun el ambito de aplicacionA veces la estructura es demasiado dinamica

Puede resultar imposible dotar de un esquema mas o menosestablePodemos tener volumenes de datos que lo hagan impracticableLas necesidades de consulta y actualizacion concurrentepueden demandar nuevas solucionesLas BD relacionales pueden presentar problemas deescalabilidadHay otras soluciones que escalan bien horizontalmente ypueden ayudarnos a subsanar el problema

Recordemos lo que vimos en el primer tema...

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 19: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Otros ambitos¿Es siempre el enfoque adecuado?

Veamos...Hay necesidades distintas segun el ambito de aplicacionA veces la estructura es demasiado dinamicaPuede resultar imposible dotar de un esquema mas o menosestable

Podemos tener volumenes de datos que lo hagan impracticableLas necesidades de consulta y actualizacion concurrentepueden demandar nuevas solucionesLas BD relacionales pueden presentar problemas deescalabilidadHay otras soluciones que escalan bien horizontalmente ypueden ayudarnos a subsanar el problema

Recordemos lo que vimos en el primer tema...

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 20: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Otros ambitos¿Es siempre el enfoque adecuado?

Veamos...Hay necesidades distintas segun el ambito de aplicacionA veces la estructura es demasiado dinamicaPuede resultar imposible dotar de un esquema mas o menosestablePodemos tener volumenes de datos que lo hagan impracticable

Las necesidades de consulta y actualizacion concurrentepueden demandar nuevas solucionesLas BD relacionales pueden presentar problemas deescalabilidadHay otras soluciones que escalan bien horizontalmente ypueden ayudarnos a subsanar el problema

Recordemos lo que vimos en el primer tema...

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 21: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Otros ambitos¿Es siempre el enfoque adecuado?

Veamos...Hay necesidades distintas segun el ambito de aplicacionA veces la estructura es demasiado dinamicaPuede resultar imposible dotar de un esquema mas o menosestablePodemos tener volumenes de datos que lo hagan impracticableLas necesidades de consulta y actualizacion concurrentepueden demandar nuevas soluciones

Las BD relacionales pueden presentar problemas deescalabilidadHay otras soluciones que escalan bien horizontalmente ypueden ayudarnos a subsanar el problema

Recordemos lo que vimos en el primer tema...

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 22: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Otros ambitos¿Es siempre el enfoque adecuado?

Veamos...Hay necesidades distintas segun el ambito de aplicacionA veces la estructura es demasiado dinamicaPuede resultar imposible dotar de un esquema mas o menosestablePodemos tener volumenes de datos que lo hagan impracticableLas necesidades de consulta y actualizacion concurrentepueden demandar nuevas solucionesLas BD relacionales pueden presentar problemas deescalabilidad

Hay otras soluciones que escalan bien horizontalmente ypueden ayudarnos a subsanar el problema

Recordemos lo que vimos en el primer tema...

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 23: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Otros ambitos¿Es siempre el enfoque adecuado?

Veamos...Hay necesidades distintas segun el ambito de aplicacionA veces la estructura es demasiado dinamicaPuede resultar imposible dotar de un esquema mas o menosestablePodemos tener volumenes de datos que lo hagan impracticableLas necesidades de consulta y actualizacion concurrentepueden demandar nuevas solucionesLas BD relacionales pueden presentar problemas deescalabilidadHay otras soluciones que escalan bien horizontalmente ypueden ayudarnos a subsanar el problema

Recordemos lo que vimos en el primer tema...Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 24: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Indice

1 Introduccion al mundo no relacional

2 Panorama actual

3 Cambio de escala

4 NoSQL

5 MongoDB

6 Getting started

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 25: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Nuevos retos

El mundo en el que vivimos se encuentra en constanteevolucion, formamos parte de un super organismo sujeto acambio. Nuestro entorno cambia dıa a dıa, y mas en elaspecto tecnologico.Google, Wikipedia, redes sociales, Twitter, etc. han implicadoun nuevo cambio de escala en el empleo de las TIC, y un retoen cuanto a la actualizacion concurrente y disponibilidad deenormes conjuntos de informacion en red.Surge el mundo NoSQL (Not Only SQL)Ademas, el Big Data lleva el tamano de los volumenes dedatos a otra dimension.

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 26: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

¿Estado actual?

1

1https://scalegrid.io/blog/2019-database-trends-sql-vs-nosql-top-databases-single-vs-multiple-database-use/

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 27: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Un poco de Historia¿Estado actual?

2

2https://scalegrid.io/blog/2019-database-trends-sql-vs-nosql-top-databases-single-vs-multiple-database-use/

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 28: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Un poco de Historia¿Estado actual?

3

3https://www.explore-group.com/blog/the-most-popular-databases-2019/bp46/

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 29: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Un poco de Historia¿Estado actual?

4

4https://db-engines.com/en/rankingLuis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 30: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Indice

1 Introduccion al mundo no relacional

2 Panorama actual

3 Cambio de escala

4 NoSQL

5 MongoDB

6 Getting started

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 31: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Very Large Databases (VLDB)

DefinicionLas siglas VLDB (Very Large Databases) denotan a bases de datosque contienen tablas cuyo numero de tuplas resultaextremadamente alto.No se puede hablar de cifras concretas, esto va cambiando con el tiempo,evolucionando con la capacidad de almacenamiento de equipospersonales, servidores, aplicaciones, etc.Por hacernos una idea, se puedeentender como VLDB una base de datos de cientos de terabytes, concientos de miles de millones de filas.Aparece incluso el concepto de XLDB (Extremely Large Databases).

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 32: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Big Data

Los terminos anteriores han ido dejando paso a lo largo del ultimolustro a la denominacion de Big Data.

DefinicionEntendemos por Big Data a conjuntos de informacion enormes, quesuperan con mucho la capacidad del software de gestion de basesde datos convencional para procesar datos en tiempo razonable.

Los retos con este tipo de tecnologıas se centran en la captura,almacenamiento, busqueda, comparticion, analisis y visualizacionde los datos.

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 33: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Big Data - 4 V’s

En el marco de Big Data se viene imponiendo la terminologıa delas 4 V?s para resumir las caracterısticas fundamentales:

4 V’sVolume Grandes volumenes de datos (petabytes,

exabytes, etc.)Variety No limitado a informacion relacional,

puede incluir datos no estructuradosVelocity Los datos se deben procesar y analizar

rapidamenteVeracity Veracidad, adhesion a la verdad, precision.

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 34: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Big Data - 7 V’s

7 V’sVolume Grandes volumenes de datos (petabytes, exabytes, etc.)Variety No limitado a informacion relacional, puede incluir datos no

estructuradosVelocity Los datos se deben procesar y analizar rapidamenteVeracity Veracidad, adhesion a la verdad, precision.Variability Datos cuyo significado cambia constantementeVisualisation Presentar los datos de forma comprensibleValue Extraer informacion para la toma de decisiones

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 35: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Indice

1 Introduccion al mundo no relacional2 Panorama actual3 Cambio de escala4 NoSQL5 MongoDB6 Getting started

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 36: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Big Data y NoSQL

Enormes volumenes de datos, y condiciones impuestas por las 7V’s (disponibilidad, frecuencia de actualizacion, etc.) →n retodistinto a generaciones anteriores.BD relacionales proporcionan potencia y robustez, funcionalidad yestandarizacion, pero necesitamos nuevas soluciones.Cambio de enfoque: mientras que en BD relacionales prima laatomicidad y consistencia de datos, en NoSQL se apuesta por laescalabilidad y disponibilidad.El modelo relacional implica muchas interrelaciones entreentidades, dificultando distribucion entre multiples nodos servidores→ barrera para la escalabilidad.La necesidad de realizar joins sobre tablas con miles de millonesde registros → perdida de eficiencia.

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 37: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

NoSQL - TiposClave-valor Forma mas tıpica, como HashMap con cada elemento identificado por

una clave unica. Muy eficientes para lecturas y escrituras, y escalanfacilmente particionando los valores segun su clave (e.g., clave entre 1 y1000 a un servidor, 1001 a 2000 a otro, etc.) Ejemplos: Riak, Redis,Voldemort, DynamoDB de Amazon.

Documentos Almacenan informacion como un documento (similar a JSON o XML) ycon una clave unica. El fichero generado puede ser entendido, y elservidor puede hacer operaciones con ellos. Varias implementacionespermiten consultas muy avanzadas, y establecer relaciones sin joins.Ejemplos: MongoDB, CouchDB.

Columnas Guardan los valores en columnas en lugar de filas. Ganamos muchavelocidad en lecturas (al recuperar columnas concretas en lugar de todala tabla), pero ineficiente para realizar escrituras. Se usa en aplicacionescon pocas escrituras en relacion a las lecturas. Por ejemplo, Cassandrade Facebook, BigTable de Google, SimpleDB de Amazon, HBase.

Grafos Almacenan informacion como grafos; las relaciones entre los nodos sonlo mas importante. Utiles para representar informacion de redes sociales.Mas eficiente navegar entre estas relaciones, que pueden tener atributos,que en modelo relacional. Aprovechables si la informacion a modo dered. Ejemplo: Neo4j .

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 38: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Indice

1 Introduccion al mundo no relacional

2 Panorama actual

3 Cambio de escala

4 NoSQL

5 MongoDB

6 Getting started

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 39: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

MongoDB

SGBD multiplataforma NoSQL orientado a documentos, deesquema libre (codigo abierto).Cada registro se denomina documento.Los documentos se pueden agrupar en colecciones (como lastablas en una BD relacional, pero almacenando documentosmuy diferentes, sin esquema fijo).Se pueden crear ındices para atributos, manteniendoestructura interna eficiente para el acceso a los mismos.Destaca por su velocidad y su rico pero sencillo sistema deconsulta de los contenidos de la base de datos.Buen equilibrio entre rendimiento y funcionalidad

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 40: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Formato de los datos

Los distintos documentos se almacenan en formato BSON,o Binary JSONVersion modificada y enriquecida de JSON que permitebusquedas rapidas de datos.Guarda de forma explıcita longitudes de campos, ındices dearrays, y otra informacion util para el escaneo de datos →ocupa mas espacio que JSON.Conviene aprovechar el barato almacenamiento paraincrementar en velocidad de localizacion de informaciondentro de un documento.

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 41: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

JSON

El formato JSON esta muy ampliamente extendido paraintercambio de informacion a traves de web.{

"name": "Alderaan","rotation_period": 24,"diameter": 12500,"climate": "temperate","terrain": "grasslands, mountains","population": 2000000000,"residents": [

"https://swapi.co/api/people/5/","https://swapi.co/api/people/68/"

],"films": [

"https://swapi.co/api/films/6/","https://swapi.co/api/films/1/"

],"created": "2014-12-10T11:35:48.479000Z","edited": "2014-12-20T20:58:18.420000Z","url": "https://swapi.co/api/planets/2/"

}

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 42: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Tipos de valores en JSON

Lo anterior es un JSON Object. Pero no todo valor JSON es un objeto.Veamos los tipos de valores en JSON5:

JSON Object, caracterizado por sus llaves externas y las entradas paracada dato, separadas por comas. Estas entradas tienen una serie de clavescuyos valores pueden ser a su vez de cualquier tipo JSONJSON Array, conteniendo una serie de valores JSON del mismo tipoCadenas (String)Valores numericos (Number)Valores logicos (Bool) → true o falseValor nulo (Null) → null

Puede encontrar todo tipo de ejemplos en Internet, tanto de archivos json6

como de llamadas a API78 que devuelven los datos en este formato.5https://www.json.org/6http://json-schema.org/learn/miscellaneous-examples.html7https://jsonapi.org/examples/8https://github.com/endpoints/endpoints-example

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 43: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Descarga e instalacion

MongoDB es multiplataforma, luego la instalacion dependerade las caracterısticas del S.O. destino.Ademas, hay versiones de 32 y 64 bits, y la version actual deMongoDB community edition es la 4.2.1.Podemos descargarla en este enlace.Existen tambien versiones de pago (Enterprise) y en la nube(Atlas)

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 44: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Primeros pasos con servidor y cliente

El servidor de base de datos de MongoDB (contiene el SGDB)se lanza como un servicio, o bien mediante el programaejecutable mongod.Por ejemplo, en Windows vamos a la lınea de comandos(sımbolo del sistema), navegamos hasta la carpeta bin dentrode la carpeta mongodb, y tecleamos mongod, lanzando ası elservidor.El proceso para lanzar el cliente es muy similar. Abrimos otralınea de comandos, sin cerrar la del servidor, hacemos lomismo que antes, y en el ultimo paso lanzamos mongo.En ese momento estamos listos para lanzar ordenes contra labase de datos.

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 45: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Arrancando con la shell

Para ver las bases de datos disponibles en nuestro servidormongod, tecleamos show dbs.Mediante db se nos devuelve la bd a la que estamosconectados.Podemos seleccionar una escribiendo: use mydb, de formaque si no existe la base de datos mydb, esta sera creadaautomaticamente. No es necesario una declaracion explıcita decreacion de la BD.Se elimina una BD mediante db.dropDatabase().Si necesitamos acudir a la ayuda del sistema para consultaralguna funcionalidad podemos hacerlo mediante help, o a laayuda de una determinada funcion mediantenombrefuncion.help().

Consultar la referencia del lenguaje para mas detalle.Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 46: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Indice

1 Introduccion al mundo no relacional

2 Panorama actual

3 Cambio de escala

4 NoSQL

5 MongoDB

6 Getting started

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 47: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Colecciones

Una coleccion en MongoDB serıa el equivalente a una tabla enmodelo relacional.Podemos ver las existentes mediante show collections

Para crear una coleccion, no es necesario definir explıcitamente elnombre de la coleccion y su estructura o esquema; se generara yactualizara automaticamente conforme vayamos insertandodocumentos.Podemos anadir mediante db.cosas.insert({v : 27}).Tambien podrıamos hacer asignar datos a una variable (medianteJavascript), y posteriormente insertarla. Por ejemplo:

j = { name : "mongo" }k = { x : 3, n : 5 }db.cosas.insert( j )db.cosas.insert( k )

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 48: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Consultas

Para realizar una consulta y poder ası ver los documentosinsertados, hacemos: db.cosas.find(), que devolvera todos losdocumentos de la coleccion cosas.Lo anterior devolvera los 3 registros introducidos, sin ningun criteriode filtro establecido, de forma similar a la siguiente:{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "v" : 27 }{ "_id" : ObjectId("4c2209f9f3924d31102bd84b"), "name" : "mongo" }{ "_id" : ObjectId("4c2209fef3924d31102bd84c"), "x" : 3 , "n" : 5 }

Tambien podrıamos consultar documentos por algun criterio, comopor ejemplo haciendo: db.cosas.find( { name : "mongo"} ),que devolvera el documento cuyo name sea igual a “mongo”.Para devolver un unico documento: db.cosas.findOne(). Y paralimitar el numero: db.cosas.find().limit(3).

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 49: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Bucles e iteradores

Podemos escribir bucles de tipo for o while desde el cliente deMongoDB. Por ejemplo, para anadir una serie de documentos en lacoleccion cosas:

for (var i = 1; i <= 20; i++) db.cosas.insert( { x : 4 , j : i } )

Tambien podemos declarar un cursor en una variable, y recorrelocon un iterador:

var c = db.cosas.find()while ( c.hasNext() ) printjson( c.next() )

Esto mostrara un numero maximo de documentos, por defecto 20,si bien ese lımite se puede modificar; una vez mostrados losprimeros podremos escribir it para ver mas documentos.Tambien podemos acceder a una posicion del array de resultados alque hace referencia la variable:

var c = db.cosas.find()printjson( c [ 4 ] )

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales

Page 50: Bases de datos no relacionales. MongoDB · Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera(lvalencia@us.es) Bases de Datos

Introduccion Panorama actual Cambio de escala NoSQL MongoDB Getting started

Proximos pasos

Esta presentacion proporciona unicamente una introduccion aNoSQL y MongoDB.Encontraremos mucho mas material en este curso completoPrestaremos especial atencion a tres aspectos:

• Uso basico del shell• Importacion de datos JSON a MongoDB• Insercion de datos mediante insert.• Consulta de documentos almacenados mediante find.

Luis Valencia Cabrera ([email protected]) Bases de DatosBases de datos no relacionales