SlideShare una empresa de Scribd logo
No SQL y MongoDb
Contexto de
surgimiento
Año
2015
Por cada minuto del día
YouTube 300 hs. de Video
Facebook 4,166.667 User share
Twitte
r
Apple
347,222 tweets
51,000 Apps Download
Whatsapp 347,222 Photos
Uber
Tinder
SnapChat
694 pasajeros
590,278 Users Swipe
284,722 Snaps
Población Total de Internet
3.200.000.000 de personas
MASIFICACIÓN USO DE
INTERNET
SURGIMIENTO DE LAS REDES
SOCIALES
CRECIMIENTO EXPONENCIAL DE DISPOSITIVOS
MÓVILES
INTERFACES DE USUARIO MAS SIMPLES E
INTUITIVAS
CADA DÍA CREAMOS 2,5
QUINTILLONES DE BYTES
DE
DATOS. (2,5 Exabytes)
EL 90% DE LOS DATOS DEL
MUNDO DE HOY SE
GENERARON EN LOS
ÚLTIMOS 2 AÑOS
PRINCIPALES CAMBIOS QUE SE PRODUJERON EN LA TECNOLOGÍA Y EN
LOS ÚLTIMOS 15 AÑOS
CAMBIOS EN LAS FORMAS DE PROCESAMIENTO
FUERTE BAJA EN LOS COSTOS DE
ALMACENAMIENTO
Big Data
Big Data es el sector de IT que hace referencia a grandes conjuntos de
datos que por la velocidad a la que se generan, la capacidad para
tratarlos y los múltiples formatos y fuentes, es necesario procesarlos con
mecanismos distintos a los tradicionales.
DEFINIENDO BIG DATA
BIG DATA
“Volumen masivo de datos, tanto estructurados como no-estructurados, los
cuales son demasiado grandes y difíciles de procesar con las bases de
datos y el software tradicionales." (ONU, 2012)
En ambientes tradicionales de BI y DW primero se generan los requerimientos y luego las
aplicaciones. Dicho de otra forma, los requerimientos direccionan las aplicaciones. En Big
Data es al revés, ya que se utiliza la exploración de datos libre para generar hipótesis para
encontrar un patrón
BIG DATA
fuente: forrester research. global big data
survey
El costo es un factor en muchos casos. Las tecnologías utilizadas en Big Data son más
económicas que las tradicionales.
¿ CUÁLES DE LAS 4 Vs TIENEN MAYOR INFLUENCIA ?
Volume
n
Velocidad
Variedad
”Veracidad
”
Introducción a
Bases de Datos NoSQL
NOSQL DATABASE
¿ Qué es NoSQL ?
Sistemas de gestión de bases de datos que difieren del modelo clásico de bases de datos relacionales:
no usan SQL como lenguaje de consulta, los datos almacenados no requieren estructuras fijas como
tablas, no garantizan consistencia plena y escalan horizontalmente.
NOSQL DATABASE TYPES
Orientadas a columnas
Este tipo de bases de datos están pensadas para realizar consultas y agregaciones sobre grandes
cantidades de datos. Funcionan de forma parecida a las bases de datos relacionales, pero
almacenando columnas de datos en lugar de registros.
De clave-valor
Estas son las más sencillas de entender. Simplemente guardan tuplas que contienen una clave y su
valor. Cuándo se quiere recuperar un dato, simplemente se busca por su clave y se recupera el valor.
En grafo
Basadas en la teoría de grafos utilizan nodos y aristas para representar los datos almacenados. Son
muy útiles para guardar información en modelos con muchas relaciones, como redes y conexiones
sociales
Orientadas a documentos
Son aquellas que gestionan datos semi estructurados. Es decir documentos. Estos datos son
almacenados en algún formato estándar como puede ser XML, JSON o BSON.
NOSQL DATABASE TYPES
NOSQL – DB-ENGINES.COM
http://db-engines.com/en/ranking
Document Based
INTRODUCCIÓN A MONGODB
Document Based
• Las bases de datos almacenan y recuperan documentos que pueden ser XML,
JSON, BSON, etc.
• Los documentos almacenados son similares unos con otros pero no
necesariamente con la misma estructura.
MongoDB
• Su nombre surge de la palabra en inglés
“humongous” (que significa enorme).
• MongoDB guarda estructuras de datos en
documentos tipo JSON (JavaScript Object
Notation) con un esquema dinámico.
• Internamente MongoDB almacena los
datos en formato BSON (Binary JavaScript
Object Notation).
• BSON está diseñado para tener un
almacenamiento y velocidad más eficiente.
El Origen
2007
2009
2011
2016
La empresa 10gen lo desarrolla cuando estaba
desarrollando una Plataforma cómo servicio
(PaaS - Platform as a Service). Similar a Google
App Engine.
En este año MongoDB es lanzado como Producto.
Es publicado bajo licencia de código abierto
AGPL.
Se lanza la versión 1.4 considerada como una
Base de Datos lista para producción.
Actualmente MongoDB está por la versión 3.2.8 y
es la Base de Datos NoSQL con mayor
popularidad.
Bases de Datos de
Propósitos Generales
Bases de Datos
Documentales
Bases de Datos
De Código Abierto
Terminología RDBMS vs. Document Based
(MongoDB)
RDBMS MongoDB
Database instance MongoDB instance
Database / Schema Database
Table Collection
Row Document
Rowid _id
Join Dbref
Modelado de Relaciones entre
Documentos
Relaciones Uno a Uno
con documentos embebidos
Modelo Normalizado
Colección Personas
{ _id: “u0001",
nombre: “Juan Martín Hernandez“,
direccion:{calle: “Malabia 2277",
ciudad: “CABA",
provincia: “CABA",
codPostal: "1425" }
}
Si la dirección es un dato frecuentemente consultado junto con el
Nombre de la persona, la mejor opción será embeber la dirección
en los datos de la persona.
Colección Personas
{ _id: “u0001",
nombre: “Juan Martín Hernandez" }
Colección Direcciones
{ persona_id: “u0001",
calle: “Malabia
2277", ciudad:
“CABA", provincia:
“CABA", codPostal:
"1425" }
Con una sola consulta podríamos recuperar toda la información
de una persona.
Modelado de Relaciones entre Documentos
{ _id: “u0001",
nombre: “Juan Martín Hernandez“,
direcciones:[{calle: “Malabia 2277",
ciudad: “CABA",
provincia: “CABA",
codPostal: "1425" },
{calle: “Av. Santa Fe 3455",
ciudad: “Mar del Plata",
provincia: “Buenos Aires",
codPostal: “7600" }
]
Si las direcciones son un dato frecuentemente consultado junto con el
Nombre de la persona, la mejor opción será embeber las direcciones
en los datos de la persona.
Colección Personas
Relaciones Uno a Muchos
Con Documentos Embebidos
Modelo Normalizado
Colección Personas
{ _id: “u0001",
nombre: “Juan Martín Hernandez" }
Colección Direcciones
{ persona_id: “u0001",
calle: “Malabia
2277", ciudad:
“CABA", provincia:
“CABA", codPostal:
"1425" }
{persona_id: “u0001",
calle: “Av. Santa Fe 3455",
ciudad: “Mar del Plata",
provincia: “Buenos Aires",
codPostal: “7600" }
}
Con una sola consulta podríamos
recuperar toda la información
de una persona.
Modelado de Relaciones entre Documentos
Relaciones Uno a Muchos Con Documentos Referenciados
Colección libros
{titulo: "MongoDB: The Definitive Guide",
autor:[ "K. Chodorow", "M. Dirolf" ],
fechaPublicacion: ISODate("2010-09-24"),
paginas: 216,
lenguaje: "Ingles",
editor: { nombre: "O'Reilly Media",
anioFundacion: 1980,
USAState: "CA" } }
{titulo: "50 Tips and Tricks for MongoDB…",
autor: "K. Chodorow",
fechaPublicacion: ISODate("2011-05-06"),
paginas: 68,
lenguaje: “Ingles",
editor: { nombre: "O'Reilly
anioFundacion:
USAState:
"CA"
Media",
1980,
} }
Colección Editores
{ nombre: "O'Reilly Media",
anioFundacion: 1980,
USAState: "CA“,
libros:
[987654321,1234567890] }
Colección Libros
{_id: 987654321
titulo: "MongoDB: The Definitive Guide",
autor:[ "K. Chodorow", "M. Dirolf" ],
fechaPublicacion: ISODate("2010-09-24"),
paginas: 216,
lenguaje: "Ingles“}
{_id: 1234567890
titulo: "50 Tips and Tricks for MongoDB…",
autor: "K. Chodorow",
fechaPublicacion: ISODate("2011-05-06"),
paginas: 68,
lenguaje: “Ingles"}
Cuando usamos referencias, el crecimiento de las relaciones determinan donde conviene almacenar
la referencia. Por ej. Si el nro. de libros por editor es chico y no crecerá mucho, este modelo podría
ser conveniente.
Modelado de Relaciones entre Documentos
Colección libros
{titulo: "MongoDB: The Definitive Guide",
autor:[ "K. Chodorow", "M. Dirolf" ],
fechaPublicacion: ISODate("2010-09-24"),
paginas: 216,
lenguaje: "Ingles",
editor: { nombre: "O'Reilly Media",
anioFundacion: 1980,
USAState: "CA" } }
{titulo: "50 Tips and Tricks for MongoDB…",
autor: "K. Chodorow",
fechaPublicacion: ISODate("2011-05-06"),
paginas: 68,
lenguaje: “Ingles",
editor: { nombre: "O'Reilly
anioFundacion:
USAState:
"CA"
Media",
1980,
} }
Relaciones Uno a Muchos Con Documentos Referenciados
Colección Editores
{ _id: "oreilly"
nombre: "O'Reilly Media",
anioFundacion: 1980,
USAState: "CA“,
}
Colección Libros
{_id: 987654321
titulo: "MongoDB: The Definitive Guide",
autor:[ "K. Chodorow", "M. Dirolf" ],
fechaPublicacion: ISODate("2010-09-24"),
paginas: 216,
lenguaje: "Ingles“,
idEditor: "oreilly"}
{_id: 1234567890
titulo: "50 Tips and Tricks for MongoDB…",
autor: "K. Chodorow",
fechaPublicacion: ISODate("2011-05-06"),
paginas: 68,
lenguaje: “Ingles“,
idEditor: "oreilly"}
En cambio si queremos evitar Arreglos mutables y crecientes podemos implementar una
referencia al editor dentro de cada libro.
En qué casos usarlas ?
Logging de Eventos
• las bases de datos basadas en documentos puede loguear cualquier clase de eventos y almacenarlos con sus diferentes
estructuras.
• Pueden funcionar como un repositorio central de logueo de eventos.
CMS, blogging
• su falta de estructura predefinida hace que funcionen bien para este tipo de aplicaciones.
Web-analytics / Real-Time analytics
• Almacenar cantidad de vistas a una página o visitantes únicos.
Commerce
• A menudo requieren tener esquemas flexibles para los productos y órdenes
MongoDB – Instalación
INSTALACIÓN
Y
CONFIGURACIÓN
Instalación y configuración
1. lnstalar MongoDB
2. Actualizar variable Path
• Buscar el directorio donde se instaló MongoDb (por ejemplo C:Program FilesMongoDBServer3.2bin)
• Añadir MongoDb a la variable Path (Inicio > Equipo > Propiedades del Sistema > Opciones avanzadas)
3. Crear una carpeta (con los permisos adecuados) para guardar la base de datos
• C:/Data/Db es la carpeta default para MongoDb
• Si quisiéramos tener otro path debemos ejecutar desde consola: mongod --dbpath ruta/nueva-a/la-carpeta-db
4. Abrir conexión desde Consola de Windows (Símbolo del Sistema) ejecutando el comando mongod
5. Mantener la consola de conexión abierta y abrir una nueva consola para operar sobre la base
UTILIZANDO MONGODB
Caso Práctico
Caso Práctico
Armaremos un modelo que contenga la información de las facturas y todos sus
ítems, detallando el nombre, apellido, cuit y región del cliente al que se le emitió la
factura, para poder realizar consultas desde un portal de facturas de la forma más
performante posible.
UTILIZACIÓN DE MONGODB
DESDE LA LÍNEA DE
COMANDOS
Operaciones sobre una colección
Ver todos los comandos:
db.facturas.help()
Ejemplos:
Ver todos los documentos:
db.facturas.find()
Cantidad de documentos en la colección:
db.facturas.count()
Espacio ocupado por los documentos de la colección:
db.facturas.dataSize()
Operaciones sobre una colección
Inicio de servidor mongo por consola:
C:>mongod
Inicio de cliente mongo por consola:
C:>mongo
Ver bases de datos
show dbs
Ver colecciones
show collections
Caso Práctico
Insertar
db.facturas.insert({"_id": ObjectId("55e4a6fabfc68c676a041063"),"cliente":
{"apellido":"Malinez","cuit":2.740488484e+09,"nombre":"Marina","region":"CENTRO"},"condPago":"CONTADO","f
echaEmision": ISODate("2014-02-20T00:00:00.000Z"),"fechaVencimiento": ISODate("2014-02-
20T00:00:00.000Z"),"item":[{"cantidad":11.0,"precio":18.0,"producto":" CORREA 12mm"},
{"cantidad":1.0,"precio":490.0,"producto":"TALADRO 12mm"}],"nroFactura":1000.0})
db.facturas.insert({"_id": ObjectId("55e4a6fbbfc68c676a041064"),"cliente":
{"apellido":"Zavasi","cuit":2.038373771e+09,"nombre":"Martin","region":"CABA"},"condPago":"30 Ds
FF","fechaEmision": ISODate("2014-02-20T00:00:00.000Z"),"fechaVencimiento": ISODate("2014-03-
22T00:00:00.000Z"),"item":[{"cantidad":2.0,"precio":134.0,"producto":"CORREA 10mm"}],"nroFactura":1001.0})
db.facturas.insert({"_id": ObjectId("55e4a6fbbfc68c676a041065"),"cliente":
{"apellido":"Zavasi","cuit":2.038373771e+09,"nombre":"Martin","region":"CABA"},"condPago":"CONTADO","fecha
Emision": ISODate("2014-02-20T00:00:00.000Z"),"fechaVencimiento": ISODate("2014-02-
20T00:00:00.000Z"),"item":[{"cantidad":6.0,"precio":60.0,"producto":"TUERCA 2mm"},
{"cantidad":12.0,"precio":134.0,"producto":"CORREA 10mm"}],"nroFactura":1002.0})
Operaciones sobre una colección
Buscar documento para cliente con determinado apellido
db.facturas.find({"cliente.apellido":"Malinez"})
Consultar los primeros dos documentos
db.facturas.find().limit(2)
Consultar documentos salteando los primeros dos documentos
db.facturas.find().skip(2)
Visualización mejorada
db.facturas.find().pretty()
Operaciones sobre una colección
Consultar dos documentos, salteando los dos primeros documentos de una colección,
mostrándolos en un modo mejorado.
db.facturas.find().limit(2).skip(2).pretty()
Consultar documentos sólo mostrando algunos datos
db.facturas.find({"cliente.apellido":"Malinez"}, {"cliente.cuit":1, "cliente.region":1})
Buscar documento para cliente con dos criterios
Para Zavasi teníamos dos documentos: db.facturas.find({"cliente.apellido":"Zavasi"}).pretty()
Agregamos un criterio: db.facturas.find({"cliente.apellido":"Zavasi", "nroFactura":1001.0}).pretty()
Ordenamiento en forma ascendente
db.facturas.find().sort({nroFactura:1})
Ordenamiento en forma descendente
db.facturas.find().sort({nroFactura:-1})
Consultando una Colección – Criterios
de Selección
Operadores $
$gt
$gte
$lt
$lte
$not
$or
$in
$nin
$exist
$regex
Busca las facturas cuya fecha de emisión sea mayor o igual al 24/02/2014.
Busca la cantidad de facturas cuyo Nro. de Factura sea mayor que 1465
db.facturas.find( { nroFactura : {$gt:1465} } ).count()
db.facturas.find({fechaEmision:{$gte: ISODate("2014-02-24T00:00:00Z")} } )
Insertando un Documento
El método insert tiene la siguiente sintaxis:
Evalúa si existe un próximo documento. Devuelve True o False.
.
db.collection.insert
( <document or array of documents>,
{ writeConcern: <document>,
ordered: <boolean> } )
Ejemplo, inserción de un documento sin _id:
db.facturas.insert({nroFactura:30003,codPago:”CONTADO”})
_id: Document Id único autogenerado
writeconcern Es opcional, lo veremos en la parte de consistencia.
Ordered lo vemos en un par de slides
Insertando un Documento
Ejemplo, inserción de un documento con _id:
db.facturas.insert({_id:23094776, nroFactura:30004,codPago:”CONTADO”})
Al crear una colección, el motor de BD crea un índice único sobre el atributo _id.
Borrando
Documentos
Operación Remove
Sintaxis
db.<collection_n
ame>.remove({crit
erio_de_eliminaci
ón})
Esta operación eliminará los documentos que cumplan con el criterio definido.
Warning: Remove es una operación de tipo multi-documento!!
Recomendación: Es conveniente antes de borrar hacer un find o un count para
asegurarse lo que
quiero borrar.
Ejemplo 1 – Borrado de TODOS LOS DOCUMENTOS de una colección
db.accesos.remove({})
Elimina TODOS LOS ELEMENTOS de una colección.
Borrando
Documentos
Ejemplo 2 – Remove por clave primaria
db.updtst.remove({_id:100})
Elimina el documento cuyo _id sea 100 de la colección updtst.
Ejemplo 3 – Remove por un criterio con múltiples documentos que aplican
db.updtst.remove({items:88})
Modificando
Documentos
Permite modificar uno o más documentos de una colección. Por default modifica sólo un
documento.
db.coleccion.update ( {clausula_where},
{documento_o_expresión_a_modificar},
{ upsert, multi, writeconcern}
)
upsert (true o false)Si está configurado en “True” significa que realizará un update si existe un documento que
concuerda con el criterio, o un insert si no existe algún documento que concuerde con el criterio. El
valor default es “false”, en este caso no realiza un insert cuando no existe documento que concuerde
con el criterio.
multi (true o false) Es opcional. Si es configurado en true, el update realiza la actualización de multiples
documentos que concuerdan con el criterio cláusula_where. Si es configurado en false, modifica solo
un documento. El valor default es false. Sólo actúa en updates parciales con operadores $.
writeconcern Es opcional, lo veremos en la parte de consistencia.
Modificando
Documentos
Update Totales/Completos
Se realiza el update del documento completo, reemplazando el mismo.
Update Parciales
Operadores
Operadores sobre cualquier atributo
$set
$unset
$inc
Permite modificar el valor de un atributo, o agregar un nuevo atributo al documento.
Permite eliminar un atributo de un documento.
Incrementa o decrementa el valor de un atributo ( n ó –n)
Operadores sobre Arrays
$push
$addtoSet
$pushAll
$pop
$pull
$pullAll
Agrega un elemento a un Array o crea un Array con un elemento.
Agrega un elemento al Array solo si no existe en el Array.
Agrega varios elementos a un Array con los valores indicados o crea un Array con esos
elementos. (Operación Múltiple)
Elimina un elemento de un Array por sus extremos, permitiendo eliminar el primer elemento (-1)o el
último (1).
Elimina todos los elementos de un Array que contengan el valor indicado.
Elimina todos los elementos de un Array que contengan alguno de los valores indicados.
(Operación Múltiple)
Modificando Documentos
Completos
Update Totales/Completos
db.updtst.update({x:2},{"x" : 2, "y" : 999 })
Este comando reemplaza el primer documento encontrado por con valor x:2 por este otro en donde el elemento y:999, no tengo el
control de cuál estoy modificando, lo correcto era modificar poniendo en el criterio el _id.
Modificando Documentos
Parciales
Update Parciales
Ejemplo 1 – Operador $set – Modificación de un valor de un atributo existente
Dado el siguiente documento:
db.updtst.update({_id:100},{$set : {x:100}})
Realizará una modificación del valor de atributo x a 100
Modificando Documentos
Parciales
Update Parciales
Otro Ejemplo – Operador $set – Opción multi – Agregar un atributo en todos los documentos
db.updtst.update({x:2},{$set : {z:”NUEVO”}},{multi:true})
Este reemplaza en TODOS los documentos encontrados con valor x:2 agregando el atributo z:”NUEVO”

Más contenido relacionado

PPTX
Persistencia-NoSQL-y-MongoDB-v-2018.02-Prof.-L.-Straccia.pptx
PDF
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
PDF
PPTX
Bases de Datos - Act4_Gonzalez_Desirena_JuanCarlos
PPTX
Principales Bases de Datos
PPTX
Luis trejo power point
PPTX
Act.4 base de datos Olguin_Luisa
PDF
Investigación de sobre los conceptos que se deben de tratar en Mongo DB
Persistencia-NoSQL-y-MongoDB-v-2018.02-Prof.-L.-Straccia.pptx
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
Bases de Datos - Act4_Gonzalez_Desirena_JuanCarlos
Principales Bases de Datos
Luis trejo power point
Act.4 base de datos Olguin_Luisa
Investigación de sobre los conceptos que se deben de tratar en Mongo DB

Similar a MongoDB.basededatos-nosql-basenorelacion (20)

PPTX
Actividad 4
PPTX
Base de datos
PPTX
base de datos
PPTX
Presentación
PPTX
Actividad4 garibay blanca
PPTX
Bases dedatos act. 4
PDF
Lumisaca hector bdii_t1
PPTX
Bases datos
PPTX
Principales bases de datos existentes
PPTX
Principales bases de datos existentes
PPTX
Rila
PPTX
Base de datos
PPTX
Bases de datos
PPTX
Bases de Datos SQL y NoSQL
PPTX
Access 2013
PPTX
Tipos de bases de datos por Juan del Ángel Oláez González
PPTX
Bases de datos
Actividad 4
Base de datos
base de datos
Presentación
Actividad4 garibay blanca
Bases dedatos act. 4
Lumisaca hector bdii_t1
Bases datos
Principales bases de datos existentes
Principales bases de datos existentes
Rila
Base de datos
Bases de datos
Bases de Datos SQL y NoSQL
Access 2013
Tipos de bases de datos por Juan del Ángel Oláez González
Bases de datos
Publicidad

Más de JUANCARLOSHUERTASNIO (15)

PPTX
Proceso de Matrícula.senaaño2024adsopptx
PPTX
Ambientes diversos de aprendizaje -.pptx
PPTX
Banco de Proyectos 2022 PSWsenaa2023.pptx
PPTX
basesdedatos-programacionmongoldb-adsose
PPT
346785952-1-Ciclo-de-Vida-del-Desarrollo-de-Sistemas-ppt.ppt
PPTX
02-Secuenciacion.pptx-progrmacion-basedo
PPTX
base_datos_antonioangelesvilledappt.pptx
PPTX
herramientasofimaticas-220329192656.pptx
PPTX
Formación ofimática básica principiantes
PPT
presentacion-tema unidad de programacion
PPT
programacion orientada a objetos-ppt-poo
PPTX
Material.pptx software programacion pptt
PPT
tipos de software diseño publicitariosso
PDF
el-software-y-sus-clases para aplicacion
PPT
presentacion de html-java script y boptr
Proceso de Matrícula.senaaño2024adsopptx
Ambientes diversos de aprendizaje -.pptx
Banco de Proyectos 2022 PSWsenaa2023.pptx
basesdedatos-programacionmongoldb-adsose
346785952-1-Ciclo-de-Vida-del-Desarrollo-de-Sistemas-ppt.ppt
02-Secuenciacion.pptx-progrmacion-basedo
base_datos_antonioangelesvilledappt.pptx
herramientasofimaticas-220329192656.pptx
Formación ofimática básica principiantes
presentacion-tema unidad de programacion
programacion orientada a objetos-ppt-poo
Material.pptx software programacion pptt
tipos de software diseño publicitariosso
el-software-y-sus-clases para aplicacion
presentacion de html-java script y boptr
Publicidad

Último (20)

DOCX
Cumplimiento normativo y realidad laboral
PDF
Electricidad-Estatica-Peligros-Prevencion.pdf
PDF
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
PDF
Informe Estudio Final Apagon del 25 de febrero
PDF
5 Presentación de PowerPointGENERACIÓN DESECHOS UIS 18-02-2023 (1).pdf
PDF
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PDF
S15 Protección de redes electricas 2025-1_removed.pdf
PPTX
1 CONTAMINACION AMBIENTAL EN EL PLANETA.pptx
PPT
Sustancias Peligrosas de empresas para su correcto manejo
PPTX
Contexto Normativo NSR10, presentacion 2025
PDF
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
PDF
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
PDF
TESTAMENTO DE DESCRIPTIVA ..............
PPTX
MODULO 2. METODOLOGIAS PARA ANALISIS DE RIESGOS 2da Parte.pptx
PDF
Perfilaje de Pozos _20250624_222013_0000.pdf
DOCX
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
PPTX
Gestion de seguridad y salud ocupacional.pptx
PDF
Primera formulación de cargos de la SEC en contra del CEN
PDF
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
Cumplimiento normativo y realidad laboral
Electricidad-Estatica-Peligros-Prevencion.pdf
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
Informe Estudio Final Apagon del 25 de febrero
5 Presentación de PowerPointGENERACIÓN DESECHOS UIS 18-02-2023 (1).pdf
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
357161027-seguridad-industrial-diapositivas-ppt.ppt
S15 Protección de redes electricas 2025-1_removed.pdf
1 CONTAMINACION AMBIENTAL EN EL PLANETA.pptx
Sustancias Peligrosas de empresas para su correcto manejo
Contexto Normativo NSR10, presentacion 2025
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
TESTAMENTO DE DESCRIPTIVA ..............
MODULO 2. METODOLOGIAS PARA ANALISIS DE RIESGOS 2da Parte.pptx
Perfilaje de Pozos _20250624_222013_0000.pdf
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
Gestion de seguridad y salud ocupacional.pptx
Primera formulación de cargos de la SEC en contra del CEN
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...

MongoDB.basededatos-nosql-basenorelacion

  • 1. No SQL y MongoDb
  • 3. Año 2015 Por cada minuto del día YouTube 300 hs. de Video Facebook 4,166.667 User share Twitte r Apple 347,222 tweets 51,000 Apps Download Whatsapp 347,222 Photos Uber Tinder SnapChat 694 pasajeros 590,278 Users Swipe 284,722 Snaps Población Total de Internet 3.200.000.000 de personas
  • 4. MASIFICACIÓN USO DE INTERNET SURGIMIENTO DE LAS REDES SOCIALES CRECIMIENTO EXPONENCIAL DE DISPOSITIVOS MÓVILES INTERFACES DE USUARIO MAS SIMPLES E INTUITIVAS CADA DÍA CREAMOS 2,5 QUINTILLONES DE BYTES DE DATOS. (2,5 Exabytes) EL 90% DE LOS DATOS DEL MUNDO DE HOY SE GENERARON EN LOS ÚLTIMOS 2 AÑOS PRINCIPALES CAMBIOS QUE SE PRODUJERON EN LA TECNOLOGÍA Y EN LOS ÚLTIMOS 15 AÑOS CAMBIOS EN LAS FORMAS DE PROCESAMIENTO FUERTE BAJA EN LOS COSTOS DE ALMACENAMIENTO
  • 6. Big Data es el sector de IT que hace referencia a grandes conjuntos de datos que por la velocidad a la que se generan, la capacidad para tratarlos y los múltiples formatos y fuentes, es necesario procesarlos con mecanismos distintos a los tradicionales. DEFINIENDO BIG DATA BIG DATA “Volumen masivo de datos, tanto estructurados como no-estructurados, los cuales son demasiado grandes y difíciles de procesar con las bases de datos y el software tradicionales." (ONU, 2012)
  • 7. En ambientes tradicionales de BI y DW primero se generan los requerimientos y luego las aplicaciones. Dicho de otra forma, los requerimientos direccionan las aplicaciones. En Big Data es al revés, ya que se utiliza la exploración de datos libre para generar hipótesis para encontrar un patrón BIG DATA
  • 8. fuente: forrester research. global big data survey El costo es un factor en muchos casos. Las tecnologías utilizadas en Big Data son más económicas que las tradicionales. ¿ CUÁLES DE LAS 4 Vs TIENEN MAYOR INFLUENCIA ? Volume n Velocidad Variedad ”Veracidad ”
  • 10. NOSQL DATABASE ¿ Qué es NoSQL ? Sistemas de gestión de bases de datos que difieren del modelo clásico de bases de datos relacionales: no usan SQL como lenguaje de consulta, los datos almacenados no requieren estructuras fijas como tablas, no garantizan consistencia plena y escalan horizontalmente.
  • 11. NOSQL DATABASE TYPES Orientadas a columnas Este tipo de bases de datos están pensadas para realizar consultas y agregaciones sobre grandes cantidades de datos. Funcionan de forma parecida a las bases de datos relacionales, pero almacenando columnas de datos en lugar de registros. De clave-valor Estas son las más sencillas de entender. Simplemente guardan tuplas que contienen una clave y su valor. Cuándo se quiere recuperar un dato, simplemente se busca por su clave y se recupera el valor. En grafo Basadas en la teoría de grafos utilizan nodos y aristas para representar los datos almacenados. Son muy útiles para guardar información en modelos con muchas relaciones, como redes y conexiones sociales Orientadas a documentos Son aquellas que gestionan datos semi estructurados. Es decir documentos. Estos datos son almacenados en algún formato estándar como puede ser XML, JSON o BSON.
  • 15. Document Based • Las bases de datos almacenan y recuperan documentos que pueden ser XML, JSON, BSON, etc. • Los documentos almacenados son similares unos con otros pero no necesariamente con la misma estructura.
  • 16. MongoDB • Su nombre surge de la palabra en inglés “humongous” (que significa enorme). • MongoDB guarda estructuras de datos en documentos tipo JSON (JavaScript Object Notation) con un esquema dinámico. • Internamente MongoDB almacena los datos en formato BSON (Binary JavaScript Object Notation). • BSON está diseñado para tener un almacenamiento y velocidad más eficiente.
  • 17. El Origen 2007 2009 2011 2016 La empresa 10gen lo desarrolla cuando estaba desarrollando una Plataforma cómo servicio (PaaS - Platform as a Service). Similar a Google App Engine. En este año MongoDB es lanzado como Producto. Es publicado bajo licencia de código abierto AGPL. Se lanza la versión 1.4 considerada como una Base de Datos lista para producción. Actualmente MongoDB está por la versión 3.2.8 y es la Base de Datos NoSQL con mayor popularidad. Bases de Datos de Propósitos Generales Bases de Datos Documentales Bases de Datos De Código Abierto
  • 18. Terminología RDBMS vs. Document Based (MongoDB) RDBMS MongoDB Database instance MongoDB instance Database / Schema Database Table Collection Row Document Rowid _id Join Dbref
  • 19. Modelado de Relaciones entre Documentos Relaciones Uno a Uno con documentos embebidos Modelo Normalizado Colección Personas { _id: “u0001", nombre: “Juan Martín Hernandez“, direccion:{calle: “Malabia 2277", ciudad: “CABA", provincia: “CABA", codPostal: "1425" } } Si la dirección es un dato frecuentemente consultado junto con el Nombre de la persona, la mejor opción será embeber la dirección en los datos de la persona. Colección Personas { _id: “u0001", nombre: “Juan Martín Hernandez" } Colección Direcciones { persona_id: “u0001", calle: “Malabia 2277", ciudad: “CABA", provincia: “CABA", codPostal: "1425" } Con una sola consulta podríamos recuperar toda la información de una persona.
  • 20. Modelado de Relaciones entre Documentos { _id: “u0001", nombre: “Juan Martín Hernandez“, direcciones:[{calle: “Malabia 2277", ciudad: “CABA", provincia: “CABA", codPostal: "1425" }, {calle: “Av. Santa Fe 3455", ciudad: “Mar del Plata", provincia: “Buenos Aires", codPostal: “7600" } ] Si las direcciones son un dato frecuentemente consultado junto con el Nombre de la persona, la mejor opción será embeber las direcciones en los datos de la persona. Colección Personas Relaciones Uno a Muchos Con Documentos Embebidos Modelo Normalizado Colección Personas { _id: “u0001", nombre: “Juan Martín Hernandez" } Colección Direcciones { persona_id: “u0001", calle: “Malabia 2277", ciudad: “CABA", provincia: “CABA", codPostal: "1425" } {persona_id: “u0001", calle: “Av. Santa Fe 3455", ciudad: “Mar del Plata", provincia: “Buenos Aires", codPostal: “7600" } } Con una sola consulta podríamos recuperar toda la información de una persona.
  • 21. Modelado de Relaciones entre Documentos Relaciones Uno a Muchos Con Documentos Referenciados Colección libros {titulo: "MongoDB: The Definitive Guide", autor:[ "K. Chodorow", "M. Dirolf" ], fechaPublicacion: ISODate("2010-09-24"), paginas: 216, lenguaje: "Ingles", editor: { nombre: "O'Reilly Media", anioFundacion: 1980, USAState: "CA" } } {titulo: "50 Tips and Tricks for MongoDB…", autor: "K. Chodorow", fechaPublicacion: ISODate("2011-05-06"), paginas: 68, lenguaje: “Ingles", editor: { nombre: "O'Reilly anioFundacion: USAState: "CA" Media", 1980, } } Colección Editores { nombre: "O'Reilly Media", anioFundacion: 1980, USAState: "CA“, libros: [987654321,1234567890] } Colección Libros {_id: 987654321 titulo: "MongoDB: The Definitive Guide", autor:[ "K. Chodorow", "M. Dirolf" ], fechaPublicacion: ISODate("2010-09-24"), paginas: 216, lenguaje: "Ingles“} {_id: 1234567890 titulo: "50 Tips and Tricks for MongoDB…", autor: "K. Chodorow", fechaPublicacion: ISODate("2011-05-06"), paginas: 68, lenguaje: “Ingles"} Cuando usamos referencias, el crecimiento de las relaciones determinan donde conviene almacenar la referencia. Por ej. Si el nro. de libros por editor es chico y no crecerá mucho, este modelo podría ser conveniente.
  • 22. Modelado de Relaciones entre Documentos Colección libros {titulo: "MongoDB: The Definitive Guide", autor:[ "K. Chodorow", "M. Dirolf" ], fechaPublicacion: ISODate("2010-09-24"), paginas: 216, lenguaje: "Ingles", editor: { nombre: "O'Reilly Media", anioFundacion: 1980, USAState: "CA" } } {titulo: "50 Tips and Tricks for MongoDB…", autor: "K. Chodorow", fechaPublicacion: ISODate("2011-05-06"), paginas: 68, lenguaje: “Ingles", editor: { nombre: "O'Reilly anioFundacion: USAState: "CA" Media", 1980, } } Relaciones Uno a Muchos Con Documentos Referenciados Colección Editores { _id: "oreilly" nombre: "O'Reilly Media", anioFundacion: 1980, USAState: "CA“, } Colección Libros {_id: 987654321 titulo: "MongoDB: The Definitive Guide", autor:[ "K. Chodorow", "M. Dirolf" ], fechaPublicacion: ISODate("2010-09-24"), paginas: 216, lenguaje: "Ingles“, idEditor: "oreilly"} {_id: 1234567890 titulo: "50 Tips and Tricks for MongoDB…", autor: "K. Chodorow", fechaPublicacion: ISODate("2011-05-06"), paginas: 68, lenguaje: “Ingles“, idEditor: "oreilly"} En cambio si queremos evitar Arreglos mutables y crecientes podemos implementar una referencia al editor dentro de cada libro.
  • 23. En qué casos usarlas ? Logging de Eventos • las bases de datos basadas en documentos puede loguear cualquier clase de eventos y almacenarlos con sus diferentes estructuras. • Pueden funcionar como un repositorio central de logueo de eventos. CMS, blogging • su falta de estructura predefinida hace que funcionen bien para este tipo de aplicaciones. Web-analytics / Real-Time analytics • Almacenar cantidad de vistas a una página o visitantes únicos. Commerce • A menudo requieren tener esquemas flexibles para los productos y órdenes
  • 25. Instalación y configuración 1. lnstalar MongoDB 2. Actualizar variable Path • Buscar el directorio donde se instaló MongoDb (por ejemplo C:Program FilesMongoDBServer3.2bin) • Añadir MongoDb a la variable Path (Inicio > Equipo > Propiedades del Sistema > Opciones avanzadas) 3. Crear una carpeta (con los permisos adecuados) para guardar la base de datos • C:/Data/Db es la carpeta default para MongoDb • Si quisiéramos tener otro path debemos ejecutar desde consola: mongod --dbpath ruta/nueva-a/la-carpeta-db 4. Abrir conexión desde Consola de Windows (Símbolo del Sistema) ejecutando el comando mongod 5. Mantener la consola de conexión abierta y abrir una nueva consola para operar sobre la base
  • 28. Caso Práctico Armaremos un modelo que contenga la información de las facturas y todos sus ítems, detallando el nombre, apellido, cuit y región del cliente al que se le emitió la factura, para poder realizar consultas desde un portal de facturas de la forma más performante posible.
  • 29. UTILIZACIÓN DE MONGODB DESDE LA LÍNEA DE COMANDOS
  • 30. Operaciones sobre una colección Ver todos los comandos: db.facturas.help() Ejemplos: Ver todos los documentos: db.facturas.find() Cantidad de documentos en la colección: db.facturas.count() Espacio ocupado por los documentos de la colección: db.facturas.dataSize()
  • 31. Operaciones sobre una colección Inicio de servidor mongo por consola: C:>mongod Inicio de cliente mongo por consola: C:>mongo Ver bases de datos show dbs Ver colecciones show collections
  • 32. Caso Práctico Insertar db.facturas.insert({"_id": ObjectId("55e4a6fabfc68c676a041063"),"cliente": {"apellido":"Malinez","cuit":2.740488484e+09,"nombre":"Marina","region":"CENTRO"},"condPago":"CONTADO","f echaEmision": ISODate("2014-02-20T00:00:00.000Z"),"fechaVencimiento": ISODate("2014-02- 20T00:00:00.000Z"),"item":[{"cantidad":11.0,"precio":18.0,"producto":" CORREA 12mm"}, {"cantidad":1.0,"precio":490.0,"producto":"TALADRO 12mm"}],"nroFactura":1000.0}) db.facturas.insert({"_id": ObjectId("55e4a6fbbfc68c676a041064"),"cliente": {"apellido":"Zavasi","cuit":2.038373771e+09,"nombre":"Martin","region":"CABA"},"condPago":"30 Ds FF","fechaEmision": ISODate("2014-02-20T00:00:00.000Z"),"fechaVencimiento": ISODate("2014-03- 22T00:00:00.000Z"),"item":[{"cantidad":2.0,"precio":134.0,"producto":"CORREA 10mm"}],"nroFactura":1001.0}) db.facturas.insert({"_id": ObjectId("55e4a6fbbfc68c676a041065"),"cliente": {"apellido":"Zavasi","cuit":2.038373771e+09,"nombre":"Martin","region":"CABA"},"condPago":"CONTADO","fecha Emision": ISODate("2014-02-20T00:00:00.000Z"),"fechaVencimiento": ISODate("2014-02- 20T00:00:00.000Z"),"item":[{"cantidad":6.0,"precio":60.0,"producto":"TUERCA 2mm"}, {"cantidad":12.0,"precio":134.0,"producto":"CORREA 10mm"}],"nroFactura":1002.0})
  • 33. Operaciones sobre una colección Buscar documento para cliente con determinado apellido db.facturas.find({"cliente.apellido":"Malinez"}) Consultar los primeros dos documentos db.facturas.find().limit(2) Consultar documentos salteando los primeros dos documentos db.facturas.find().skip(2) Visualización mejorada db.facturas.find().pretty()
  • 34. Operaciones sobre una colección Consultar dos documentos, salteando los dos primeros documentos de una colección, mostrándolos en un modo mejorado. db.facturas.find().limit(2).skip(2).pretty() Consultar documentos sólo mostrando algunos datos db.facturas.find({"cliente.apellido":"Malinez"}, {"cliente.cuit":1, "cliente.region":1}) Buscar documento para cliente con dos criterios Para Zavasi teníamos dos documentos: db.facturas.find({"cliente.apellido":"Zavasi"}).pretty() Agregamos un criterio: db.facturas.find({"cliente.apellido":"Zavasi", "nroFactura":1001.0}).pretty() Ordenamiento en forma ascendente db.facturas.find().sort({nroFactura:1}) Ordenamiento en forma descendente db.facturas.find().sort({nroFactura:-1})
  • 35. Consultando una Colección – Criterios de Selección Operadores $ $gt $gte $lt $lte $not $or $in $nin $exist $regex Busca las facturas cuya fecha de emisión sea mayor o igual al 24/02/2014. Busca la cantidad de facturas cuyo Nro. de Factura sea mayor que 1465 db.facturas.find( { nroFactura : {$gt:1465} } ).count() db.facturas.find({fechaEmision:{$gte: ISODate("2014-02-24T00:00:00Z")} } )
  • 36. Insertando un Documento El método insert tiene la siguiente sintaxis: Evalúa si existe un próximo documento. Devuelve True o False. . db.collection.insert ( <document or array of documents>, { writeConcern: <document>, ordered: <boolean> } ) Ejemplo, inserción de un documento sin _id: db.facturas.insert({nroFactura:30003,codPago:”CONTADO”}) _id: Document Id único autogenerado writeconcern Es opcional, lo veremos en la parte de consistencia. Ordered lo vemos en un par de slides
  • 37. Insertando un Documento Ejemplo, inserción de un documento con _id: db.facturas.insert({_id:23094776, nroFactura:30004,codPago:”CONTADO”}) Al crear una colección, el motor de BD crea un índice único sobre el atributo _id.
  • 38. Borrando Documentos Operación Remove Sintaxis db.<collection_n ame>.remove({crit erio_de_eliminaci ón}) Esta operación eliminará los documentos que cumplan con el criterio definido. Warning: Remove es una operación de tipo multi-documento!! Recomendación: Es conveniente antes de borrar hacer un find o un count para asegurarse lo que quiero borrar. Ejemplo 1 – Borrado de TODOS LOS DOCUMENTOS de una colección db.accesos.remove({}) Elimina TODOS LOS ELEMENTOS de una colección.
  • 39. Borrando Documentos Ejemplo 2 – Remove por clave primaria db.updtst.remove({_id:100}) Elimina el documento cuyo _id sea 100 de la colección updtst. Ejemplo 3 – Remove por un criterio con múltiples documentos que aplican db.updtst.remove({items:88})
  • 40. Modificando Documentos Permite modificar uno o más documentos de una colección. Por default modifica sólo un documento. db.coleccion.update ( {clausula_where}, {documento_o_expresión_a_modificar}, { upsert, multi, writeconcern} ) upsert (true o false)Si está configurado en “True” significa que realizará un update si existe un documento que concuerda con el criterio, o un insert si no existe algún documento que concuerde con el criterio. El valor default es “false”, en este caso no realiza un insert cuando no existe documento que concuerde con el criterio. multi (true o false) Es opcional. Si es configurado en true, el update realiza la actualización de multiples documentos que concuerdan con el criterio cláusula_where. Si es configurado en false, modifica solo un documento. El valor default es false. Sólo actúa en updates parciales con operadores $. writeconcern Es opcional, lo veremos en la parte de consistencia.
  • 41. Modificando Documentos Update Totales/Completos Se realiza el update del documento completo, reemplazando el mismo. Update Parciales Operadores Operadores sobre cualquier atributo $set $unset $inc Permite modificar el valor de un atributo, o agregar un nuevo atributo al documento. Permite eliminar un atributo de un documento. Incrementa o decrementa el valor de un atributo ( n ó –n) Operadores sobre Arrays $push $addtoSet $pushAll $pop $pull $pullAll Agrega un elemento a un Array o crea un Array con un elemento. Agrega un elemento al Array solo si no existe en el Array. Agrega varios elementos a un Array con los valores indicados o crea un Array con esos elementos. (Operación Múltiple) Elimina un elemento de un Array por sus extremos, permitiendo eliminar el primer elemento (-1)o el último (1). Elimina todos los elementos de un Array que contengan el valor indicado. Elimina todos los elementos de un Array que contengan alguno de los valores indicados. (Operación Múltiple)
  • 42. Modificando Documentos Completos Update Totales/Completos db.updtst.update({x:2},{"x" : 2, "y" : 999 }) Este comando reemplaza el primer documento encontrado por con valor x:2 por este otro en donde el elemento y:999, no tengo el control de cuál estoy modificando, lo correcto era modificar poniendo en el criterio el _id.
  • 43. Modificando Documentos Parciales Update Parciales Ejemplo 1 – Operador $set – Modificación de un valor de un atributo existente Dado el siguiente documento: db.updtst.update({_id:100},{$set : {x:100}}) Realizará una modificación del valor de atributo x a 100
  • 44. Modificando Documentos Parciales Update Parciales Otro Ejemplo – Operador $set – Opción multi – Agregar un atributo en todos los documentos db.updtst.update({x:2},{$set : {z:”NUEVO”}},{multi:true}) Este reemplaza en TODOS los documentos encontrados con valor x:2 agregando el atributo z:”NUEVO”