SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Bases de datos no relacionales. MongoDB
Luis Valencia Cabrera (lvalencia@us.es)
Research Group on Natural Computing
Departamento de Ciencias de la Computación e Inteligencia Artificial
Universidad de Sevilla
09-12-2019, Bases de Datos
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Trasladando a diseño lógico
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Trasladando a diseño lógico
Normalizando el diseño
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Trasladando a diseño lógico
Normalizando el diseño
Comenzando a implementar en Access/MySQL
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Trasladando a diseño lógico
Normalizando el diseño
Comenzando a implementar en Access/MySQL
Planteando consultas sobre la BD con SQL
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Diseño sólido
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Diseño sólido
Captura de estructuras lógicas inherentes al mundo
representado
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Diseño sólido
Captura de estructuras lógicas inherentes al mundo
representado
Estandarización del lenguaje de consultas
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Diseño sólido
Captura de estructuras lógicas inherentes al mundo
representado
Estandarización del lenguaje de consultas
Separación de datos y aplicaciones
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Podemos tener volúmenes de datos que lo hagan impracticable
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Podemos tener volúmenes de datos que lo hagan impracticable
Las necesidades de consulta y actualización concurrente
pueden demandar nuevas soluciones
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Podemos tener volúmenes de datos que lo hagan impracticable
Las necesidades de consulta y actualización concurrente
pueden demandar nuevas soluciones
Las BD relacionales pueden presentar problemas de
escalabilidad
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Podemos tener volúmenes de datos que lo hagan impracticable
Las necesidades de consulta y actualización concurrente
pueden demandar nuevas soluciones
Las BD relacionales pueden presentar problemas de
escalabilidad
Hay otras soluciones que escalan bien horizontalmente y
pueden ayudarnos a subsanar el problema
Recordemos lo que vimos en el primer tema...
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Nuevos retos
El mundo en el que vivimos se encuentra en constante
evolución, formamos parte de un súper organismo sujeto a
cambio. Nuestro entorno cambia dı́a a dı́a, y más en el
aspecto tecnológico.
Google, Wikipedia, redes sociales, Twitter, etc. han implicado
un nuevo cambio de escala en el empleo de las TIC, y un reto
en cuanto a la actualización concurrente y disponibilidad de
enormes conjuntos de información en red.
Surge el mundo NoSQL (Not Only SQL)
Además, el Big Data lleva el tamaño de los volúmenes de
datos a otra dimensión.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
¿Estado actual?
1
1
https://scalegrid.io/blog/2019-database-trends-sql-vs-nosql-top-databases-
single-vs-multiple-database-use/
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Un poco de Historia
¿Estado actual?
2
2
https://scalegrid.io/blog/2019-database-trends-sql-vs-nosql-top-databases-
single-vs-multiple-database-use/
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Un poco de Historia
¿Estado actual?
3
3
https://www.explore-group.com/blog/the-most-popular-databases-
2019/bp46/
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Un poco de Historia
¿Estado actual?
4
4
https://db-engines.com/en/ranking
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Very Large Databases (VLDB)
Definición
Las siglas VLDB (Very Large Databases) denotan a bases de datos
que contienen tablas cuyo número de tuplas resulta
extremadamente alto.
No se puede hablar de cifras concretas, esto va cambiando con el tiempo,
evolucionando con la capacidad de almacenamiento de equipos
personales, servidores, aplicaciones, etc.Por hacernos una idea, se puede
entender como VLDB una base de datos de cientos de terabytes, con
cientos de miles de millones de filas.
Aparece incluso el concepto de XLDB (Extremely Large Databases).
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Big Data
Los términos anteriores han ido dejando paso a lo largo del último
lustro a la denominación de Big Data.
Definición
Entendemos por Big Data a conjuntos de información enormes, que
superan con mucho la capacidad del software de gestión de bases
de datos convencional para procesar datos en tiempo razonable.
Los retos con este tipo de tecnologı́as se centran en la captura,
almacenamiento, búsqueda, compartición, análisis y visualización
de los datos.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción 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 de
las 4 V?s para resumir las caracterı́sticas fundamentales:
4 V’s
Volume Grandes volúmenes de datos (petabytes,
exabytes, etc.)
Variety No limitado a información relacional,
puede incluir datos no estructurados
Velocity Los datos se deben procesar y analizar
rápidamente
Veracity Veracidad, adhesión a la verdad, precisión.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Big Data - 7 V’s
7 V’s
Volume Grandes volúmenes de datos (petabytes, exabytes, etc.)
Variety No limitado a información relacional, puede incluir datos no
estructurados
Velocity Los datos se deben procesar y analizar rápidamente
Veracity Veracidad, adhesión a la verdad, precisión.
Variability Datos cuyo significado cambia constantemente
Visualisation Presentar los datos de forma comprensible
Value Extraer información para la toma de decisiones
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Big Data y NoSQL
Enormes volúmenes de datos, y condiciones impuestas por las 7
V’s (disponibilidad, frecuencia de actualización, etc.) →n reto
distinto a generaciones anteriores.
BD relacionales proporcionan potencia y robustez, funcionalidad y
estandarización, pero necesitamos nuevas soluciones.
Cambio de enfoque: mientras que en BD relacionales prima la
atomicidad y consistencia de datos, en NoSQL se apuesta por la
escalabilidad y disponibilidad.
El modelo relacional implica muchas interrelaciones entre
entidades, dificultando distribución entre múltiples nodos servidores
→ barrera para la escalabilidad.
La necesidad de realizar joins sobre tablas con miles de millones
de registros → pérdida de eficiencia.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
NoSQL - Tipos
Clave-valor Forma mas tı́pica, como HashMap con cada elemento identificado por
una clave única. Muy eficientes para lecturas y escrituras, y escalan
fácilmente particionando los valores según su clave (e.g., clave entre 1 y
1000 a un servidor, 1001 a 2000 a otro, etc.) Ejemplos: Riak, Redis,
Voldemort, DynamoDB de Amazon.
Documentos Almacenan información como un documento (similar a JSON o XML) y
con una clave única. El fichero generado puede ser entendido, y el
servidor puede hacer operaciones con ellos. Varias implementaciones
permiten consultas muy avanzadas, y establecer relaciones sin joins.
Ejemplos: MongoDB, CouchDB.
Columnas Guardan los valores en columnas en lugar de filas. Ganamos mucha
velocidad en lecturas (al recuperar columnas concretas en lugar de toda
la tabla), pero ineficiente para realizar escrituras. Se usa en aplicaciones
con pocas escrituras en relación a las lecturas. Por ejemplo, Cassandra
de Facebook, BigTable de Google, SimpleDB de Amazon, HBase.
Grafos Almacenan información como grafos; las relaciones entre los nodos son
lo más importante. Útiles para representar información de redes sociales.
Más eficiente navegar entre estas relaciones, que pueden tener atributos,
que en modelo relacional. Aprovechables si la información a modo de
red. Ejemplo: Neo4j.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
MongoDB
SGBD multiplataforma NoSQL orientado a documentos, de
esquema libre (código abierto).
Cada registro se denomina documento.
Los documentos se pueden agrupar en colecciones (como las
tablas en una BD relacional, pero almacenando documentos
muy diferentes, sin esquema fijo).
Se pueden crear ı́ndices para atributos, manteniendo
estructura interna eficiente para el acceso a los mismos.
Destaca por su velocidad y su rico pero sencillo sistema de
consulta de los contenidos de la base de datos.
Buen equilibrio entre rendimiento y funcionalidad
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Formato de los datos
Los distintos documentos se almacenan en formato BSON,
o Binary JSON
Versión modificada y enriquecida de JSON que permite
búsquedas rápidas de datos.
Guarda de forma explı́cita longitudes de campos, ı́ndices de
arrays, y otra información útil para el escaneo de datos →
ocupa más espacio que JSON.
Conviene aprovechar el barato almacenamiento para
incrementar en velocidad de localización de información
dentro de un documento.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
JSON
El formato JSON está muy ampliamente extendido para
intercambio de información a través 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 (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción 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 para
cada dato, separadas por comas. Estas entradas tienen una serie de claves
cuyos valores pueden ser a su vez de cualquier tipo JSON
JSON Array, conteniendo una serie de valores JSON del mismo tipo
Cadenas (String)
Valores numéricos (Number)
Valores lógicos (Bool) → true o false
Valor 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.
5
https://www.json.org/
6
http://json-schema.org/learn/miscellaneous-examples.html
7
https://jsonapi.org/examples/
8
https://github.com/endpoints/endpoints-example
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Descarga e instalación
MongoDB es multiplataforma, luego la instalación dependerá
de las caracterı́sticas del S.O. destino.
Además, hay versiones de 32 y 64 bits, y la versión actual de
MongoDB community edition es la 4.2.1.
Podemos descargarla en este enlace.
Existen también versiones de pago (Enterprise) y en la nube
(Atlas)
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción 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 programa
ejecutable mongod.
Por ejemplo, en Windows vamos a la lı́nea de comandos
(sı́mbolo del sistema), navegamos hasta la carpeta bin dentro
de la carpeta mongodb, y tecleamos mongod, lanzando ası́ el
servidor.
El proceso para lanzar el cliente es muy similar. Abrimos otra
lı́nea de comandos, sin cerrar la del servidor, hacemos lo
mismo que antes, y en el último paso lanzamos mongo.
En ese momento estamos listos para lanzar órdenes contra la
base de datos.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Arrancando con la shell
Para ver las bases de datos disponibles en nuestro servidor
mongod, tecleamos show dbs.
Mediante db se nos devuelve la bd a la que estamos
conectados.
Podemos seleccionar una escribiendo: use mydb, de forma
que si no existe la base de datos mydb, ésta será creada
automáticamente. No es necesario una declaración explı́cita de
creación de la BD.
Se elimina una BD mediante db.dropDatabase().
Si necesitamos acudir a la ayuda del sistema para consultar
alguna funcionalidad podemos hacerlo mediante help, o a la
ayuda de una determinada función mediante
nombrefuncion.help().
Consultar la referencia del lenguaje para más detalle.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Colecciones
Una colección en MongoDB serı́a el equivalente a una tabla en
modelo relacional.
Podemos ver las existentes mediante show collections
Para crear una colección, no es necesario definir explı́citamente el
nombre de la colección y su estructura o esquema; se generará y
actualizará automáticamente conforme vayamos insertando
documentos.
Podemos añadir mediante db.cosas.insert({v : 27}).
También podrı́amos hacer asignar datos a una variable (mediante
Javascript), y posteriormente insertarla. Por ejemplo:
j = { name : "mongo" }
k = { x : 3, n : 5 }
db.cosas.insert( j )
db.cosas.insert( k )
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Consultas
Para realizar una consulta y poder ası́ ver los documentos
insertados, hacemos: db.cosas.find(), que devolverá todos los
documentos de la colección cosas.
Lo anterior devolverá los 3 registros introducidos, sin ningún criterio
de 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 }
También podrı́amos consultar documentos por algún criterio, como
por ejemplo haciendo: db.cosas.find( { name : "mongo"} ),
que devolverá el documento cuyo name sea igual a “mongo”.
Para devolver un único documento: db.cosas.findOne(). Y para
limitar el número: db.cosas.find().limit(3).
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Bucles e iteradores
Podemos escribir bucles de tipo for o while desde el cliente de
MongoDB. Por ejemplo, para añadir una serie de documentos en la
colección cosas:
for (var i = 1; i <= 20; i++) db.cosas.insert( { x : 4 , j : i } )
También podemos declarar un cursor en una variable, y recorrelo
con un iterador:
var c = db.cosas.find()
while ( c.hasNext() ) printjson( c.next() )
Esto mostrará un número máximo de documentos, por defecto 20,
si bien ese lı́mite se puede modificar; una vez mostrados los
primeros podremos escribir it para ver más documentos.
También podemos acceder a una posición del array de resultados al
que hace referencia la variable:
var c = db.cosas.find()
printjson( c [ 4 ] )
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Próximos pasos
Esta presentación proporciona únicamente una introducción a
NoSQL y MongoDB.
Encontraremos mucho más material en este curso completo
Prestaremos especial atención a tres aspectos:
• Uso básico del shell
• Importación de datos JSON a MongoDB
• Inserción de datos mediante insert.
• Consulta de documentos almacenados mediante find.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales

