Taller MongoDB. 1er Cuatrimestre 2016 Base de datos

Documentos relacionados
1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

MongoDB Up & Running

GESTORES GESTORES DE BASES DE DATOS

Bases de Datos. Diseño y Programación Avanzada de Aplicaciones. Curso

MS_2778 Writing Queries Using Microsoft SQL Server 2008 Transact-SQL

Bases de Datos 2. Teórico

Modelo Relacional. El modelo relacional...1 El modelo entidad relación (que vimos ayer) es un modelo conceptual que sirve

Tipos de datos estructurados

mysql Departamento de Lenguajes y Computación Universidad de Almería mysql Contenidos

Curso Implementing and Maintaining Microsoft SQL Server 2008 Reporting Services (6236)

Trabajos de Ampliación. Bases de datos NoSQL.

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

ASP.NET MVC 3 ofrece una serie de herramientas y funciones para construir una aplicación utilizando sólo la definición de los objetos del modelo.

Reporting (objeto Query)

SIIGO WINDOWS. Devolución en Ventas. Cartilla I

Diseño e Implementación SQL Server

Unidad IV: Programación del lado del cliente

Introducción a y Spring Data

Sistemas de Información

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

El Modelo Relacional. Carlos A. Olarte BDI

Guía del Curso Experto en Microsoft Excel 2016, VBA y Business Intelligence

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

PROGRAMACIÓN VISUAL III (Power Builder)

UNIDAD 2: Bases de Datos en Visual Basic

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

20483 Programación en C#

Acceso a bases de datos MySQL con PHP

INDICE Capitulo 1. Introducción Capitulo 2. Modelo entidad relación Capitulo 3. Modelo Relacional Capitulo 4. Lenguajes relacionados comerciales

Diseño de BD Objeto- Relacionales

Bases de Datos: Structured Query Language (SQL)

Modelo relacional. El modelo relacional

PERSISTENCIA DE OBJETOS EN BASE DE DATOS RELACIONALES FRANCISCO LEÓN NAJERA CÓDIGO: CEDULA:

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

Diseña y Administra Bases de Datos Guía de Estudio

Procedimientos almacenados en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

ARRAYS ASOCIATIVOS JAVASCRIPT? MAPS? RECORRER PROPIEDADES DE OBJETOS CON FOR IN. EJEMPLOS EJERCICIOS RESUELTOS. (CU01146E)

BASES DE DATOS - SQL. Javier Enciso

PHP/Mysql Pasos fundamentales

Gestion y Modelación de Datos Introducción

Curso Querying Microsoft SQL Server 2014 (20461)

Universidad Tecnológica de los Andes. Ing. Hesmeralda Rojas Enriquez [GUÍA RATIONAL ROSE] Usando UML

PRUEBA TIENDA MAGENTO

BASES DE DATOS AVANZADAS Transacciones en MYSQL

Web Map Service (WMS)

El Modelo Relacional de Bases de Datos

CC BASES DE DATOS PRIMAVERA Clase 4: Modelo Relacional (III) Aidan Hogan

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES CUAUTITLÁN LICENCIATURA EN INFORMÁTICA

Datos persistentes en IOS. Luis Montesano & Ana Cristina Murillo

La Herramienta Redmine para la Administración de Proyectos

MANUAL DE USUARIO INTERFACES. En esta sección se relacionan los componentes que intervienen para los procesos de la generación de Interface contable.

CÓMO CREAR UNA BASE DE DATOS MySQL PARA PRACTICAR CON PHP. ACCESO AL GESTOR phpmyadmin. (CU00839B)

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

Bases de Datos OTROS ASPECTOS MODELO E-R

PHP: Lenguaje de programación

Acceso a Datos para soluciones altamente escalables usando SQL, NoSQL y Almacenamiento políglota

DML en SQL. Consultas sencillas usando el DML de SQL

Análisis y modelado de sistemas de software. Diseño Persistencia de objetos. Blanca A. Vargas Govea

Grupo de Ingeniería del Software. Conceptos básicos de formularios HTML

