SlideShare una empresa de Scribd logo
MONGODB
Una base de datos… NoSQL



                           Eduard Tomàs
                           eduard.tomas@raona.com
                           www.raona.com
                           @eiximenis
¿PORQUE NOSQL?
• Atomic                       • Basic Availability
• Consistent                   • Soft State
• Isolated                     • Eventual Consistency
• Durable
       • Consistency
       • Availabilty
       • Partition Tolerance
TIPOS DE BBDD NOSQL
•   Key / Value Pairs
•   Column Familiy
•   Documentales
•   ….
KEY / VALUE PAIRS STORES
• Los datos se almacenan en pares (clave, valor) donde
  clave es usualmente una cadena y el valor un blob
• Consultas: Solo por clave

                     0001010110010101100010100001010001000010010
     /users/1020
                        00010101010000000010111110101010101111

                     00011001100101011000101000010101101010010000
     /users/1021
                        01101010100000000101111101110010101110

                     0101010101000101010101001010010100010010010
   /fras/2011/1WE1
                          000100100100100000010100110111110
COLUMN FAMILY

  Clave      BcnDevCon
  Columnas   Lugar              Barcelona
             Inicio             17 / 11 / 2011
             Fin                19 / 11 / 2011

  Clave      Salón del Manga                      Ferias
  Columnas   Lugar               Barcelona
             Inicio              12 / 09 / 2011
             Visitantes          21428
             Artista invitado    Kurosawa
DE DOCUMENTOS
• Pueden verse como una key / value pair store donde el valor
  está en algún formato conocido (json, bson, xml,…)
• A diferencia de los anteriores al conocer el formato de los datos
  pueden realizarse operaciones en estos

             {                      {
             “nombre” : “Edu”,      “nombre” : “Joan”,
             “Twitter”:”Eiximenis”, “Empresa”:”raona”,
             “Ciudad”:”Igualada” “Ciudad”:”Bcn”,
             }                      “Edad” : “29”
                                    }
¿POR QUÉ MONGODB?
• Alto rendimiento
• Disponible en Windows, Unix, Mac,…
• La razón principal:
    • .NET C#                 • Haskell
    • Erlang                  • Perl
    • C / C++                 • Python
    • Java                    • Coldfusion
    • PHP                     • …
    • Ruby
CONCEPTOS DE MONGODB
• Base de Datos
• Colección
• Documento
• Schema free
OPERACIONES BÁSICAS DE MONGODB
•   Conectar con una base de datos
     • use BaseDeDatos
•   Insertar un documento
     • db.coleccion.insert({…})
•   Encontrar uno o más documentos
     • db.coleccion.find({…})
•   Ordenar
     • db.coleccion.find().sort({…})
•   Metaoperadores ($or, $and,$gt)
     • db.coleccion.find({$or[{…},{…},….]})
UPSERTS
• Reemplazar un documento
   • db.coleccion.update()
• Upsert de un documento (creación o reemplazo)
   • db.coleccion.save()
• Modificadores
   • $inc
   • $set / $unset
   • $push / $pull
   • …
MAP AND REDUCE
• Operación “equivalente” al GROUP BY de BBDD relacionales
• Posible de calcular en paralelo
• Posible de calcular con datos distribuídos entre distintas
  máquinas
• Se compone de dos pasos
    • Map -> De una colección recoge y transforma los datos en el
      formato necesario para Reduce.
    • Reduce -> Opera sobre los datos generados por Map
      efectuando los cálculos necesarios.