Más contenido relacionado

Similar a BD-Tema-7.pdf

Curso mysql modificado
Curso mysql modificadoCurso mysql modificado
Curso mysql modificado
Yusef Yamel
 

Similar a BD-Tema-7.pdf (20)

Curso mysql modificado
Curso mysql modificadoCurso mysql modificado
Curso mysql modificado
 
Bases de Datos No Relacionales
Bases de Datos No RelacionalesBases de Datos No Relacionales
Bases de Datos No Relacionales
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
NoSql introducción -Innova4j
NoSql introducción -Innova4jNoSql introducción -Innova4j
NoSql introducción -Innova4j
 
Semana 01.pdf
Semana 01.pdfSemana 01.pdf
Semana 01.pdf
 
Cursos Big Data Open Source
Cursos Big Data Open SourceCursos Big Data Open Source
Cursos Big Data Open Source
 
Presentación
PresentaciónPresentación
Presentación
 
Gestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBaseGestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBase
 
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
 
Datos.bne.es. Pensando en los datos. Daniel Vila Suero
Datos.bne.es. Pensando en los datos. Daniel Vila SueroDatos.bne.es. Pensando en los datos. Daniel Vila Suero
Datos.bne.es. Pensando en los datos. Daniel Vila Suero
 
Base de datos
Base de datosBase de datos
Base de datos
 
