Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Mongo PPT

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 75

Bases de datos NoSQL con

mongoDB

Área Tecnologías de Información y Ciberseguridad

Román Gajardo R.

Enero 2021
Temario
1. Base de datos relacionarles
2. Base de datos NoSQL
3. Tipos de Bases de datos NoSQL
4. SQL vs NoSQL
5. Ventajas y Desventajas
6. MongoDB
7. JSON and BSON
8. Tipos de datos
9. CRUD and Operators
10.Relaciones
11. Indices
12. Agregaciones
Base de datos (SQL)
• Una base de datos es un repositorio donde se almacenan datos relacionados y desde donde se pueden
también recupera.

• Cada una se compone de una o más tablas que guardan un conjunto de datos en columnas (atributos) y
filas (que conforman un registro)

• Una base de datos es relacional cuando se cumple el modelo relacional que garantiza la unicidad de
registros, integridad y normalización

• En ellas se usa el lenguaje SQL como estándar para la definición, manipulación y control.
Base de datos
Base de datos NoSQL
• NoSQL se refiere a una gran variedad de tecnologías de bases de datos que se ham desarrollado en
respuesta a las necesidades de desarrollo de las aplicaciones modernas:

• Los desarrolladores trabajan con aplicaciones que generan enormes columnas de datos nuevos y en
constante evolución (estructurados, semiestructurados, no estructurados)

• Hoy en día se trabaja con equipos pequeños que realizan sprints de desarrollo ágiles con iteraciones
rápidas y que generan código cada semana, cada 15 días o varias veces al día.

• Las aplicaciones ahora se proporcionan como servicios, que deben ser accesibles desde muchos
dispositivos distintos y deben poder escalarse a millones de usuarios

• Las organizaciones ahora estan recurriendo a arquitecturas de escalamiento horizontal, que usan
tecnologías de código abierto, servidores básicos y computación en la nube
Base de datos NoSQL
• Por lo tanto las bases de datos NoSQL corresponden a un modelo no relacional (sin tablas) que incorpora
un lenguaje de consultas ofreciendo flexibilidad para almacenar información no estructurada.

• Se adaptan perfectamente a muchas aplicaciones modernas, como dispositivos móviles, web y juegos
que requieren datos flexibles, escalables, de alto rendimiento y altamente funcionales.
Tipos de bases de datos NoSQL

• Clave-valor: son altamente divisibles y permiten escalado horizontal. Los casos de uso como juegos,
tecnología publicitaria e IoT se prestan particularmente bien con este modelo de datos clave-valor.

• Documentos: en el código de la aplicacion, los datos se representan a menudo como un objeto o un


documento de tipo JSON porque es un modelo de datos eficiente e intuitivo para los desarrolladores.
Base de datos NoSQL
Diferencias SQL & NoSQL
Ventajas
• SQL
• Esquema definido con claridad y la integridad en los datos está garantizada
• No hay duplicidad de datos gracias al uso de relaciones entre tablas

• NoSQL
• Mayor Flexibilidad al no disponer de un esquema a seguir
• Los datos se almacenan en un formato que las aplicaciones necesitan
• Se puede escalar tanto verticalmente como horizontalmente
• Ofrece un alto rendimiento
Desventajas
• SQL
• Menos flexibilidad: hay que planificar con tiempo el esquema, ya que a futuro es mas complejo
modificarlo
• El uso de relaciones puede conllevar consultas Join complejas
• A veces el escalado horizontal se torna demasiado complicado

• NoSQL
• La flexibilidad piede conllevar a posponer decisiones de estructura importantes
• Alta posibilidad de tener datos duplicados.
MongoDB
• MongoDB es una base de datos de documentos que ofrece una gran escalabilidad y flexibilidad, y un
modelo de consultas e indexación avanzado.

• El modelo de documentos de MongoDB resulta fácil de aprender y usar, proporcionando a los


desarrolladores las funcionalidades para satisfacer los requisitos proporcionando drivers para mas de 10
lenguajes.

• MongoDB almacena datos flexibles en documentos flexibles similares a JSON, esto permite que los
campos pueden variar entre documentos.