MAP…
{                                {                                {
    "_id" : "1",                     "_id" : “2",                     "_id" : “3",
    "BlogId" : "b1",                 "BlogId" : "b2",                 "BlogId" : "b2",
    "Titulo" : "foo",                "Titulo" : “bar",                "Titulo" : “bar",
    "Comentarios" : [                "Comentarios" : [                "Comentarios" : [
     {                                {                                {
        "Autor" : "eiximenis",           "Autor" : “pisukeman",           "Autor" : “bandolero",
        "Texto" : "...."                 "Texto" : "...."                 "Texto" : "...."
     },                               },                               },
     {                                {                                {
        "Autor" : "eiximenis",           "Autor" : "eiximenis",           "Autor" : “pisukeman",
        "Texto" : "...."                 "Texto" : "...."                 "Texto" : "...."
     }]                               }]                               }]
}                                }                                }
MAP…
{                                                           {“BlogId” : “b1”,
  "_id"{ : "1",                                             “NumComentarios” : 2}
  "BlogId" : "b1",
          "_id" : “2",
  "Titulo" : "foo", : "b2", {
          "BlogId"
  "Comentarios" : [            "_id" : “3",
          "Titulo" : “bar",
   {                           "BlogId" : "b2",
          "Comentarios" : [
      "Autor" : "eiximenis","Titulo" : “bar",               {“BlogId” : “b1”,
           {
                               "Comentarios" : [
      "Texto" : "...." : “pisukeman",                       “NumComentarios” :1}
              "Autor"
   },                           {
              "Texto" : "...."
   {                               "Autor" : “bandolero",
           }]
      "Autor" : "eiximenis", "Texto" : "...."
       }                                                    {“BlogId” : “b2”,
      "Texto" : "...."          },                          “NumComentarios” :2}
   }]                           {
}                                  "Autor" : “pisukeman",
                                   "Texto" : "...."
                                }]
                             }
… REDUCE
                        {“BlogId” : “b1”,
{“BlogId” : “b1”,
                        “NumComentarios” : 3}
“NumComentarios” : 2}
{“BlogId” : “b1”,                               {“BlogId” : “b1”,
“NumComentarios” :1}    {“BlogId” : “b2”,       “NumComentarios” : 12}
{“BlogId” : “b2”,       “NumComentarios” : 2}
“NumComentarios” :2}
 {“BlogId” : “b1”,                              {“BlogId” : “b2”,
 “NumComentarios” :7}   {“BlogId” : “b1”,       “NumComentarios” : 2}
{“BlogId” : “b2”,       “NumComentarios” : 9}
“NumComentarios” : 0}
{“BlogId” : “b1”,
                        {“BlogId” : “b2”,
“NumComentarios” :2}
                        “NumComentarios” : 0}
MAP / REDUCE EN MONGODB
                                                               {“_id” : “b1”,
•   2 funciones (map y reduce) escritas en javascript          [
•   Ejecutadas en el servidor                                  {“numcoments” : 2},
                                                               {“numcoments: 4}
function() {                                                   ]}
  emit(this.BlogId, {numcoments : this.Comentarios.length});
}


function(key, values) {
 var ret = {numcoments : 0};                                   {“_id” : “b1”,
 values.forEach(function(value) {                               “value” {
    ret.numcoments +=value.numcoments;                            “numcoments” : 6
 });                                                            }
 return ret;                                                   }
}
REPLICA SETS
• Redundancia de datos
• Tolerancia a fallos
• Un primario, varios secundarios
    • Escrituras: Solo a/desde el
      primario
    • Lecturas: Solo desde el
      primario o bien desde
      cualquier nodo
    • Si el primario cae, un
      secundario toma su rol de
      forma automática

Más contenido relacionado

Similar a MongoDb (BcnDevCon Nov 2011)

ElasticSearch: la tenés atroden Google
ElasticSearch: la tenés atroden GoogleElasticSearch: la tenés atroden Google
ElasticSearch: la tenés atroden Google
Mariano Iglesias
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
Alejandro Mancilla
 
NoSQL, MongoDB y MongoMapper
NoSQL, MongoDB y MongoMapperNoSQL, MongoDB y MongoMapper
NoSQL, MongoDB y MongoMapper
Pat Cito
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
campus party
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
campus party
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DB
greach_es
 
Semana 3 MONGODB conceptos básicos NOSQL
Semana 3   MONGODB conceptos básicos NOSQLSemana 3   MONGODB conceptos básicos NOSQL
Semana 3 MONGODB conceptos básicos NOSQL
Richard Eliseo Mendoza Gafaro
 
Mongo Mapper
Mongo MapperMongo Mapper
Mongo Mapper
Francisco Viramontes
 
Dynamics saturday madrid 2019 tips & tricks para desarrollo en bc con v...
Dynamics saturday madrid 2019   tips & tricks para desarrollo en bc con v...Dynamics saturday madrid 2019   tips & tricks para desarrollo en bc con v...
Dynamics saturday madrid 2019 tips & tricks para desarrollo en bc con v...
Demian Raschkovan
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de Persistencia
David J. Brenes
 
