Introducción a NoSQL con MongoDB

45
NoSQL con MongoDB Erick Camacho @ecamacho [email protected] 1

description

Introducción a NoSQL y a MongoDB.Charla dada en el Gulev 2010 en Veracruz, México.

Transcript of Introducción a NoSQL con MongoDB

Page 1: Introducción a NoSQL con MongoDB

NoSQL con MongoDBErick Camacho@ecamacho

[email protected]

1

Page 2: Introducción a NoSQL con MongoDB

Agenda

• ¿Por qué?

• ¿Cómo?

• Opciones

• Mongo

2

Page 3: Introducción a NoSQL con MongoDB

Si tienes un martillo...

3

Page 4: Introducción a NoSQL con MongoDB

todo parece un clavo

4

Page 5: Introducción a NoSQL con MongoDB

NoSQL es acerca de elegir la

herramienta adecuada.

5

Page 6: Introducción a NoSQL con MongoDB

Motivaciones

6

Page 7: Introducción a NoSQL con MongoDB

El performance es el Rey

7

Page 8: Introducción a NoSQL con MongoDB

El acceso a datos es el principal cuello de

botella

8

Page 9: Introducción a NoSQL con MongoDB

¿Cómo escalas un RDBMS?

9

Page 10: Introducción a NoSQL con MongoDB

Escalamiento Vertical• Más recursos para el servidor: CPU, RAM,

interfaces de red, etc.

10

Page 11: Introducción a NoSQL con MongoDB

Escalamiento Vertical

!

"#$%&'%! "#$%&'%!

!"#$%&$%