EDUComputacion. Te ofrece el curso de:

Introducción a las Bases de Datos y al Modelo Relacional

Tema 4. SQL. Juan Ignacio Rodríguez de León

Modulo I: Introducción Gestores de Bases De Datos

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

VISUAL BASIC.NET. NIVEL COMPLETO

ST31_Querying Microsoft SQL Server

INTRODUCCIÓN A BASE DE DATOS. Excel - Access

BIG DATA. Jorge Mercado. Software Quality Engineer

Carlos A. Olarte Ligaduras de Integridad y Restricciones sobre la BD

Extensión K2B proyectos para Smart Devices

PASOS PARA OPTIMIZAR SU CENTRAL DE MONITOREO

Administración de dispositivos móviles

Tema 3. Aplicaciones de Tipo Consola

TABLAS WORD La tercer opción es usar el vínculo Dibujar Tabla, aquí se dimensiona la tabla dibujándola con el mouse

5.3 CREAR FORMULARIOS

GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL

testo Saveris Web Access Software Manual de instrucciones

Administración de SQL Server 2016

Manuales para Usuario

ESCUELA DE INFORMÁTICA

Tipos de solicitud de pedido

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES)

INTRODUCCIÓN DE DATOS EN LA HOJA DE CÁLCULO

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Programación estructurada

PASOS PARA CREAR FUNCIONES CON VBA

Modelos de Datos. Modelo Entidad-Relación

DAVID DIAZ VALDIVIA INFORMATICA APLICADA I

EJERCICIO 26 DE EXCEL

PROGRAMACION ORIENTADA A OBJETOS EN C++

Diseño del proceso de lubricación - (LPD)

Como usar Zend_Auth del Zend Framework

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

Objetivos y Temario CURSO MySQL 5

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

PROYECTO SMART DESARROLLO SISTEMA GESTOR DE CONTENIDOS Y SERVIDOR DE ENTREGA DE CONTENIDOS DESCRIPCIÓN DE LA ARQUITECTURA

Transcripción:

Taller MongoDB 1er Cuatrimestre 2016 Base de datos

Planificación Breve introducción a MongoDB Definir esquema a partir de un DER. Aplicar desnormalización. Crear los distintos documentos. Insertar, eliminar, modificar. Realizar consultas. Consultas de agregación Aplicar Map Reduce Presentamos el TP2!! Devolvemos los parciales

MongoDB

MongoDB Orientado a Documentos Gran soporte de consultas Replication Balanceo de carga - Sharding File Storage Map Reduce Server-side JavaScript execution

MongoDB As of July 2015, MongoDB is the fourth most popular type of database management system, and the most popular for document stores. También tiene críticas! Concurrencia Memoria Esquema no definido

MongoDB En una misma colección, los documentos pueden no tener un mismo esquema:

MongoDB Tal vez no siempre es la mejor opción: No soporta transacciones Nuestra aplicación debería simularlas. Solo garantiza operaciones atómicas a nivel de documento. No existen JOINS Para consultar datos relacionados tenemos que hacer más de una consulta. Funciones de agregación No tienen la potencia de un sistema relacional. Alternativas: Aggregation Framework, Map Reduce.

Consola santiago@mint:~$ mongo MongoDB shell version: 2.4.9 connecting to: test >

Consola show databases use <db> show collections

Consola Además de poder ejecutar los métodos de MongoDB, tenemos un intérprete de Javascript para ampliar la capacidad de trabajo: >s=0;for(i=0;i<5;i++) s+=i; >s 6

Diagrama

Desnormalización Qué debemos desnormalizar? En qué lugares desnormalizamos? Hay una sola forma de desnormalizar?

Desnormalización Haciendo memoría: Las colecciones de MongoDB no necesitan definir un esquema. Nuestra aplicación debería definirlo. Tenemos que normalizar? Desnormalizar? Un híbrido entre ambas? Estas decisiones pueden afectar el rendimiento de la aplicación. El esquema lo definen las consultas que vayamos a realizar con más frecuencia No olvidar la escalabilidad a la hora de diseñar: MongoDB es especialmente útil en sistemas que la requieran. Contamos con replicación y sharding.