Html
HtmlHtml
Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDB
Erick Camacho
 
NoSQL - MongoDB
NoSQL - MongoDBNoSQL - MongoDB
NoSQL - MongoDB
Juan Azcurra
 
Seminario mongo db springdata 10-11-2011
Seminario mongo db springdata 10-11-2011Seminario mongo db springdata 10-11-2011
Seminario mongo db springdata 10-11-2011
Paradigma Digital
 
Pgpymongo y pgpycouch
Pgpymongo y pgpycouchPgpymongo y pgpycouch
Pgpymongo y pgpycouch
Anthony Sotolongo
 

Similar a MongoDb (BcnDevCon Nov 2011) (15)

ElasticSearch: la tenés atroden Google
ElasticSearch: la tenés atroden GoogleElasticSearch: la tenés atroden Google
ElasticSearch: la tenés atroden Google
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
 
NoSQL, MongoDB y MongoMapper
NoSQL, MongoDB y MongoMapperNoSQL, MongoDB y MongoMapper
NoSQL, MongoDB y MongoMapper
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DB
 
Semana 3 MONGODB conceptos básicos NOSQL
Semana 3   MONGODB conceptos básicos NOSQLSemana 3   MONGODB conceptos básicos NOSQL
Semana 3 MONGODB conceptos básicos NOSQL
 
Mongo Mapper
Mongo MapperMongo Mapper
Mongo Mapper
 
Dynamics saturday madrid 2019 tips & tricks para desarrollo en bc con v...
Dynamics saturday madrid 2019   tips & tricks para desarrollo en bc con v...Dynamics saturday madrid 2019   tips & tricks para desarrollo en bc con v...
Dynamics saturday madrid 2019 tips & tricks para desarrollo en bc con v...
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de Persistencia
 
Html
HtmlHtml
Html
 
Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDB
 
NoSQL - MongoDB
NoSQL - MongoDBNoSQL - MongoDB
NoSQL - MongoDB
 
Seminario mongo db springdata 10-11-2011
Seminario mongo db springdata 10-11-2011Seminario mongo db springdata 10-11-2011
Seminario mongo db springdata 10-11-2011
 
Pgpymongo y pgpycouch
Pgpymongo y pgpycouchPgpymongo y pgpycouch
Pgpymongo y pgpycouch
 

Más de Eduard Tomàs

Kubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sKubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why's
Eduard Tomàs
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
Eduard Tomàs
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con Keda
Eduard Tomàs
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nunca
Eduard Tomàs
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
Eduard Tomàs
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en Serverless
Eduard Tomàs
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
Eduard Tomàs
 
Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)
Eduard Tomàs
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)
Eduard Tomàs
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
Eduard Tomàs
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundo
Eduard Tomàs
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aks
Eduard Tomàs
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Eduard Tomàs
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramos
Eduard Tomàs
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDb
Eduard Tomàs
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menos
Eduard Tomàs
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
Eduard Tomàs
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
Eduard Tomàs
 
Azure functions
Azure functionsAzure functions
Azure functions
Eduard Tomàs
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your device
Eduard Tomàs
 

Más de Eduard Tomàs (20)

Kubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sKubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why's
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con Keda
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nunca
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en Serverless
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundo
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aks
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramos
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDb
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menos
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Azure functions
Azure functionsAzure functions
Azure functions
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your device
 

Último

Conceptos y definiciones de Antenas y propagación
Conceptos y definiciones de Antenas y propagaciónConceptos y definiciones de Antenas y propagación
Conceptos y definiciones de Antenas y propagación
edgarcalle8
 
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
241578066
 
¿Cómo funciona el seguimiento por GPS y cómo puede ayudar al transporte y la ...
¿Cómo funciona el seguimiento por GPS y cómo puede ayudar al transporte y la ...¿Cómo funciona el seguimiento por GPS y cómo puede ayudar al transporte y la ...
¿Cómo funciona el seguimiento por GPS y cómo puede ayudar al transporte y la ...
Navsat
 
11. Legislación Aplicada a la Informática.pdf
11. Legislación Aplicada a la Informática.pdf11. Legislación Aplicada a la Informática.pdf
11. Legislación Aplicada a la Informática.pdf
PanchoChangue
 
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Telefónica
 