Act4 base datos_reyes_rosalba
Act4 base datos_reyes_rosalbaAct4 base datos_reyes_rosalba
Act4 base datos_reyes_rosalba
 
Características de las 5 Base de Datos más importantes
Características de las 5 Base de Datos más importantesCaracterísticas de las 5 Base de Datos más importantes
Características de las 5 Base de Datos más importantes
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Principales bases de datos existentes
Principales bases de datos existentesPrincipales bases de datos existentes
Principales bases de datos existentes
 
Act4 bd moreno_joel
Act4 bd moreno_joelAct4 bd moreno_joel
Act4 bd moreno_joel
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Luis trejo power point
Luis trejo power pointLuis trejo power point
Luis trejo power point
 
Bases datos
Bases datosBases datos
Bases datos
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQL
 

BD-Tema-7.pdf

  • 1. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Bases de datos no relacionales. MongoDB Luis Valencia Cabrera (lvalencia@us.es) Research Group on Natural Computing Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla 09-12-2019, Bases de Datos Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 2. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Índice 1 Introducción al mundo no relacional 2 Panorama actual 3 Cambio de escala 4 NoSQL 5 MongoDB 6 Getting started Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 3. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Índice 1 Introducción al mundo no relacional 2 Panorama actual 3 Cambio de escala 4 NoSQL 5 MongoDB 6 Getting started Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 4. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Mundo relacional Hemos trabajado con bases de datos relacionales... Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 5. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Mundo relacional Hemos trabajado con bases de datos relacionales... Capturando requisitos funcionales Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 6. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Mundo relacional Hemos trabajado con bases de datos relacionales... Capturando requisitos funcionales Abstrayendo a un diseño conceptual Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 7. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Mundo relacional Hemos trabajado con bases de datos relacionales... Capturando requisitos funcionales Abstrayendo a un diseño conceptual Trasladando a diseño lógico Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 8. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Mundo relacional Hemos trabajado con bases de datos relacionales... Capturando requisitos funcionales Abstrayendo a un diseño conceptual Trasladando a diseño lógico Normalizando el diseño Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 9. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Mundo relacional Hemos trabajado con bases de datos relacionales... Capturando requisitos funcionales Abstrayendo a un diseño conceptual Trasladando a diseño lógico Normalizando el diseño Comenzando a implementar en Access/MySQL Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 10. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Mundo relacional Hemos trabajado con bases de datos relacionales... Capturando requisitos funcionales Abstrayendo a un diseño conceptual Trasladando a diseño lógico Normalizando el diseño Comenzando a implementar en Access/MySQL Planteando consultas sobre la BD con SQL Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 11. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Fortalezas Podemos resaltar algunas bondades de este enfoque: Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 12. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Fortalezas Podemos resaltar algunas bondades de este enfoque: Diseño sólido Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 13. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Fortalezas Podemos resaltar algunas bondades de este enfoque: Diseño sólido Captura de estructuras lógicas inherentes al mundo representado Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 14. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Fortalezas Podemos resaltar algunas bondades de este enfoque: Diseño sólido Captura de estructuras lógicas inherentes al mundo representado Estandarización del lenguaje de consultas Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 15. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Fortalezas Podemos resaltar algunas bondades de este enfoque: Diseño sólido Captura de estructuras lógicas inherentes al mundo representado Estandarización del lenguaje de consultas Separación de datos y aplicaciones Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 16. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Otros ámbitos ¿Es siempre el enfoque adecuado? Veamos... Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 17. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Otros ámbitos ¿Es siempre el enfoque adecuado? Veamos... Hay necesidades distintas según el ámbito de aplicación Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 18. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Otros ámbitos ¿Es siempre el enfoque adecuado? Veamos... Hay necesidades distintas según el ámbito de aplicación A veces la estructura es demasiado dinámica Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 19. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Otros ámbitos ¿Es siempre el enfoque adecuado? Veamos... Hay necesidades distintas según el ámbito de aplicación A veces la estructura es demasiado dinámica Puede resultar imposible dotar de un esquema más o menos estable Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 20. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Otros ámbitos ¿Es siempre el enfoque adecuado? Veamos... Hay necesidades distintas según el ámbito de aplicación A veces la estructura es demasiado dinámica Puede resultar imposible dotar de un esquema más o menos estable Podemos tener volúmenes de datos que lo hagan impracticable Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 21. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Otros ámbitos ¿Es siempre el enfoque adecuado? Veamos... Hay necesidades distintas según el ámbito de aplicación A veces la estructura es demasiado dinámica Puede resultar imposible dotar de un esquema más o menos estable Podemos tener volúmenes de datos que lo hagan impracticable Las necesidades de consulta y actualización concurrente pueden demandar nuevas soluciones Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 22. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Otros ámbitos ¿Es siempre el enfoque adecuado? Veamos... Hay necesidades distintas según el ámbito de aplicación A veces la estructura es demasiado dinámica Puede resultar imposible dotar de un esquema más o menos estable Podemos tener volúmenes de datos que lo hagan impracticable Las necesidades de consulta y actualización concurrente pueden demandar nuevas soluciones Las BD relacionales pueden presentar problemas de escalabilidad Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 23. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Otros ámbitos ¿Es siempre el enfoque adecuado? Veamos... Hay necesidades distintas según el ámbito de aplicación A veces la estructura es demasiado dinámica Puede resultar imposible dotar de un esquema más o menos estable Podemos tener volúmenes de datos que lo hagan impracticable Las necesidades de consulta y actualización concurrente pueden demandar nuevas soluciones Las BD relacionales pueden presentar problemas de escalabilidad Hay otras soluciones que escalan bien horizontalmente y pueden ayudarnos a subsanar el problema Recordemos lo que vimos en el primer tema... Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 24. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Índice 1 Introducción al mundo no relacional 2 Panorama actual 3 Cambio de escala 4 NoSQL 5 MongoDB 6 Getting started Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 25. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Nuevos retos El mundo en el que vivimos se encuentra en constante evolución, formamos parte de un súper organismo sujeto a cambio. Nuestro entorno cambia dı́a a dı́a, y más en el aspecto tecnológico. Google, Wikipedia, redes sociales, Twitter, etc. han implicado un nuevo cambio de escala en el empleo de las TIC, y un reto en cuanto a la actualización concurrente y disponibilidad de enormes conjuntos de información en red. Surge el mundo NoSQL (Not Only SQL) Además, el Big Data lleva el tamaño de los volúmenes de datos a otra dimensión. Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 26. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started ¿Estado actual? 1 1 https://scalegrid.io/blog/2019-database-trends-sql-vs-nosql-top-databases- single-vs-multiple-database-use/ Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 27. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Un poco de Historia ¿Estado actual? 2 2 https://scalegrid.io/blog/2019-database-trends-sql-vs-nosql-top-databases- single-vs-multiple-database-use/ Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 28. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Un poco de Historia ¿Estado actual? 3 3 https://www.explore-group.com/blog/the-most-popular-databases- 2019/bp46/ Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 29. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Un poco de Historia ¿Estado actual? 4 4 https://db-engines.com/en/ranking Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 30. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Índice 1 Introducción al mundo no relacional 2 Panorama actual 3 Cambio de escala 4 NoSQL 5 MongoDB 6 Getting started Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 31. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Very Large Databases (VLDB) Definición Las siglas VLDB (Very Large Databases) denotan a bases de datos que contienen tablas cuyo número de tuplas resulta extremadamente alto. No se puede hablar de cifras concretas, esto va cambiando con el tiempo, evolucionando con la capacidad de almacenamiento de equipos personales, servidores, aplicaciones, etc.Por hacernos una idea, se puede entender como VLDB una base de datos de cientos de terabytes, con cientos de miles de millones de filas. Aparece incluso el concepto de XLDB (Extremely Large Databases). Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 32. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Big Data Los términos anteriores han ido dejando paso a lo largo del último lustro a la denominación de Big Data. Definición Entendemos por Big Data a conjuntos de información enormes, que superan con mucho la capacidad del software de gestión de bases de datos convencional para procesar datos en tiempo razonable. Los retos con este tipo de tecnologı́as se centran en la captura, almacenamiento, búsqueda, compartición, análisis y visualización de los datos. Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 33. Introducción 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 de las 4 V?s para resumir las caracterı́sticas fundamentales: 4 V’s Volume Grandes volúmenes de datos (petabytes, exabytes, etc.) Variety No limitado a información relacional, puede incluir datos no estructurados Velocity Los datos se deben procesar y analizar rápidamente Veracity Veracidad, adhesión a la verdad, precisión. Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 34. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Big Data - 7 V’s 7 V’s Volume Grandes volúmenes de datos (petabytes, exabytes, etc.) Variety No limitado a información relacional, puede incluir datos no estructurados Velocity Los datos se deben procesar y analizar rápidamente Veracity Veracidad, adhesión a la verdad, precisión. Variability Datos cuyo significado cambia constantemente Visualisation Presentar los datos de forma comprensible Value Extraer información para la toma de decisiones Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 35. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Índice 1 Introducción al mundo no relacional 2 Panorama actual 3 Cambio de escala 4 NoSQL 5 MongoDB 6 Getting started Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 36. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Big Data y NoSQL Enormes volúmenes de datos, y condiciones impuestas por las 7 V’s (disponibilidad, frecuencia de actualización, etc.) →n reto distinto a generaciones anteriores. BD relacionales proporcionan potencia y robustez, funcionalidad y estandarización, pero necesitamos nuevas soluciones. Cambio de enfoque: mientras que en BD relacionales prima la atomicidad y consistencia de datos, en NoSQL se apuesta por la escalabilidad y disponibilidad. El modelo relacional implica muchas interrelaciones entre entidades, dificultando distribución entre múltiples nodos servidores → barrera para la escalabilidad. La necesidad de realizar joins sobre tablas con miles de millones de registros → pérdida de eficiencia. Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 37. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started NoSQL - Tipos Clave-valor Forma mas tı́pica, como HashMap con cada elemento identificado por una clave única. Muy eficientes para lecturas y escrituras, y escalan fácilmente particionando los valores según su clave (e.g., clave entre 1 y 1000 a un servidor, 1001 a 2000 a otro, etc.) Ejemplos: Riak, Redis, Voldemort, DynamoDB de Amazon. Documentos Almacenan información como un documento (similar a JSON o XML) y con una clave única. El fichero generado puede ser entendido, y el servidor puede hacer operaciones con ellos. Varias implementaciones permiten consultas muy avanzadas, y establecer relaciones sin joins. Ejemplos: MongoDB, CouchDB. Columnas Guardan los valores en columnas en lugar de filas. Ganamos mucha velocidad en lecturas (al recuperar columnas concretas en lugar de toda la tabla), pero ineficiente para realizar escrituras. Se usa en aplicaciones con pocas escrituras en relación a las lecturas. Por ejemplo, Cassandra de Facebook, BigTable de Google, SimpleDB de Amazon, HBase. Grafos Almacenan información como grafos; las relaciones entre los nodos son lo más importante. Útiles para representar información de redes sociales. Más eficiente navegar entre estas relaciones, que pueden tener atributos, que en modelo relacional. Aprovechables si la información a modo de red. Ejemplo: Neo4j. Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 38. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Índice 1 Introducción al mundo no relacional 2 Panorama actual 3 Cambio de escala 4 NoSQL 5 MongoDB 6 Getting started Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 39. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started MongoDB SGBD multiplataforma NoSQL orientado a documentos, de esquema libre (código abierto). Cada registro se denomina documento. Los documentos se pueden agrupar en colecciones (como las tablas en una BD relacional, pero almacenando documentos muy diferentes, sin esquema fijo). Se pueden crear ı́ndices para atributos, manteniendo estructura interna eficiente para el acceso a los mismos. Destaca por su velocidad y su rico pero sencillo sistema de consulta de los contenidos de la base de datos. Buen equilibrio entre rendimiento y funcionalidad Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 40. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Formato de los datos Los distintos documentos se almacenan en formato BSON, o Binary JSON Versión modificada y enriquecida de JSON que permite búsquedas rápidas de datos. Guarda de forma explı́cita longitudes de campos, ı́ndices de arrays, y otra información útil para el escaneo de datos → ocupa más espacio que JSON. Conviene aprovechar el barato almacenamiento para incrementar en velocidad de localización de información dentro de un documento. Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 41. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started JSON El formato JSON está muy ampliamente extendido para intercambio de información a través 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 (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 42. Introducción 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 para cada dato, separadas por comas. Estas entradas tienen una serie de claves cuyos valores pueden ser a su vez de cualquier tipo JSON JSON Array, conteniendo una serie de valores JSON del mismo tipo Cadenas (String) Valores numéricos (Number) Valores lógicos (Bool) → true o false Valor 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. 5 https://www.json.org/ 6 http://json-schema.org/learn/miscellaneous-examples.html 7 https://jsonapi.org/examples/ 8 https://github.com/endpoints/endpoints-example Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 43. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Descarga e instalación MongoDB es multiplataforma, luego la instalación dependerá de las caracterı́sticas del S.O. destino. Además, hay versiones de 32 y 64 bits, y la versión actual de MongoDB community edition es la 4.2.1. Podemos descargarla en este enlace. Existen también versiones de pago (Enterprise) y en la nube (Atlas) Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 44. Introducción 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 programa ejecutable mongod. Por ejemplo, en Windows vamos a la lı́nea de comandos (sı́mbolo del sistema), navegamos hasta la carpeta bin dentro de la carpeta mongodb, y tecleamos mongod, lanzando ası́ el servidor. El proceso para lanzar el cliente es muy similar. Abrimos otra lı́nea de comandos, sin cerrar la del servidor, hacemos lo mismo que antes, y en el último paso lanzamos mongo. En ese momento estamos listos para lanzar órdenes contra la base de datos. Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 45. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Arrancando con la shell Para ver las bases de datos disponibles en nuestro servidor mongod, tecleamos show dbs. Mediante db se nos devuelve la bd a la que estamos conectados. Podemos seleccionar una escribiendo: use mydb, de forma que si no existe la base de datos mydb, ésta será creada automáticamente. No es necesario una declaración explı́cita de creación de la BD. Se elimina una BD mediante db.dropDatabase(). Si necesitamos acudir a la ayuda del sistema para consultar alguna funcionalidad podemos hacerlo mediante help, o a la ayuda de una determinada función mediante nombrefuncion.help(). Consultar la referencia del lenguaje para más detalle. Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 46. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Índice 1 Introducción al mundo no relacional 2 Panorama actual 3 Cambio de escala 4 NoSQL 5 MongoDB 6 Getting started Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 47. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Colecciones Una colección en MongoDB serı́a el equivalente a una tabla en modelo relacional. Podemos ver las existentes mediante show collections Para crear una colección, no es necesario definir explı́citamente el nombre de la colección y su estructura o esquema; se generará y actualizará automáticamente conforme vayamos insertando documentos. Podemos añadir mediante db.cosas.insert({v : 27}). También podrı́amos hacer asignar datos a una variable (mediante Javascript), y posteriormente insertarla. Por ejemplo: j = { name : "mongo" } k = { x : 3, n : 5 } db.cosas.insert( j ) db.cosas.insert( k ) Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 48. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Consultas Para realizar una consulta y poder ası́ ver los documentos insertados, hacemos: db.cosas.find(), que devolverá todos los documentos de la colección cosas. Lo anterior devolverá los 3 registros introducidos, sin ningún criterio de 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 } También podrı́amos consultar documentos por algún criterio, como por ejemplo haciendo: db.cosas.find( { name : "mongo"} ), que devolverá el documento cuyo name sea igual a “mongo”. Para devolver un único documento: db.cosas.findOne(). Y para limitar el número: db.cosas.find().limit(3). Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 49. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Bucles e iteradores Podemos escribir bucles de tipo for o while desde el cliente de MongoDB. Por ejemplo, para añadir una serie de documentos en la colección cosas: for (var i = 1; i <= 20; i++) db.cosas.insert( { x : 4 , j : i } ) También podemos declarar un cursor en una variable, y recorrelo con un iterador: var c = db.cosas.find() while ( c.hasNext() ) printjson( c.next() ) Esto mostrará un número máximo de documentos, por defecto 20, si bien ese lı́mite se puede modificar; una vez mostrados los primeros podremos escribir it para ver más documentos. También podemos acceder a una posición del array de resultados al que hace referencia la variable: var c = db.cosas.find() printjson( c [ 4 ] ) Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales
  • 50. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started Próximos pasos Esta presentación proporciona únicamente una introducción a NoSQL y MongoDB. Encontraremos mucho más material en este curso completo Prestaremos especial atención a tres aspectos: • Uso básico del shell • Importación de datos JSON a MongoDB • Inserción de datos mediante insert. • Consulta de documentos almacenados mediante find. Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos Bases de datos no relacionales