Desnormalización

Insertar datos Qué utilizamos como primary key? como foreign key? Quién es el responsable del ingreso de datos? Quien es el responsable de respetar el esquema?

Metodos de MongoDB

Operaciones sobre Collections db.collection.find() db.collection.insert() db.collection.update()

Operaciones sobre Collections

Consultas Tomar todos los alumnos entre 18 y 22 años Devolver los alumnos del curso número "55" Contabilizar la cantidad de profesores por cargo La carrera que tenga más de 2 alumnos entre 23 y 30 años

Consultas Tomar todos los alumnos entre 18 y 22 años

Consultas Tomar todos los alumnos entre 18 y 22 años db.alumnos.find( {edad: {"$gt": 18, "$lt": 22}})

Consultas Devolver los alumnos del curso número 55

Consultas Devolver los alumnos del curso número 55 db.alumnos.find( {"cursos": {$elemmatch: { nro: 55}}} )

Consultas Devolver los alumnos del curso número 55 db.alumnos.find( {"cursos": {$elemmatch: { nro: 55}}} La cantidad de alumnos del curso db.alumnos.count( {"cursos": {$elemmatch: { nro: 55} } })

Consultas Contabilizar la cantidad de profesores por cargo Cómo hacemos agregación?

Consultas Agreggate

Consultas Aggregation Pipeline Operators

Consultas Contabilizar la cantidad de profesores por cargo

Consultas Contabilizar la cantidad de profesores por cargo db.profesores.aggregate([{ $group: { _id: "$cargo", total: {$sum: 1}} }])

Consultas La carrera que tenga más de 2 alumnos entre 23 y 30 años

Consultas La carrera que tenga más de 2 alumnos entre 23 y 30 años db.alumnos.aggregate([ {$match: {"edad": { $lt: 30, $gt: 23}}}, {$group: { _id: "$carrera", total: {$sum: 1}} }, {$match: {"total": {$gt: 2}}} ])

Map Reduce Se define varios pasos utilizando funciones: (opcional) query: filtra los documentos por un atributo. map: función que emite una tupla <key, value> por cada documento. Agrupa todos los key y se devuelve la lista de values. reduce: función que toma cada <key, [value]> y devuelve el resultado.

Map Reduce

Consulta 1 Devolver el nombre de los Alumnos con más de 5 teléfonos

Consulta 1 Devolver el nombre de los Alumnos con más de 5 teléfonos Map: filtro cada alumno por su cantidad de telefonos. Si es mayor a 5, emito <Lu, Nombre> Reduce: Devuelvo cada alumno

Consulta 1 Devolver el nombre de los Alumnos con más de 5 teléfonos var m = function(){ if(this["telefonos"].length>5) {emit(this["lu"],this["nombre"]) }} var r = function(key, values){ return values[0]} db.alumnos.mapreduce(m, r, {out: "map_res"})

Consulta 2 La cantidad de Profesores que hay por cargo

Consulta 2 La cantidad de Profesores que hay por cargo Map: emitimos <cargo, 1> Reduce: sumamos todos los elementos de la lista

Consulta 2 La cantidad de Profesores que hay por cargo var m = function(){emit(this["cargo"],1)} var r = function(key, values){ return Array.sum(values)} db.profesores.mapreduce(m, r, {out: "map_res"})

Consulta 3 Cantidad de alumnos totales en cursos obligatorios.

Consulta 3 Cantidad de alumnos totales en cursos obligatorios. Map: si es curso obligatorio emitimos <tipo de curso, #alumnos> Reduce: sumamos cantidad de alumnos.

Consulta 3 Cantidad de alumnos totales en cursos obligatorios. var m = function(){ if(this["tipo"] =="obligatorio"){ emit(this["tipo"],this["alumnos"].length)} } var r = function(key, values){ return Array.sum(values) }

Consulta de tarea Devolver los Alumnos más viejos por cada curso.