• El modelo de documento se asigna a los objetos en el código de su aplicación para facilitar el trabajo con
los datos
JSON and BSON
• JSON y BSON son primos cercanos, como lo indican sus nombres son casi idénticos.

• JSON o JavaScript Object Notation es un estándar muy popular para el intercambio de datos en la Web
en el que se base BSON (Binary JSON)
JSON
• Los objetos de JavaScript son contenedores
asociativos simples, en los que una clave de cadena
se asigna a un valor (que puede ser un numero,
cadena, función o incluso otro objeto)

• La característica simple de contenedores del lenguaje


permitió que los objetos JavaScript se representaran
de manera notablemente simple en el texto

• JSON existe en casos como APIs, Archivos de


configuración, Mensajes de Logs, Database Storage
BSON
• Simplemente significa JSON Binario que es una serialización codificada en binario para documentos JSON.

• La estructura binaria de BSON codifica la información de tipo y longitud, lo que permite analizarla mucho más
rápidamente

• BSON se ha ampliado para agregar tipos de datos no nativos de JSON como fechas y datos binarios.
MongoDB usa JSON o BSON
• MongoDB almacena datos en formato BSON tanto internamente como a través de la red, pero no significa que
no pueda pensar MngoDB como una base de datos JSON

• Todo lo que pueda representar en JSON puede almacenarse de forma nativa en MongoDB y recuperarse con
la misma facilidad en JSON
MongoDB usa JSON o BSON
Comandos Básicos Mongo Shell
• Mostrar bases de datos habilitadas

• show dbs

• Seleccionar una base de datos para acceder o crearla si no existe

• use <name-db>

• Crear una colección

• db.createCollection(‘<name-collection>’)
Comandos Básicos Mongo Shell
• Mostrar todas las colecciones en la base de datos (debe estar seleccionada la base de datos previamente)

• show collections

• Mostrar mostrar todas las funciones que pueden ser usadas con la base de datos

• db.<name-collection>.help()
• db.help()

• Chequear base de datos seleccionada

• db
Comandos Básicos Mongo Shell
• Eliminar una colección

• db.<name-collection>.drop()

• Chequear base de datos seleccionada

• db

• Eliminar una base de datos


• db.dropDatabase()
Comandos Básicos Mongo Shell
• Demostración
Comandos Básicos Mongo Shell
• Ejercicios
Documentos
• Un documento es represando por un objeto JavaScript en donde se pueden utilizar tipos de datos como
• String
• Integer
• Boolean
• Double
• Min/Max
• Timestamp
• Obejct
• Null
• Date
• ObjectId
• Binary
• Code
• Regular expression
Documentos
• Formato JSON
Documentos
• Acceso y Manipulación de datos JSON