Informe_mc_bombas_Warman_001-WEIR vulco.pdf
Informe_mc_bombas_Warman_001-WEIR vulco.pdfInforme_mc_bombas_Warman_001-WEIR vulco.pdf
Informe_mc_bombas_Warman_001-WEIR vulco.pdf
Rubén Cortes Zavala
 
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
ADELAIDA90
 
UiPath Community Data Service presentation
UiPath Community Data Service presentationUiPath Community Data Service presentation
UiPath Community Data Service presentation
DianaGray10
 
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptxDiapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
GnesisOrtegaDeLen
 
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docxSEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
Eddy Nathaly Jaimes Villamizar
 
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
Rubén Cortes Zavala
 

Último (11)

Conceptos y definiciones de Antenas y propagación
Conceptos y definiciones de Antenas y propagaciónConceptos y definiciones de Antenas y propagación
Conceptos y definiciones de Antenas y propagación
 
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
 
¿Cómo funciona el seguimiento por GPS y cómo puede ayudar al transporte y la ...
¿Cómo funciona el seguimiento por GPS y cómo puede ayudar al transporte y la ...¿Cómo funciona el seguimiento por GPS y cómo puede ayudar al transporte y la ...
¿Cómo funciona el seguimiento por GPS y cómo puede ayudar al transporte y la ...
 
11. Legislación Aplicada a la Informática.pdf
11. Legislación Aplicada a la Informática.pdf11. Legislación Aplicada a la Informática.pdf
11. Legislación Aplicada a la Informática.pdf
 
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
 
Informe_mc_bombas_Warman_001-WEIR vulco.pdf
Informe_mc_bombas_Warman_001-WEIR vulco.pdfInforme_mc_bombas_Warman_001-WEIR vulco.pdf
Informe_mc_bombas_Warman_001-WEIR vulco.pdf
 
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
 
UiPath Community Data Service presentation
UiPath Community Data Service presentationUiPath Community Data Service presentation
UiPath Community Data Service presentation
 
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptxDiapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
 
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docxSEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
 
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
 

