Download "la dirección de" programador
Document related concepts
Transcript
Desarrollo y servicios web Luisa Fernanda Rincón Pérez 2016-1 Sesión 24. Bases de datos NOSQL – Introducción MongoDB Luisa Fernanda Rincón Pérez 2015-1 ¿Qué haremos hoy? 1. Bases de datos NoSQL 2. Tipos bases de datos NOSQL 3. MongoDB ¿Para qué sirven las bases de datos NoSQL? Sirven para manejar y analizar grandes cantidades de información. No son un reemplazo de SQL tradicional. Son una alternativa Hace parte del concepto de BIGDATA -Clics de los usuarios -Selecciones anteriores ¿Qué datos no son estructurados? Textos Social media Mobile data Web site content Audio files • Ejm llamadas de call centers Los datos en el mundo http://www.signiant.com/blog/move-large-files-fastovercoming-the-challenge-of-transferring-huge-unstructureddata-sets/ ¿Cómo se guardaba la información en bd relacionales? Información distribuida en muchas tablas En NOSQL no precisa de un sistema de tablas y relaciones entre ellas. ¿Por qué NoSQL? http://callcenterinfo.tmcnet.com/analysis/articles/156051-what-att-purchase-tmobile-means.htm En el contexto de BigData los sistemas prescinden de la robustez de información en pos de una mayor agilidad en las consultas. Ahora se devuelven gran cantidad de datos con millones de registros involucrados. NoSQL / Bd relacionales Dato para una bd NO-SQL Dato para una bd relacional En las bases de datos tradicionales ¿Qué son las bases de datos NOSQL? No cumplen las restricciones básicas del modelo relacional • No permite JOINS • No SCHEMAS • No garantizan ACID (atomicidad, consistencia, aislamiento y durabilidad) • No usan SQL como lenguaje de consulta Sistemas de almacenamiento no relacionales No tienen un conjunto de tablas relacionadas entre sí de una manera ordenada y lógica. Duplicidad de información SI, pero ya no es un problema https://www.nttreview.jp/archive/ntttechnical.php?contents=ntr201212fa3.html ¿Qué son las bases de datos NOSQL? https://www.nttreview.jp/archive/ntttechnical.php?contents=ntr201212fa3.html NoSQL características (BASE) Basic availability • El almacén funciona la mayoría del tiempo gracias al almacenamiento distribuido y replicado, pero no necesariamente 24/7 Soft-sate • Los almacenes no tienen porque ser consistentes ni sus réplicas en todo momento. • El programador puede verificar esa consistencia. • Ejm. Si se cambia la dirección de correo, es posible que algún nodo mantenga la información desactualizada Eventual consistency • La consistencia se da eventualmente. En el caso del correo. En algún momento todos los nodos volverán a tener la misma información. Propiedades adicionales bd NOSQL Sharding Particionamiento horizontal: Los documentos de la base de datos son partidos para que se encuentren en diferentes nodos. ( Balancear la carga entre los nodos) Replication La misma información se replica en diferentes nodos para garantizar disponibilidad. Puede hacerse en forma de maestro-esclavo y peer-to-peer Taxonomía NoSQL Clave – valor Taxonomía NoSQL Documentos Grafos Taxonomía NOSQL- clave/valor Es posible facilmente leer un registro de la base de datos pero no es posible buscar datos entre múltiples registros [1]. Registros repartidos entre muchos nodos Colección de pares clave/valor Difícil de mantener clave única cuando aumentan los datos Cada clave es única Soporta put, get y delete sobre los valores de la llave Taxonomía NOSQL- orientadas a documentos El valor asociado a cada llave contiene datos estructurados o semiestructurados, también llamados documentos Cada documento puede tener cualquier número de campos de cualquier valor Modelo de datos: colecciones de documentos (JSON, XML, BSON) Taxonomía noSQL-orientadas a grafos Lo más importante son las relaciones de los datos. Modelan los datos como nodos y aristas de grafos. Útiles para redes sociales Ejemplo base de datos NOSQL Fuente. http://www.sitepoint.com/using-a-graphdatabase-with-ruby-part-i-introduction/ Sql RELACIONAL Taxonomía noSQL-orientadas a grafos Tomado de [2] Algunas bases de datos NOSQL ¿Cuándo usar una base de dato NOSQL? • Se tienen datos no estructurados o semiestructados • Es necesario cambiar los esquemas de la base de datos rápidamente de acuerdo a las necesidades del negocio. • Es necesario consolidad muchas fuentes de datos sin adaptarlas al mismo esquema Mongo DB https://www.youtube.com/wat ch?v=CvIr-2lMLsk ¿Qué es MongoDB? • Base de datos NoSQL orientada a documentos • Usa JSON -BSON y tiene un lenguaje propio de consultas. • Implementado en C++ • Usada por SourceForge, Bit.ly, Foursquare o GitHub • URL: http://www.mongodb.org/ ¿Por qué Mongo DB? Fuente: http://db-engines.com/en/ranking Motor NOSQL más popular actualmente ¿Cuáles son las características de Mongo DB? • • • • Consultas en lenguaje propio Indexación como en bd relacionales JSON como formato de datos Replicación maestro - esclavo • El maestro puede ejecutar comandos de lectura y escritura. • El esclavo puede copiar los datos del maestro y sólo se puede usar para lectura – El esclavo tiene la habilidad de poder elegir un nuevo maestro en caso del que se caiga el servicio con el maestro actual. • Escalabilidad horizontal que se refiere a aumentar el número de componentes. Descargar MongoDB http://www.mongodb.org/ http://www.mongodb.org/downloads http://www.mongodb.org/downloads Guía de instalación: http://docs.mongodb.org/manual/installation/ Instalación 1. Descargar, descomprimir, e instalar. Mongo DB requiere una carpeta Data para almacenar los datos Directorio por defecto de los datos C:\data\db . 2. Iniciar el proceso Si no se creó la carpeta correcta aparece el error Instalación • 3. Abrir mongo.exe Mongo corre por defecto en el puerto Probar en 27017 consola Conceptos básicos en MongoDB Representación Binaria de JSON Utilidades de MongoDB mongo mongostat •Shell javascript interactivo de consulta •Estadísticas de una instancia de Mongo DB en ejecución mongo import/mongo •Facilita importar/exportar datos export mongodump/ •Exportar y restaurar en binario la base de datos mongorestore Ejemplo documento MongoDB Fuente: http://docs.mongodb.org/manual/core/crud-introduction/ Ejemplo documento MongoDB (2) http://www.tutorialspoint.com/mongodb/mongodb_quick_ guide.htm Algunos comandos de MongoDB ejecutados desde la consola de MongoDB Crear una base de datos Ver lista bases de datos ( se requiere insertar al menos un dato para ver en la lista serviciosWebDB) Algunos comandos de MongoDB Crear colección db.createCollection Insertar datos db.createCollection(“Students”) Insertar datos en la colección Insertar datos db.Students.insert({name: “Daniel”, lastname: “lopez”}) ¿Cómo se insertan valores en MongoDB? Fuente: http://docs.mongodb.org/manual/core/crud-introduction/ Algunos comandos de MongoDB Consultar colecciones disponibles db.getCollectionNames(); ¿Cómo se seleccionan datos para consultar/borrar/modificar/..? -- SELECTORES Se comportan como la cláusula WHERE de una instrucción SQL. Limitan los datos que se requieren. Son objetos JSON ¿Qué selectores existen? Selector base { field: value} {name: ‘pepe’} Selector filtro {field: {filtro:valor}} Filtros: $gt, $gte,$lt,$lt3,$ne $exists: se encuentra el campo {name : {$exists: true }} $in: valores para hacer match. Arreglo {name: {$in: [‘nomUno, nomDos’] }} $or {name: {$or: {filro1}, {filtro2 }} Buscar por id {_id: ObjectId(‘id’)} Otros filtros Object_id {name: {$ne: ‘pepe’}} Tutorial interactivo ¿Qué incluye? Consultas Inserción Condi-cional $exist Id de los documentos http://mongly.openmymind.net/tutorial/index Eliminación ¿Cómo se usan los selectores en el comando find? 1: Ascendente -1: Descendente Fuente: http://docs.mongodb.org/manual/core/crud-introduction/ Retorna un cursor que sirve para recorrer los documentos ¿Cómo se hacen consultas en MongoDB? ¿Qué retornan las consultas? – Un cursor Actualizar documentos - update Todo el documento – sobrescribe lo que tenía si no se indica el $set, sino se usa el $set se debe poner todo el documento de nuevo. Actualizar documentos upset Si el documento no está se inserta, y si sí está se actualiza. Es el tercer parámetro de update y se envía en true db.unicorns.update({name: 'Ulysee'}, {$inc: {vampires: 1}}, true); Actualizar múltiples documentos ( Cuarto parámetro) Al adicionar un true como cuarto parámetro se actualizan todos los documentos que cumplan con el criterio. Ejm db.unicorns.update({gender: 'm'},{ $push: { loves: 'orange'} },false, true); ¿Cómo se borran datos? - remove db.collectionName.remove({selector}) db.unicorns.remove({name:'Lois'}) No pasar selector remueve todos los elementos de la colección db.unicorns.remove() Conexión MongoDB en PHP Fuente: http://www.tutorialspoint.com/mongodb/mongodb_php.htm Descargar extensión, copiarla en la carpeta ext de php, adicionar línea en php.ini Conectar base de datos. Si no existe, Mongo crea una automáticamente Crear una colección Ejecución programa Insertar un documento Imprimir todos los documentos de una colección Borrar documentos Otras funciones findOne(), save(), limit(), skip(), sort() MongoLab Ahora mlab ¿Qué es MLab? ¿Cómo se puede hacer la conexión? Driver Mongo Conexión REST Referencias [1] Enterprise NOSQL for dummies. Charlie Brooks. 2014. MarkLogic Special Edition. [2] Neo4j web site http://neo4j.com/ [3] MongoDB web site https://www.mongodb.org/ [4] MongoLab. https://mongolab.com [5] http://nosql-database.org/