MongoDB la base de datos NoSQL

Embed Size (px)

DESCRIPTION

Conferencia dictada en el Auditorio del Area de Energia de la Universidad Nacional de Loja dentro del ciclo de conferencias organizado por los docentes de la asignatura de Bases de Datos para sus alumnos.

Citation preview

  • 1. Carrera de Ingeniera en SistemasUniversidad Nacional de LojaLa Base de Datos NoSQLMilton LabandaDepartamento de Desarrollo de Software UNL - 2012

2. Siempre va bien un poco de historia 1970 Aparecen las Bases de Datos Relacionales: Origen en las Universidades, costosas, necesitan normalizarse, se abstraen dela aplicacin 1980 Las Bases de Datos se hacen comerciales: Aparece SQL, prolifera el modelo Cliente Servidor 1990 El modelo Cliente/Servidor evoluciona: Arquitecturas de 3 y n capas, Internet y la Web 2000 Web 2.0: Social Media, e-commerce, hardware ms barato (en vez de comprar monstruoscostosos se compran varias mquinas pequeas) 2000 2010: Debilidades y oportunidades: Desarrollo Agil ORMs / sincronizacin con la aplicacin, escalabilidadhorizontal, desarrollo mas veloz, modelos de datos mas flexible 3. el antiguo mundo relacional ... 4. .. los nuevos mundos NoSQLKey-Value Column Graph Document 5. Ejemplos BD NoSQL 6. Caractersticas de MongoDB Consultas Ad-hoc Indexacin Replicacin Balanceo de Carga Almacenamiento de archivos Framework de agregacin JavaScript como lenguaje 7. MongoDB: Alta disponibilidad (ReplicaSets) 8. MongoDB: escalabilidad horizontal(sharding)MongoS MongoS MongoS Key RangeKey RangeKey RangeKey Range 0..2526..50 51..75 76.. 100PrimaryPrimaryPrimaryPrimarySecondarySecondarySecondarySecondarySecondarySecondarySecondarySecondary 9. MongoDB: Fcil Administracin Pocas cosas queconfigurar Fcil de instalar Fcil de Administrar 10. Equivalencias y ComparativaSQLMongoDBBase de DatosBase de DatosTablaColeccinndice ndiceFila DocumentoColumnaCampo JSON/BSONJoin Embedding / LinkingPrimary key_idGroup By Agregations 11. MongoDB basado en documentos{_id : ObjectId("4e77bb3b8a3e000000004f7a"),fecha : Date("2011-09-19T02:10:11.3Z",autor : "Robet Stam",titulo : "Particionamiento (Sharding) en MongoDB",texto : "This is the text of the post. It could be very long.",etiquetas : [ "nosql", "database", mongodb, escalabilidad ],comentarios : [ { quien : "jane", fecha : Date("2011-09-19T04:00:10.112Z"), comentario : "Estoyde acuerdo." },{ quien: "bryan", fecha : Date("2011-09-20T14:36:06.958Z"), comentario : "Interesante etc ..." }]} 12. MongoDB: consultasdb.asistentes.find(){ "_id" : ObjectId("4fefe96331d02ad8370ec780"), "nombre" : "Gabriel", "edad" : 19,"ciudad" : "Guayaquil", "institucion" : "ESPOL" }{ "_id" : ObjectId("4fefe98731d02ad8370ec781"), "nombre" : "Juan Pablo", "edad" :30, "ciudad" : "Loja", "institucion" : "UNL" }{ "_id" : ObjectId("4fefe9ab31d02ad8370ec782"), "nombre" : "Matias", "edad" : 24,"ciudad" : "Latacunga", "institucion" : "ESPE" }{ "_id" : ObjectId("4fefe9c631d02ad8370ec783"), "nombre" : "Carlos", "edad" : 28,"ciudad" : "Loja", "institucion" : "UNL" }{ "_id" : ObjectId("4fefeb3d31d02ad8370ec784"), "nombre" : "Pedro", "edad" : 34,"ciudad" : "Quito", "empresa" : "EXTREMA", "titulo" : "Ingeniero en Sistemas" }> 13. MongoDB: Consultas> db.asistentes.findOne(){"_id" : ObjectId("4fefe96331d02ad8370ec780"),"nombre" : "Gabriel","edad" : 19,"ciudad" : "Guayaquil","institucion" : "ESPOL"}> db.asistentes.find({ciudad:Loja}, {nombre:true, ciudad:true, _id:false}){ "nombre" : "Juan Pablo", "ciudad" : "Loja" }{ "nombre" : "Carlos", "ciudad" : "Loja" }> 14. MongoDB: inserciones> var a = {nombre: Trisha, edad: 30, ciudad: Atlanta, institucion: 10gen}> db.asistentes.insert(a)> db.asistentes.findOne({institucion: 10gen}){"_id" : ObjectId("50c9eaa52a8c4ec0e6cfc2c9"),"nombre" : "Trisha","edad" : 30,"ciudad" : "Atlanta","institucion" : "10gen"} 15. MongoDB: actualizaciones> db.asistentes.update({ciudad: Loja}, {$set: {ciudad: Loxa}})> db.asistentes.find({},{_id:false}){ "nombre" : "Gabriel", "edad" : 19, "ciudad" : "Guayaquil", "institucion" : "ESPOL" }{ "nombre" : "Matias", "edad" : 24, "ciudad" : "Latacunga", "institucion" : "ESPE" }{ "nombre" : "Carlos", "edad" : 28, "ciudad" : "Loxa", "institucion" : "UNL" }{ "nombre" : "Pedro", "edad" : 34, "ciudad" : "Quito", "empresa" : "EXTREMA","titulo" : "Ingeniero en Sistemas" }{ "nombre" : "Trisha", "edad" : 30, "ciudad" : "Atlanta", "institucion" : "10gen" } 16. MongoDB: eliminaciones db.asistentes.remove({ciudad: Quito}) 17. Programacin con MongoDB Programacin con drivers, todos comunitarios Soporte oficial para una docena de lenguajes: .Net,Python, Java, Ruby, ... Los Drivers tienen dos responsibilities principales: Conectar a los servidorres MongoDB Traducir BSON a los tipos nativos Una relacin natural entre objetos (OO) y Documentos Frameworks de alto nivel ODM: Morphi en Java,MongoEngine en python (django) 18. UsosManejo de contenidoInteligencia de operacionesE-Commerce Procesamiento de datos de altoManejo de datos de usuarios volmen 19. Quienes la estn usando 20. Recursos Oficiales 10gen MongoDB Downloads www.mongodb.org/downloads Free Online Training education.10gen.com Webinars and Events www.10gen.com/events White Papers www.10gen.com/white-papers Customer Case Studies www.10gen.com/customers Presentations www.10gen.com/presentations Documentation docs.mongodb.org Additional Info [email protected] 21. CreditosCrditos de las imgenes: http://mechanitis.blogspot.com/2012/10/nosql-is-stupid-name.html Trisha Gee, Software Engineer at 10gen http://www.10gen.com/webinar/introduccin-a-nosql Robert Stam, Software Engineer at 10gen 22. Crditos @miltonlab 23. FelizNavidad :)