MongoDb (BcnDevCon Nov 2011)

  • 1. MONGODB Una base de datos… NoSQL Eduard Tomàs eduard.tomas@raona.com www.raona.com @eiximenis
  • 2. ¿PORQUE NOSQL? • Atomic • Basic Availability • Consistent • Soft State • Isolated • Eventual Consistency • Durable • Consistency • Availabilty • Partition Tolerance
  • 3. TIPOS DE BBDD NOSQL • Key / Value Pairs • Column Familiy • Documentales • ….
  • 4. KEY / VALUE PAIRS STORES • Los datos se almacenan en pares (clave, valor) donde clave es usualmente una cadena y el valor un blob • Consultas: Solo por clave 0001010110010101100010100001010001000010010 /users/1020 00010101010000000010111110101010101111 00011001100101011000101000010101101010010000 /users/1021 01101010100000000101111101110010101110 0101010101000101010101001010010100010010010 /fras/2011/1WE1 000100100100100000010100110111110
  • 5. COLUMN FAMILY Clave BcnDevCon Columnas Lugar Barcelona Inicio 17 / 11 / 2011 Fin 19 / 11 / 2011 Clave Salón del Manga Ferias Columnas Lugar Barcelona Inicio 12 / 09 / 2011 Visitantes 21428 Artista invitado Kurosawa
  • 6. DE DOCUMENTOS • Pueden verse como una key / value pair store donde el valor está en algún formato conocido (json, bson, xml,…) • A diferencia de los anteriores al conocer el formato de los datos pueden realizarse operaciones en estos { { “nombre” : “Edu”, “nombre” : “Joan”, “Twitter”:”Eiximenis”, “Empresa”:”raona”, “Ciudad”:”Igualada” “Ciudad”:”Bcn”, } “Edad” : “29” }
  • 7. ¿POR QUÉ MONGODB? • Alto rendimiento • Disponible en Windows, Unix, Mac,… • La razón principal: • .NET C# • Haskell • Erlang • Perl • C / C++ • Python • Java • Coldfusion • PHP • … • Ruby
  • 8. CONCEPTOS DE MONGODB • Base de Datos • Colección • Documento • Schema free
  • 9. OPERACIONES BÁSICAS DE MONGODB • Conectar con una base de datos • use BaseDeDatos • Insertar un documento • db.coleccion.insert({…}) • Encontrar uno o más documentos • db.coleccion.find({…}) • Ordenar • db.coleccion.find().sort({…}) • Metaoperadores ($or, $and,$gt) • db.coleccion.find({$or[{…},{…},….]})
  • 10. UPSERTS • Reemplazar un documento • db.coleccion.update() • Upsert de un documento (creación o reemplazo) • db.coleccion.save() • Modificadores • $inc • $set / $unset • $push / $pull • …
  • 11. MAP AND REDUCE • Operación “equivalente” al GROUP BY de BBDD relacionales • Posible de calcular en paralelo • Posible de calcular con datos distribuídos entre distintas máquinas • Se compone de dos pasos • Map -> De una colección recoge y transforma los datos en el formato necesario para Reduce. • Reduce -> Opera sobre los datos generados por Map efectuando los cálculos necesarios.
  • 12. MAP… { { { "_id" : "1", "_id" : “2", "_id" : “3", "BlogId" : "b1", "BlogId" : "b2", "BlogId" : "b2", "Titulo" : "foo", "Titulo" : “bar", "Titulo" : “bar", "Comentarios" : [ "Comentarios" : [ "Comentarios" : [ { { { "Autor" : "eiximenis", "Autor" : “pisukeman", "Autor" : “bandolero", "Texto" : "...." "Texto" : "...." "Texto" : "...." }, }, }, { { { "Autor" : "eiximenis", "Autor" : "eiximenis", "Autor" : “pisukeman", "Texto" : "...." "Texto" : "...." "Texto" : "...." }] }] }] } } }
  • 13. MAP… { {“BlogId” : “b1”, "_id"{ : "1", “NumComentarios” : 2} "BlogId" : "b1", "_id" : “2", "Titulo" : "foo", : "b2", { "BlogId" "Comentarios" : [ "_id" : “3", "Titulo" : “bar", { "BlogId" : "b2", "Comentarios" : [ "Autor" : "eiximenis","Titulo" : “bar", {“BlogId” : “b1”, { "Comentarios" : [ "Texto" : "...." : “pisukeman", “NumComentarios” :1} "Autor" }, { "Texto" : "...." { "Autor" : “bandolero", }] "Autor" : "eiximenis", "Texto" : "...." } {“BlogId” : “b2”, "Texto" : "...." }, “NumComentarios” :2} }] { } "Autor" : “pisukeman", "Texto" : "...." }] }
  • 14. … REDUCE {“BlogId” : “b1”, {“BlogId” : “b1”, “NumComentarios” : 3} “NumComentarios” : 2} {“BlogId” : “b1”, {“BlogId” : “b1”, “NumComentarios” :1} {“BlogId” : “b2”, “NumComentarios” : 12} {“BlogId” : “b2”, “NumComentarios” : 2} “NumComentarios” :2} {“BlogId” : “b1”, {“BlogId” : “b2”, “NumComentarios” :7} {“BlogId” : “b1”, “NumComentarios” : 2} {“BlogId” : “b2”, “NumComentarios” : 9} “NumComentarios” : 0} {“BlogId” : “b1”, {“BlogId” : “b2”, “NumComentarios” :2} “NumComentarios” : 0}
  • 15. MAP / REDUCE EN MONGODB {“_id” : “b1”, • 2 funciones (map y reduce) escritas en javascript [ • Ejecutadas en el servidor {“numcoments” : 2}, {“numcoments: 4} function() { ]} emit(this.BlogId, {numcoments : this.Comentarios.length}); } function(key, values) { var ret = {numcoments : 0}; {“_id” : “b1”, values.forEach(function(value) { “value” { ret.numcoments +=value.numcoments; “numcoments” : 6 }); } return ret; } }
  • 16. REPLICA SETS • Redundancia de datos • Tolerancia a fallos • Un primario, varios secundarios • Escrituras: Solo a/desde el primario • Lecturas: Solo desde el primario o bien desde cualquier nodo • Si el primario cae, un secundario toma su rol de forma automática