&"'(#%

)$*+,-(*%-$%./0,1"1,(2$#%

11

Page 12: Introducción a NoSQL con MongoDB

Escalamiento Vertical

!

"#$%&'%! "#$%&'%!

!"#$%&$%

&"'(#%

)$*+,-(*%-$%./0,1"1,(2$#%

!

"#$%&'%! "#$%&'%!

!"#$%&$%

&"'(#%

"#$%&'%! "#$%&'%! "#$%&'%!

)$*+,-(*%-$%./0,1"1,(2$#%

)$*+,-(*%-$%./0,1"1,(2$#%

)$*+,-(*%-$%./0,1"1,(2$#%

11

Page 13: Introducción a NoSQL con MongoDB

Escalamiento Vertical

!

"#$%&'%! "#$%&'%!

!"#$%&$%

&"'(#%

)$*+,-(*%-$%./0,1"1,(2$#%

!

"#$%&'%! "#$%&'%!

!"#$%&$%

&"'(#%

"#$%&'%! "#$%&'%! "#$%&'%!

)$*+,-(*%-$%./0,1"1,(2$#%

)$*+,-(*%-$%./0,1"1,(2$#%

)$*+,-(*%-$%./0,1"1,(2$#%

11

Page 14: Introducción a NoSQL con MongoDB

Escalamiento vertical

• Limitado por hardware

• Arquitectura con problemas de bottlenecks

12

Page 15: Introducción a NoSQL con MongoDB

Escalamiento Horizontal

• Las RDBMS no se adaptan a esta arquitectura

• ¿TX distribuidas? Muy costosas

• ¿Cómo distribuyes las escrituras?

• ¿Shardening?

• ¿Desnormalización?

13

Page 16: Introducción a NoSQL con MongoDB

Escalamiento horizontal

• Replicación Maestro - Esclavo

• Replicación Maestro (escrituras)- MultiEsclavos (lecturas)

• Replicación MultiMaestro (shardening)

14

Page 17: Introducción a NoSQL con MongoDB

Escalamiento Horizontal

• ¿Qué pasa con las escrituras?

• ¿Cómo escalas las transacciones?

• ¿y el shardening?

15

Page 18: Introducción a NoSQL con MongoDB

¿Todo dominio es relacional?

16

Page 19: Introducción a NoSQL con MongoDB

¿Todo debe ser transaccional?

• A: Atomicity

• C: Consistency

• I: Isolated

• D: Durability

17

Page 20: Introducción a NoSQL con MongoDB

Teorema CAP! "#$%&%'($)*!

+,-&.-/&.&'*! 0-1'&'&#$!2#.(1-$)(!

18

Page 21: Introducción a NoSQL con MongoDB

Teorema CAP! "#$%&%'($)*!

+,-&.-/&.&'*! 0-1'&'&#$!2#.(1-$)(!

! "#$%&!

18

Page 22: Introducción a NoSQL con MongoDB

NoSQL: tú decides

19

Page 23: Introducción a NoSQL con MongoDB

NoSQL: tú decides

Pensar es difícil19

Page 24: Introducción a NoSQL con MongoDB

Categorías de soluciones NoSQL

20

Page 25: Introducción a NoSQL con MongoDB

Orientadas a Objetos

• El tipo más viejo (1980’s)

• Permite herencia entre tablas, polimorfismo.

• Lenguaje de consulta orientado a objetos.

• Ha influenciado la evolución de las RDBMS (sql 99, Oracle, Postgres, etc).

21

Page 26: Introducción a NoSQL con MongoDB

Orientadas a Objetos

22

Page 27: Introducción a NoSQL con MongoDB

Key-Value

• Sólo almacenan dos cosas: 1 campo clave asociado a 1 dato binario.

• Operaciones Put, Get, Delete.

• Piensa en una HashTable distribuida.

• Todo en memoria, algunas persisten a disco de forma asíncrona.

• Útil como cache en combinación con una RDBMS.

23

Page 28: Introducción a NoSQL con MongoDB

Key - Value

Proyecto Voldemort

WordpressYoutubeTwitter

CraiglistGitHub

The Guardian

LinkedIn

memcached

Redis

24

Page 29: Introducción a NoSQL con MongoDB

Key - Value

• Muy útiles para entornos distribuidos.

• Alto performance.

• Lenguaje de consulta muy pobre. Requiere procesamiento externo de los datos.

25

Page 30: Introducción a NoSQL con MongoDB

Orientadas a documentos

• Iguales a las Key - Value, pero el dato no es binario.

• Debe ser un formato que el servidor entienda: XML, JSON, BSON..

• Permite consultas más complejas sobre atributos.

• Son usadas como sustituto de las RDBMS.

26

Page 31: Introducción a NoSQL con MongoDB

Orientadas a documento

foursquaresourceForge

Justin.tv

SimpleDB

27

Page 32: Introducción a NoSQL con MongoDB

Orientadas a columnas

• La información se representa en columnas.

• Mayor rapidez para consultas sobre pocas columnas.

• Mayor rapidez para agregados.

• Peor performance para escrituras.

28

Page 33: Introducción a NoSQL con MongoDB

Orientadas a columnas

29

Page 34: Introducción a NoSQL con MongoDB

Orientadas a columnas

29

Page 35: Introducción a NoSQL con MongoDB

Orientadas a columnas

29

Page 36: Introducción a NoSQL con MongoDB

Orientadas a Columnasfacebooktwitter

diggreddit

BigTable

30

Page 37: Introducción a NoSQL con MongoDB

Orientadas a Grafos

• Datos como nodos y relaciones.

• Las relaciones pueden ser bidireccionales y tener atributos.

• Permite hacer consultas complejas a relaciones.

• Permite gran velocidad de recorrido de las relaciones.

31

Page 38: Introducción a NoSQL con MongoDB

Orientadas a Grafos

32

Page 39: Introducción a NoSQL con MongoDB

¿Cuál usar?

33

Page 40: Introducción a NoSQL con MongoDB

¿Cuál usar?

Depende de tus requerimientos

33

Page 41: Introducción a NoSQL con MongoDB

Nathan Hursthttp://blog.nahurst.com/visual-guide-to-nosql-systems

34

Page 42: Introducción a NoSQL con MongoDB

¿Y si tenemos de varios tipos en una misma

aplicación?

35

Page 43: Introducción a NoSQL con MongoDB

• Orientado a Documento.

• Usa el formato BSON: Binary JSON.

• Permite consultas muy avanzadas.

• Preparado para escalar horizontalmente.

• Open source con soporte comercial con 10Gen.

36

Page 44: Introducción a NoSQL con MongoDB

DEMO

37

Page 45: Introducción a NoSQL con MongoDB

Preguntas

38