Dinamic area formación mongodb
-
Upload
fernando-ortega-gallego -
Category
Technology
-
view
288 -
download
6
Transcript of Dinamic area formación mongodb
Diapositiva: 1
Fernando Ortega :: Responsable I+D
[email protected] +34 680 311 676
Formación MongoDB PISCIS
Diapositiva: 2
Diapositiva: 3
1. Introducción
2. Instalación y configuración
3. Operaciones de consulta
4. Operaciones de actualización
5. Índices
6. Aggregation Framework
7. MapReduce
8. MongoDB y Java
3
Diapositiva: 4
1. Introducción
2. Instalación y configuración
3. Operaciones de consulta
4. Operaciones de actualización
5. Índices
6. Aggregation Framework
7. MapReduce
8. MongoDB y Java
4
Diapositiva: 5
NoSQWhat??? 1
- In
tr
od
uc
ció
n
5
Diapositiva: 6
Not Only SQL 1
- In
tr
od
uc
ció
n
6
Diapositiva: 7
Teorema CAP 1
- In
tr
od
uc
ció
n
7
Diapositiva: 8
RDBMS 1
- In
tr
od
uc
ció
n
8
Estándar SQL
ACID
Esquema fijo
Modelo de datos de tablas y
columnas
Difícil de escalar
Atomicidad de
transacciones
Diapositiva: 9
NoSQL 1
- In
tr
od
uc
ció
n
9
Múltiples soluciones
BASE
Esquema flexible
Múltiples modelos de datos
Orientado a la escalabilidad
Menor preocupación por
transacciones
Diapositiva: 10
Cuál usamos 1
- In
tr
od
uc
ció
n
10
Diapositiva: 11
Depende… 1
- In
tr
od
uc
ció
n
11
“Puedes poner un tornillo usando un martillo pero lo
ideal es utilizar un destornillador”
Diapositiva: 12
Tipos Básicos de NoSQL
Clave-Valor Documentos
Grafos Columnas
1 -
In
tr
od
uc
ció
n
12
Diapositiva: 13
Tipo Documentos 1
- In
tr
od
uc
ció
n
13
El documento es la unidad
de almacenamiento
Colecciones contienen
documentos
Colecciones ~= Tablas
No hay esquema
predefinido
JSON o XML
Diapositiva: 14
Historia de MongoDB Diseñado y desarrollado por los fundadores de DoubleClick,
ShopWiki, GILT Groupe, etc…
2007 – Inicio de la implementación
2008 – Primer sitio en producción: businessinsider.com
Código abierto (C++) – AGPL
2009 – Versión 1.0
2011 – Versión 2.0
2015 – Versión 3.0
1 -
In
tr
od
uc
ció
n
14
Diapositiva: 15
MongoDB 1
- In
tr
od
uc
ció
n
15
Orientada a documentos
• BSON -> Binary JSON
• Esquema flexible
Arquitectura escalable
• Auto-sharding
• Replicación y alta
disponibilidad
Otras características
• Índices secundarios
• Lenguaje de consulta
• MapReduce
Diapositiva: 16
Ejemplo CLIENTES
{
“Cliente” : 123,
“Nombre” : “Pepe Jiménez”,
“Dirección” : “Calle A nº 13”,
“ultimo_pedido”:
{
“id_pedido” : 2,
“Productos” :
[
{
“id_producto” : 43,
“Nombre”:”Impresora Láser”,
“Fabricante” : “Canon”,
“Cantidad” : 4
}
]
}
}
16
PEDIDOS {
"id_pedido":1,
…
},
{
"id_pedido": 2,
"id_cliente":1233,
"Dirección":" Calle A nº 13",
"Productos":
[
{
"id_producto":43,
"Nombre":"Impresora Láser",
"Fabricante":"Canon",
"Cantidad": 4
}
]
}
Diapositiva: 17
1. Introducción
2. Instalación y configuración
3. Operaciones de consulta
4. Operaciones de actualización
5. Índices
6. Aggregation Framework
7. MapReduce
8. MongoDB y Java
17
Diapositiva: 18
Descarga e instalación
https://www.mongodb.org/downloads (v2.6.1)
Seleccionar S.O.
Seleccionar los componentes y ruta a instalar
while (!fin) { fin = siguiente();}
Configurar ruta por defecto de la base de datos
2 -
In
sta
lac
ión
y
c
on
fig
ur
ac
ión
18
Diapositiva: 19
Opciones de configuración
YAML desde 2.6.x
http://docs.mongodb.org/manual/reference/configuration-options/
Algunas opciones destacadas:
•systemLog Options
•processManagement
•net
•security
•storage
2 -
In
sta
lac
ión
y
c
on
fig
ur
ac
ión
19
Diapositiva: 20
Ejemplo de configuración 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
20
Diapositiva: 21
Ejecución de MongoDB 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
21
mongod: Proceso demonio
para ejecutar MongoDB
Gestiona peticiones, acceso
a datos y operaciones en
background.
Algunas opciones básicas:
• --help
• --version
• --config <filename>
• --verbose
• --port
• --httpinterface
Diapositiva: 22
Instalación como servicio 1. Crear un directorio para guardar el log de eventos:
mkdir databases\db1\logs
2. Crear un directorio para la configuración de la base de datos:
mkdir databases\db1\cfg
3. Crear un fichero mongod.cfg:
logpath=d:\software\mongodb\databases\db1\logs\mongo.log
port=27666
Dbpath=d:\software\mongodb\databases\db1
4. Ejecutar el siguiente comando como administrador con PowerShell :
mongod --config “d:\software\mongodb\databases\db1\cfg\mongod.cfg” -install
2 -
In
sta
lac
ión
y
c
on
fig
ur
ac
ión
22
Diapositiva: 23
Replicación 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
23
Diapositiva: 24
Replicación 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
24
Diapositiva: 25
Sharding – Baraja de cartas 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
25
Diapositiva: 26
Estado inicial 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
26
Jugador 1
Jugador 2
Jugador 3
Jugador 4
Crupier
{}
{} {}
{}
{12,1,9,10,7,8,6,11,2,6,
3,3,12,5,8,5,8,10,3,4,1
2,11,6,4,6,1,1,7,2,7,11,
8,3,5,1,5,9,11,4,9,2,7,1
2,9,10,4,10,2}
Diapositiva: 27
Primer reparto 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
27
Jugador 1
Jugador 2
Jugador 3
Jugador 4
Crupier
{12,1,9,10,7,8,
6,11,2,6,3,3}
{} {}
{}
{12,5,8,5,8,10,3,4,12,1
1,6,4,6,1,1,7,2,7,11,8,3,
5,1,5,9,11,4,9,2,7,12,9,
10,4,10,2}
Diapositiva: 28
Ordenación y división 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
28
Jugador 1
Jugador 2
Jugador 3
Jugador 4
Crupier
{1,2,3,3,6,6}
{7,8,9,10,11,12}
{} {}
{}
{12,5,8,5,8,10,3,4,12,1
1,6,4,6,1,1,7,2,7,11,8,3,
5,1,5,9,11,4,9,2,7,12,9,
10,4,10,2}
Diapositiva: 29
Movimiento de cartas 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
29
Jugador 1
Jugador 2
Jugador 3
Jugador 4
Crupier
{1,2,3,3,6,6}
{7,8,9,10,11,12} {}
{}
{12,5,8,5,8,10,3,4,12,1
1,6,4,6,1,1,7,2,7,11,8,3,
5,1,5,9,11,4,9,2,7,12,9,
10,4,10,2}
Diapositiva: 30
Seguimos repartiendo 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
30
Jugador 1
Jugador 2
Jugador 3
Jugador 4
Crupier
{1,2,3,3,6,6,5,5
,3,4}
{7,8,9,10,11,12,
12,8,8,10,12,11}
{}
{}
{6,4,6,1,1,7,2,7,11,8,3,
5,1,5,9,11,4,9,2,7,12,9,
10,4,10,2}
Diapositiva: 31
Volvemos a dividir y mover 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
31
Jugador 1
Jugador 2
Jugador 3
Jugador 4
Crupier
{1,2,3,3,3,4}
{5,5,6,6}
{7,8,8,8}
{9,10, 10,11,11,12,
12, 12}
{}
{}
{6,4,6,1,1,7,2,7,11,8,3,
5,1,5,9,11,4,9,2,7,12,9,
10,4,10,2}
Diapositiva: 32
Volvemos a dividir y mover 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
32
Jugador 1
Jugador 2
Jugador 3
Jugador 4
Crupier
{1,2,3,3,3,4}
{5,5,6,6,7,8,
8,8}
{9,10,10,11,11,12
,12, 12}
{}
{6,4,6,1,1,7,2,7,11,8,3,
5,1,5,9,11,4,9,2,7,12,9,
10,4,10,2}
Diapositiva: 33
Repetimos hasta el final 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
33
Jugador 1
Jugador 2
Jugador 3
Jugador 4
Crupier
{1,1,1,1,
2,2,2,2,
3,3,3,3}
{4,4,4,4,
5,5,5,5,
6,6,6,6}
{7,7,7,7,
8,8,8,8,
9,9,9,9}
{10,10,10,10,
11,11,11,11,
12,12,12,12}
{}
Diapositiva: 34
Sharding – Conceptos 2
- In
sta
lac
ión
y
c
on
fig
ur
ac
ión
34
Escalabilidad horizontal
Shard-key: Campo indexado
MongoDB divide los valores
en chunks que se distribuyen en los shards
Estrategias:
• Hash
• Range
Procesos principales:
• Splitting
• Balancing
Diapositiva: 35
1. Introducción
2. Instalación y configuración
3. Operaciones de consulta
4. Operaciones de actualización
5. Índices
6. Aggregation Framework
7. MapReduce
8. MongoDB y Java
35
Diapositiva: 36
Tipos de datos básicos String: guardados en UTF-8. Van siempre entre dobles comillas.
Number: números. Al guardarse en BSON pueden ser de tipo byte,
int32, in64 o double.
Date: fecha almacenada como int64 que representa el número de
millisegundos desde el 1 de enero de 1970
ObjectId: 12 bytes que se utilizan como identificador único de
documento
Boolean: con valor true o false.
Array: van entre corchetes [] y pueden contener de 1 a N elementos,
que pueden ser de cualquiera de los otros tipos.
Documentos: un documento en formato JSON puede contener otros
documentos embebidos que incluyan más documentos o cualquiera de
los tipos anteriormente descritos.
Null.
3 -
O
pe
ra
cio
ne
s d
e c
on
su
lta
36
Diapositiva: 37
Dot Notation 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
37
Acceso:
• Elementos de array
• Campos de documento
embebido
Se puede utilizar en las
consultas db.col.find({
“product.name” : “Canon C234”
})
Se puede utilizar en las
actualizaciones db.col.update({
“product.type” : “printer”,
$set:{“product.info” : “Por determinar”}
})
Se puede combinar con el
operador $
Diapositiva: 38
Consola de MongoDB 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
38
help
show dbs
use <nombre de base de datos>
show collections
show users
show databases
show profile
db.<método>
db.<colección>.<método>
Diapositiva: 39
find
Es la operación básica de lectura
Ejemplo de uso (comparado con MySQL):
3 -
O
pe
ra
cio
ne
s d
e c
on
su
lta
39
Diapositiva: 40
findOne
El comando findOne tiene el mismo funcionamiento que el
comando find, con la diferencia de que si el comando
encuentra más de un resultado que cumpla las condiciones de
la consulta, tan solo nos devolverá el primero.
3 -
O
pe
ra
cio
ne
s d
e c
on
su
lta
40
Diapositiva: 41
pretty 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
41
Diapositiva: 42
Operadores de consulta 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
42
Diapositiva: 43
Comparación 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
43
$eq
$gt
$gte
$lt
$lte
$ne
$in
$nin
Diapositiva: 44
Lógicas 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
44
$or
$and
$not
$nor
Diapositiva: 45
Elementos 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
45
$exists
$type
Diapositiva: 46
Evaluación 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
46
$mod
$regex
$text
$where
Diapositiva: 47
Geoespacial 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
47
$geoWithin
$geoIntersects
$near
$nearSphere
Diapositiva: 48
Array 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
48
all
elemMatch
size
Diapositiva: 49
Operadores de proyección 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
49
Diapositiva: 50
Operadores de proyección 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
50
Diapositiva: 51
Operadores de proyección 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
51
$ -> arrays
$elemMatch
$meta
$slice
Diapositiva: 52
Modificadores del cursor 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
52
Diapositiva: 53
Modificadores del cursor 3
- O
pe
ra
cio
ne
s d
e c
on
su
lta
53
batchSize
count
explain
forEach
hint
limit
max
min
next
pretty
size
skip
sort
toArray
Diapositiva: 54
1. Introducción
2. Instalación y configuración
3. Operaciones de consulta
4. Operaciones de actualización
5. Índices
6. Aggregation Framework
7. MapReduce
8. MongoDB y Java
54
Diapositiva: 55
insert 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
55
Diapositiva: 56
insert 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
56
Diapositiva: 57
multi-insert 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
57
Diapositiva: 58
save ~= insert 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
58
Tras save sobre el mismo _id no devuelve error sino que actualiza
Diapositiva: 59
remove 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
59
Diapositiva: 60
update 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
60
Diapositiva: 61
update 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
61
Diapositiva: 62
Operadores de update 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
62
$inc
$mul
$rename
$setOnInsert
$set
$unset
$min
$max
$currentDate
Diapositiva: 63
Operadores de arrays 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
63
$
$addToSet
$pop
$pullAll
$pull
$push
Diapositiva: 64
Modificadores 4
- O
pe
ra
cio
ne
s d
e a
ctu
ali
za
ció
n
64
$each
$slice
$sort
$position
Diapositiva: 65
1. Introducción
2. Instalación y configuración
3. Operaciones de consulta
4. Operaciones de actualización
5. Índices
6. Aggregation Framework
7. MapReduce
8. MongoDB y Java
65
Diapositiva: 66
Qué son los índices 5
- Ín
dic
es
66
Diapositiva: 67
Creación de índices 5
- Ín
dic
es
67
Diapositiva: 68
Tipos
Default _id
Single Field
Compound Index
Multikey Index
Geospatial Index
Text Indexes
Hashed Indexes
5 -
Ín
dic
es
68
Diapositiva: 69
Single Field 5
- Ín
dic
es
69
Diapositiva: 70
Compound Index 5
- Ín
dic
es
70
Diapositiva: 71
Multikey Index 5
- Ín
dic
es
71
Diapositiva: 72
Geospatial Index 5
- Ín
dic
es
72
Diapositiva: 73
Opciones 5
- Ín
dic
es
73
Unique
Sparse
TTL indexes
Diapositiva: 74
Ordenación 5
- Ín
dic
es
74
Es muy importante especificar el orden para índices
compuestos ya que de ello depende que el índice se cree
facilitando el orden habitual de consulta.
Diapositiva: 75
Consultas cubiertas 5
- Ín
dic
es
75
Campos de
consulta
Campos devueltos
Índice
Diapositiva: 76
Borrado y actualización 5
- Ín
dic
es
76
Eliminar índices
• Para eliminar un índice utilizaremos el comando dropIndex
como se explica en el siguiente ejemplo.
db.products.dropIndex( { "name": 1 }
Regenerar índices
• Al igual que sucede en las bases de datos relacionales
puede ser necesario recrear de nuevo un índice. Para ello
utilizaremos el comando reIndex
db.products.reIndex()
Diapositiva: 77
1. Introducción
2. Instalación y configuración
3. Operaciones de consulta
4. Operaciones de actualización
5. Índices
6. Aggregation Framework
7. MapReduce
8. MongoDB y Java
77
Diapositiva: 78
De un vistazo 6
- A
gg
re
ga
tio
n F
ra
me
wo
rk
78
Diapositiva: 79
Stage operators 6
- A
gg
re
ga
tio
n F
ra
me
wo
rk
79
$project
$match
$redact
$limit
$skip
$unwind
$group
$sort
$geoNear
$out
Diapositiva: 80
Expressions Boolean
•$and
•$or
•$not
Set operators
•setEquals
•setIntersection
•setUnion
•setDifference
•setIsSubset
•anyElementTrue
•allElementsTrue
6 -
A
gg
re
ga
tio
n F
ra
me
wo
rk
80
Diapositiva: 81
Expressions II 6
- A
gg
re
ga
tio
n F
ra
me
wo
rk
81
Comparison Operators
•$cmp
•$eq
•$gt
•$gte
•$lt
•$lte
•$ne
Arithmetic Operators
•$add
•$subtract
•$multiply
•$divide
•$mod
Diapositiva: 82
Expressions III String Operators
•$concat
•$substr
•$toLower
•$toUpper
•$strcasecmp
Text Search -> $meta
Array -> $size
Variable
•$map
•$let
Literal -> $literal
6 -
A
gg
re
ga
tio
n F
ra
me
wo
rk
82
Diapositiva: 83
Expressions IV Date
•$dayOfYear
•$dayOfMonth
•$dayOfWeek
•$year
•$month
•$week
•$hour
•$minute
•$second
•$millisecond
•$dateToString
Conditional
•$cond
•$ifNull
6 -
A
gg
re
ga
tio
n F
ra
me
wo
rk
83
Diapositiva: 84
Accumulators
$sum
$avg
$first
$last
$max
$min
$push
$addToSet
6 -
A
gg
re
ga
tio
n F
ra
me
wo
rk
84
Diapositiva: 85
Algunos ejemplos 6
- A
gg
re
ga
tio
n F
ra
me
wo
rk
85
Diapositiva: 86
Algunos ejemplos II 6
- A
gg
re
ga
tio
n F
ra
me
wo
rk
86
Diapositiva: 87
1. Introducción
2. Instalación y configuración
3. Operaciones de consulta
4. Operaciones de actualización
5. Índices
6. Aggregation Framework
7. MapReduce
8. MongoDB y Java
87
Diapositiva: 88
Qué es MapReduce 7
- M
ap
Re
du
ce
88
Diapositiva: 89
Javascript para todo… 7
- M
ap
Re
du
ce
89
Diapositiva: 90
Javascript para todo… db.people.mapReduce(map,reduce,{out:‘map_reduce_result’})
7 -
M
ap
Re
du
ce
90
Diapositiva: 91
1. Introducción
2. Instalación y configuración
3. Operaciones de consulta
4. Operaciones de actualización
5. Índices
6. Aggregation Framework
7. MapReduce
8. MongoDB y Java
91
Diapositiva: 92
MongoDB Java Driver 8
- M
on
go
DB
y
J
av
a
92
Diapositiva: 93
Spring Data for MongoDB 8
- M
on
go
DB
y
J
av
a
93
Diapositiva: 94
Muchas gracias por su atención
94