MongoDB Europe 2016 - MongoDB 3.4 preview and introduction to MongoDB Atlas
MongoDb (BcnDevCon Nov 2011)
Click here to load reader
-
Upload
eduard-tomas -
Category
Technology
-
view
806 -
download
0
description
Transcript of MongoDb (BcnDevCon Nov 2011)
![Page 2: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/2.jpg)
¿PORQUE NOSQL?
• Atomic
• Consistent
• Isolated
• Durable
• Basic Availability
• Soft State
• Eventual Consistency
• Consistency
• Availabilty
• Partition Tolerance
![Page 3: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/3.jpg)
TIPOS DE BBDD NOSQL• Key / Value Pairs
• Column Familiy
• Documentales
• ….
![Page 4: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/4.jpg)
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
/users/1020 000101011001010110001010000101000100001001000010101010000000010111110101010101111
/users/1021 0001100110010101100010100001010110101001000001101010100000000101111101110010101110
/fras/2011/1WE1 0101010101000101010101001010010100010010010000100100100100000010100110111110
![Page 5: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/5.jpg)
COLUMN FAMILY
Clave BcnDevCon
Columnas Lugar Barcelona
Inicio 17 / 11 / 2011
Fin 19 / 11 / 2011
Clave Salón del Manga
Columnas Lugar Barcelona
Inicio 12 / 09 / 2011
Visitantes 21428
Artista invitado Kurosawa
Ferias
![Page 6: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/6.jpg)
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”,“Twitter”:”Eiximenis”,“Ciudad”:”Igualada”}
{“nombre” : “Joan”,“Empresa”:”raona”,“Ciudad”:”Bcn”,“Edad” : “29”}
![Page 7: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/7.jpg)
¿POR QUÉ MONGODB?
• Alto rendimiento
• Disponible en Windows, Unix, Mac,…
• La razón principal:
• .NET C#
• Erlang
• C / C++
• Java
• PHP
• Ruby
• Haskell
• Perl
• Python
• Coldfusion
• …
![Page 8: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/8.jpg)
CONCEPTOS DE MONGODB
• Base de Datos
• Colección
• Documento
• Schema free
![Page 9: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/9.jpg)
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[{…},{…},….]})
![Page 10: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/10.jpg)
UPSERTS
• Reemplazar un documento
• db.coleccion.update()
• Upsert de un documento (creación o reemplazo)
• db.coleccion.save()
• Modificadores
• $inc
• $set / $unset
• $push / $pull
• …
![Page 11: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/11.jpg)
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.
![Page 12: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/12.jpg)
MAP…
{ "_id" : "1", "BlogId" : "b1", "Titulo" : "foo", "Comentarios" : [ { "Autor" : "eiximenis", "Texto" : "...." }, { "Autor" : "eiximenis", "Texto" : "...." } ]}
{ "_id" : “2", "BlogId" : "b2", "Titulo" : “bar", "Comentarios" : [ { "Autor" : “pisukeman", "Texto" : "...." }, { "Autor" : "eiximenis", "Texto" : "...." } ]}
{ "_id" : “3", "BlogId" : "b2", "Titulo" : “bar", "Comentarios" : [ { "Autor" : “bandolero", "Texto" : "...." }, { "Autor" : “pisukeman", "Texto" : "...." } ]}
![Page 13: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/13.jpg)
MAP…{ "_id" : "1", "BlogId" : "b1", "Titulo" : "foo", "Comentarios" : [ { "Autor" : "eiximenis", "Texto" : "...." }, { "Autor" : "eiximenis", "Texto" : "...." } ]}
{ "_id" : “2", "BlogId" : "b2", "Titulo" : “bar", "Comentarios" : [ { "Autor" : “pisukeman", "Texto" : "...." }]}
{ "_id" : “3", "BlogId" : "b2", "Titulo" : “bar", "Comentarios" : [ { "Autor" : “bandolero", "Texto" : "...." }, { "Autor" : “pisukeman", "Texto" : "...." } ]}
{“BlogId” : “b1”,“NumComentarios” : 2}
{“BlogId” : “b1”,“NumComentarios” :1}
{“BlogId” : “b2”,“NumComentarios” :2}
![Page 14: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/14.jpg)
… REDUCE{“BlogId” : “b1”,“NumComentarios” : 2}
{“BlogId” : “b1”,“NumComentarios” :1}{“BlogId” : “b2”,“NumComentarios” :2}{“BlogId” : “b1”,“NumComentarios” :7}
{“BlogId” : “b2”,“NumComentarios” : 0}
{“BlogId” : “b1”,“NumComentarios” :2}
{“BlogId” : “b1”,“NumComentarios” : 3}
{“BlogId” : “b2”,“NumComentarios” : 2}
{“BlogId” : “b1”,“NumComentarios” : 9}
{“BlogId” : “b2”,“NumComentarios” : 0}
{“BlogId” : “b1”,“NumComentarios” : 12}
{“BlogId” : “b2”,“NumComentarios” : 2}
![Page 15: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/15.jpg)
MAP / REDUCE EN MONGODB• 2 funciones (map y reduce) escritas en javascript
• Ejecutadas en el servidor
function() { emit(this.BlogId, {numcoments : this.Comentarios.length});}
function(key, values) { var ret = {numcoments : 0}; values.forEach(function(value) { ret.numcoments +=value.numcoments; }); return ret;}
{“_id” : “b1”,[{“numcoments” : 2},{“numcoments: 4}]}
{“_id” : “b1”, “value” { “numcoments” : 6 }}
![Page 16: MongoDb (BcnDevCon Nov 2011)](https://reader038.fdocuments.in/reader038/viewer/2022100601/557bdedad8b42a03748b4cab/html5/thumbnails/16.jpg)
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