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”
}
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.
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