x = {
nombre:"bertoldo",
calle:"General Jamón",
num:256,
cuentas:[
{num:”001", saldo:2000, compartida:true},
{num:"002", saldo:100, compartida:false}
],
contacto:{
email:"bertoldo@ucm.es",
telefono:{
fijo:”913421234",
movil:[“5655555”,"444444"]
}
}
}
Documentos - create
• Para crear un documento nuevo se pueden utilizar las siguientes funciones
• insertOne(<object>)
• insertMany(<list object>)
• insert(<object>) insert([<object>,<object>..])
• save(<object>)

• Cada nuevo documento que se crea se genera un atributo _id correspondiente a un ObjectId el cual es
generado automáticamente mediante un algoritmo.
Documentos - create
• Demostración

codigo: 1 codigo: 2 codigo: 3 codigo: 4


nombre: Java nombre: Python nombre: Java EE nombre: Oracle
autor: Borges autor: Smith autor: Smith autor: Jordan
capitulos: 12 capitulos: 8 capitulos: 10 capitulos: 6
editoriales: [ editoriales: [ editoriales: [ editoriales: [
Planeta Planeta Omega Planeta
Omega Beta
] ] ] ]
Documentos - create
• Realizar la actividad 2
Documentos - Read
• Para buscar documentos en una colección las funciones pueden ser:
• find()
• find( { field : value } )
• findOne()
• findOne( { field : value } )

• Tanto find como findOne pueden seleccionar los campos a mostrar, por defecto todas las claves tienen la
propiedad de 1 o true
• find( {} , { field : 0 o false})

• También estas funciones poseen una función para dejar los documentos en formato JSON mediante la
función pretty()
Documentos - Read
• Demostración
Documentos - Read
• Ejercicios , Actividad 3
Documentos - Read - Comparison Operators
• A continuación, en una función find o findOne se pueden utilizar los siguientes operadores.

• $eq, Especifica una condición de igualdad, entregando los documentos que cumplan con el match

• $gt, selecciona los documentos donde el valor del campo es mayor al valor especificado

• $gte, selecciona los documentos donde e el valor del campo es mayor o igual al valor especificado
Documentos - Read - Comparison Operators
• $in, selecciona los documentos donde el valor del campo es igual a uno de los valores especificados en
un arreglo.

• $lt, selecciona los documentos donde el valor del campo es menor que el valor especificado

• $lte, selecciona los documentos donde el valor del campo es menor o igual al valor especificado
Documentos - Read - Comparison Operators
• $ne, selecciona los documentos donde el valor del campo no es igual al valor especificado

• $nin, selecciona los documentos donde:


• El valor del campo no esta en un arreglo
• El campo no existe
Documentos - Read - Comparison Operators
• Demostración
Documentos - Read - Comparison Operators
• Ejercicios, Actividad 4
Documentos - Read - Logical Operators
• $and, une consultas con la lógica AND retornando todos los documentos que cumplen con las
condiciones

• $not, Invierte el efecto de una expresión y retorna todos los documentos que no cumplen con la expresión

• $nor, une consultas con la lógica NOR retornando todos los documentos que no cumplen con las
condiciones

• $or, une consultas con la lógica OR retornando todos los documentos que cumplan con al menos una
condición
Documentos - Read - more methods
• El método find puede tener mas especializaciones como
• skip(integer), se salta la cantidad de documentos indicada como parámetro

• sort({field:1 or -1}), ordena por campo indicado, donde 1 ordena ascendente y -1 descendente

• count(), entrega la cantidad de documentos según la consulta

• limit(integer), entrega un conjunto de documentos donde la cantidad es definida en el parámetro de la


función limit

• Estas funciones se pueden combinar


Documentos - Read - Logical Operators
• Demostración
Documentos - Read - Logical Operators
• Ejercicios, Actividad 5, Actividad 6
Documentos - Update
• Para editar o actualizar un documento existen diferentes métodos

• updateOne(<filter>,<update>,<options>)
• updateMany(<filter>,<update>,<options>)
• replaceOne(<filter>,<update>,<options>)
• update()
Documentos - Update
• Demostración

Documentos - Update
• Ejercicios, Actividad 7
Documentos - Update - Operators
• $currendDate, operador que establece el valor de un campo en la fecha actual.

• $inc, operador que incrementa un campo por un valor específico ya sea negativo o positivo

• $min, operador que actualiza el valor de un campo , solo si el valor es menor al actual.
Documentos - Update - Operators
• $max, operador que actualiza el valor de un campo solo si el nuevo valor es mayor al actual

• $rename, operador que modifica el nombre de un campo

• $set, operador que reemplaza el valor de un campo especificado


Documentos - Update - Operators
• $setOnInsert, operador que inserta un nuevo documento, siempre y cuando la propiedad upsert sea
verdadero,

• $unset, operador que elimina un campo en particular


Documentos - Update - Operators
• Demostraciones
Documentos - Update - Operators
• Ejercicios, Actividad 8
Documentos - Delete
• Para eliminar documentos se pueden utilizar los siguientes métodos
• deleteOne(<filtrer>)
• deleteMany(filter)
• remove(filter)

• En caso de eliminar todos los documentos de una colección se usa deleteMany({})


Documentos - Delete
• Demostración
Documentos - Delete
• Ejercicios,Actividad 9,10
Documentos con matrices
• Un campo puede contener una lista de elementos en los
cuales a través de una consulta find se pueden acceder a
esta lista.

• db.movies.findOne({_id:1}).genres

• Para buscar en una lista mongo es muy inteligente y


sabra filtrar en una lista

• db.movies.find({genres:’Short'})
Documentos con matrices
• Demostración
Documentos con matrices operadores
• Cuando se trabajan con matrices se pueden utilizar los siguientes operadores

• $size, entrega los documentos donde una matriz tenga una cierta cantidad de elementos
• { <array field> : { $size : integer } }
• $all, entrega los documentos donde en una matriz podamos buscar algunos elementos que tenga la
matriz
• { <array field> : { $all: { [ value1,…, valueN ] } } }
• $elemMatch, entrega los documentos buscando en una matriz de objetos consultando por elementos
internos
• { <array field> : { $elemMatch: { <operator1>,…,<operatorN> } } }
• $slice, entrega documentos cortando elementos de la matriz, indicando cuantos elementos queremos
mostrar.
• {<filter>},{ <array field> : { $slice: integer o [saltos, cantidad]} }
Documentos con matrices operadores
• Ejemplo,
db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
{ item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
{ item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
{ item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
{ item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);

1.Mostrar documentos que tengan como cantidad 1 tag


2.Mostrar documentos que tengan el tags ‘blank'
3.Mostrar documentos que tengan el tags ‘blank’,’red' respetando el orden
4.Mostrar documentos que tengan el tags ‘blank’,’red' sin importar el orden
5.Mostrar documentos donde el dim_cm es mayor a 25
6.Mostrar documentos donde el primer elemento de dim_cm sea menor a 15 (“dim_cm.0”)
7.Mostrar documentos donde el dim_cm que tenga un valor mayor que 15 y/o menor que 20
8.Mostrar documentos donde el dim_cm que tenga un valor mayor que 15 y menor que 20
Documentos con matrices operadores
• Proyecciones
• Podemos especificar solamente mostrar una columna de matrices
• Y ademas si seleccionamos el conjunto de matrices de una consulta podemos escoger la cantidad de
elementos a mostrar
Documentos incrustados
• Cuando se tienen documentos incrustados se utiliza la
notación de punto para acceder a los delates el
documento mas interno

• Cuando ocurre esto, el campo debe estar en comillas


simples o dobles por ejemplo si se quisiera filtrar por
level seria db.coleccion.find({“access.level” : 5})

•Ta m b i é n puede ser de la forma


db.coleccion.find({access:{level : 5}}) , esta consulta
es exacta por lo que no se mostrarán los resultados.

• Generalmente se conoce como modelo desmoralizado


Documentos incrustados - update
• Para el siguiente esquema:

• Si se quisiera actualizar la marca de Tom de 50 a 55, se debe utilizar el operador posiciones $


Documentos incrustados - update
• Para el siguiente esquema:

• Si se quisiera actualizar la marca de Tom en el ramo de ingles a 85


Documentos incrustados - update
• También se puede actualizar una matriz de elementos utilizando operadores $push y $pull

• Esta instrucción creará si no existe un campo llamado nicknames de tipo Array con el valor indicado

• En el caso de eliminar un elemento del Array se utiliza el operador $pull


Documentos incrustados - update
• En caso de eliminar de una matriz el primer o ultimo elemento se utiliza el operador $pop, ejemplo considere
la siguiente matriz de un documento ['Marie', 'Bob', 'Kevin', ’Alex’]

• Si se quisiera eliminar de la matriz el primer elemento la instrucción sería

• Si se quisiera eliminar de la matriz el último elemento la instrucción sería


Schemas
• MongoDB no necesita Schema, pero se debe saber que:

• En el mundo real, se utiliza semi estructurado estructurado


Schemas flexible
• En caso de tener un schema fijo o estructurado podríamos pensar en tener un nuevo documento con el detalle
del producto.
Relaciones
Relaciones
Relación One to One (incrustado)
Relación One to One (referencias)
Relación One to Many (incrustada)
Relación One to Many (referencia)
Relación Many to Many (incrustado)
Relación Many to Many (referencia)
Relación Many to Many (referencia)
Agregación
Agregación

También podría gustarte