Introducción a NoSQL con MongoDB

4,317 views

Published on

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

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,317
On SlideShare
0
From Embeds
0
Number of Embeds
210
Actions
Shares
0
Downloads
173
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Introducción a NoSQL con MongoDB

  1. 1. NoSQL con MongoDB Erick Camacho @ecamacho erick.camacho@tidyslice.com 1
  2. 2. Agenda • ¿Por qué? • ¿Cómo? • Opciones • Mongo 2
  3. 3. Si tienes un martillo... 3
  4. 4. todo parece un clavo 4
  5. 5. NoSQL es acerca de elegir la herramienta adecuada. 5
  6. 6. Motivaciones 6
  7. 7. El performance es el Rey 7
  8. 8. El acceso a datos es el principal cuello de botella 8
  9. 9. ¿Cómo escalas un RDBMS? 9
  10. 10. Escalamiento Vertical • Más recursos para el servidor: CPU, RAM, interfaces de red, etc. 10
  11. 11. Escalamiento Vertical "#$%&'%! "#$%&'%! )$*+,-(*%-$% ./0,1"1,(2$#% !"#$% &$% &"'(#% ! 11
  12. 12. Escalamiento Vertical "#$%&'%! "#$%&'%! "#$%&'%! "#$%&'%! "#$%&'%! "#$%&'%! "#$%&'%! )$*+,-(*%-$% )$*+,-(*%-$% )$*+,-(*%-$% )$*+,-(*%-$% ./0,1"1,(2$#% ./0,1"1,(2$#% ./0,1"1,(2$#% ./0,1"1,(2$#% !"#$% !"#$% &$% &$% &"'(#% &"'(#% ! ! 11
  13. 13. Escalamiento Vertical "#$%&'%! "#$%&'%! "#$%&'%! "#$%&'%! "#$%&'%! "#$%&'%! "#$%&'%! )$*+,-(*%-$% )$*+,-(*%-$% )$*+,-(*%-$% )$*+,-(*%-$% ./0,1"1,(2$#% ./0,1"1,(2$#% ./0,1"1,(2$#% ./0,1"1,(2$#% !"#$% !"#$% &$% &$% &"'(#% &"'(#% ! ! 11
  14. 14. Escalamiento vertical • Limitado por hardware • Arquitectura con problemas de bottlenecks 12
  15. 15. Escalamiento Horizontal • Las RDBMS no se adaptan a esta arquitectura • ¿TX distribuidas? Muy costosas • ¿Cómo distribuyes las escrituras? • ¿Shardening? • ¿Desnormalización? 13
  16. 16. Escalamiento horizontal • Replicación Maestro - Esclavo • Replicación Maestro (escrituras)- MultiEsclavos (lecturas) • Replicación MultiMaestro (shardening) 14
  17. 17. Escalamiento Horizontal • ¿Qué pasa con las escrituras? • ¿Cómo escalas las transacciones? • ¿y el shardening? 15
  18. 18. ¿Todo dominio es relacional? 16
  19. 19. ¿Todo debe ser transaccional? • A: Atomicity • C: Consistency • I: Isolated • D: Durability 17
  20. 20. Teorema CAP ! "#$%&%'($)*! +,-&.-/&.&'*! 0-1'&'&#$! 2#.(1-$)(! 18
  21. 21. Teorema CAP ! "#$%&%'($)*! ! "#$%&! +,-&.-/&.&'*! 0-1'&'&#$! 2#.(1-$)(! 18
  22. 22. NoSQL: tú decides 19
  23. 23. NoSQL: tú decides Pensar es difícil 19
  24. 24. Categorías de soluciones NoSQL 20
  25. 25. 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
  26. 26. Orientadas a Objetos 22
  27. 27. 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
  28. 28. Key - Value Wordpress Youtube memcached Twitter Craiglist GitHub Redis The Guardian Proyecto Voldemort LinkedIn 24
  29. 29. Key - Value • Muy útiles para entornos distribuidos. • Alto performance. • Lenguaje de consulta muy pobre. Requiere procesamiento externo de los datos. 25
  30. 30. 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
  31. 31. Orientadas a documento foursquare sourceForge Justin.tv SimpleDB 27
  32. 32. 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
  33. 33. Orientadas a columnas 29
  34. 34. Orientadas a columnas 29
  35. 35. Orientadas a columnas 29
  36. 36. Orientadas a Columnas facebook twitter digg reddit BigTable 30
  37. 37. 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
  38. 38. Orientadas a Grafos 32
  39. 39. ¿Cuál usar? 33
  40. 40. ¿Cuál usar? Depende de tus requerimientos 33
  41. 41. Nathan Hurst http://blog.nahurst.com/visual-guide-to-nosql-systems 34
  42. 42. ¿Y si tenemos de varios tipos en una misma aplicación? 35
  43. 43. • 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
  44. 44. DEMO 37
  45. 45. Preguntas 38

×