Cassandra

522 views

Published on

  • Be the first to comment

  • Be the first to like this

Cassandra

  1. 1. Cassandra para dummiesPor: Javier Vidal PeñaFecha: 17 - Mayo - 2012
  2. 2. Érase una vez…
  3. 3. Necesitaban una base de datos
  4. 4. Necesitaban una base de datos relacional
  5. 5. Necesitaban
  6. 6. id alias name bio location web1 JaVidalPe Javier Vidal Joven, sin experiencia, pero con muchas ganas Almería de aprender. Internship en http://www.kuapay.com y fundador del @ProyectoTawea.2 MiguelAngel_LV Miguel Angel Programador de Java, C, C++, PHP, Android, Almería http://miguelangellv. Javascript... Usuario de Linux y Android. En wordpress.com/ Google+ es donde muestro lo mejor de mí http://gplus.to/miguelangellv3 Piquerworld Jose Manuel Entrepreneur & New Ideas Developer. Por suerte Spain el mundo esta lleno de locos. :D4 nicogarm87 Nicolas Garcia5 joseferrer Jose Ferrer Ruby on Rails developer at @wecanclick & Almería http://moviendo.me @wedfotospain6 valgreens Antonio Valverde Estudiante de Teleco y blogger amateur. Internet Almería http://www.valgreens como hobby. Geek y desarrollo web freelance .es/ junior. Socio de la AWGR y colaboro con GTUG Granada7 Sergio_LMarqu Sergio Lopez ez.. … … … … …
  7. 7. AtomicityDurability ACID Consistency Isolation
  8. 8. ACID yEscalabilidad
  9. 9. #nosql
  10. 10. 1. How will we add new machines?2. Are their any single points of failure?3. Do the writes scale as well?4. How much administration will the system require?5. If its open source, is there a healthy community?6. How much time and effort would we have to expend to deploy and integrate it?7. Does it use technology which we know we can work with?
  11. 11. No existe un único punto de fallo
  12. 12. Fácilmente escalable
  13. 13. Productiva comunidad
  14. 14. • 150 nodos• 800M usuarios• 200TB de datos
  15. 15. ¿Cómo funciona?
  16. 16. Modelo clave -> valor“78423”  { “name”: “Miguel Ángel”, “pass”: 1234 }
  17. 17. Sin esquema“78423”  { “name”: “Miguel Ángel”, “pass”: 1234 }“12314”  { “name”: “Javier Vidal”, “age”: 23}“43561”  { “email”: “pepe@tawea.com”, “color”: “red”}
  18. 18. Sin relaciones Group by Inner join Delete cascade …
  19. 19. Organizado en familias de columnasclave valor alias name bio Web12314 MiguelAngel Miguel Ángel Programador de Java, C, C++, PHP, Android, Javascript... Usuario de Linux y Android. En http://gplus.to/miguelangellv _LV López Google+ es donde muestro lo mejor de mí alias name bio34252 Estudiante de Ing. Informatica de la UAL. Usuario javimb9 Javi Imb. de GNU/Linux y Android, y amante del Software Libre y el FutbolChapas. alias name bio location12341 ProyectoTaw Jóvenes con ilusión y muchas ganas de trabajar. Proyecto Tawea Almería, Almería eate Objetivo: Tawea.
  20. 20. Organizado en familias de columnasclave valor alias name bio Web12314 MiguelAngel Miguel Ángel Programador de Java, C, C++, PHP, Android, Javascript... Usuario de Linux y Android. En http://gplus.to/miguelangellv _LV López Google+ es donde muestro lo mejor de mí alias name bio34252 Estudiante de Ing. Informatica de la UAL. Usuario javimb9 Javi Imb. de GNU/Linux y Android, y amante del Software Libre y el FutbolChapas.12341 alias name bio location ProyectoTaw Jóvenes con ilusión y muchas ganas de trabajar. Proyecto Tawea Almería, Almería eate Objetivo: Tawea.
  21. 21. Organizado en super columnasclave valor author text date 4324 Miguel Ángel a ver si saco tiempo. En uno de los proyectos que estoy ahora nos hemos pillado despacho en el 2012-04-17T10:24:04+00:00 López CADE, que está cerquita vuestra.12314 author text date 3453 Mu buenas! Qué es exactamente? Me sale un joseferrer listado con peña de Almería. Cómo vais con lo 2012-04-17T10:24:04+00:00 vuestro? author text date12341 2424 pepe Hola que tal 2012-04-17T10:24:04+00:00
  22. 22. Organizado en super columnasclave valor author text date 4324 Miguel Ángel a ver si saco tiempo. En uno de los proyectos que estoy ahora nos hemos pillado despacho en el 2012-04-17T10:24:04+00:00 López CADE, que está cerquita vuestra.12314 author text date 3453 Mu buenas! Qué es exactamente? Me sale un joseferrer listado con peña de Almería. Cómo vais con lo 2012-04-17T10:24:04+00:00 vuestro?12341 author text date 2424 pepe Hola que tal 2012-04-17T10:24:04+00:00
  23. 23. Operaciones
  24. 24. Get en familia de columnasusuario = get(3);nombre = usuario [“nombre”];
  25. 25. Get en super columnasbandeja = get(3);mensaje= bandeja[1231];autor = bandeja[1231][“autor”];
  26. 26. Multigetusuarios= multiget({2,5,7});usuario = usuarios[2];
  27. 27. Insert en familia de columnasuser = { “alias” : “prueba”, “name” : “Pepe”, “bio” : “Mi vida.” };insert(1234,user);
  28. 28. Insert en súper columnasinbox = { 1231: { “author” : “pepe”, “text” : “hola que tal”, “date” : “2012-4-17T24”}, 1232: { “author” : “juan”, “text” : “hola manuel”, “date” : “2012-4-17T24”}};insert(1234, inbox );
  29. 29. Ejemplo:Ver tu muro de tweeter
  30. 30. users users_tweets tweets1 {name:Javier Vidal} 1 {2,4,6,9,10,12,15,16,19} 1 {autor:1,text:Hola vaya, vaya …2 {name:Miguel Angel} 2 {3,6,7,10} 2 {auto:2,text:Informáticos de la…3 {name:Jose Manuel} 3 {8,9,11,16,22,23,24} 3 {auto:1,text:Ey como va el trab…4 {name:Nicolas Garcia} 4 {1,4,5,7,8,12,13,16,18,19} 4 {autor:5, text:Mi enhorabuena…5 {name:Jose Ferrer} 5 {12,13,15,16,18,19,20} 5 {autor:3, text: El futuro pertene…6 {name:Antonio Valverde} 6 {3,4,6,8,9,10} 6 {autor:2, text:G+: Comienza el …7 {name:Sergio Lopez} 7 {4,5,7,9,12,14,17,18} 7 {autor:7, text:Felicidades @gl … 8 {autor:6, text:@galatea128 co… 9 {autor:5, text:Como mola la A… 10 {autor:2, text: Exacto, están ec… 11 {autor:6, text:Plantilla EL BICHO..
  31. 31. users users_tweets tweets1 {name:Javier Vidal} 1 {2,4,6,9,10,12,15,16,19} 1 {autor:1,text:Hola vaya, vaya …2 {name:Miguel Angel} 2 {3,6,7,10} 2 {auto:2,text:Informáticos de la…3 {name:Jose Manuel} 3 {8,9,11,16,22,23,24} 3 {auto:1,text:Ey como va el trab…4 {name:Nicolas Garcia} 4 {1,4,5,7,8,12,13,16,18,19} 4 {autor:5, text:Mi enhorabuena…5 {name:Jose Ferrer} 5 {12,13,15,16,18,19,20} 5 {autor:3, text: El futuro pertene…6 {name:Antonio Valverde} 6 {3,4,6,8,9,10} 6 {autor:2, text:G+: Comienza el …7 {name:Sergio Lopez} 7 {4,5,7,9,12,14,17,18} 7 {autor:7, text:Felicidades @gl … 8 {autor:6, text:@galatea128 co… 9 {autor:5, text:Como mola la A… 10 {autor:2, text: Exacto, están ec… 1) Get users_tweets para obtener los tweets 11 {autor:6, text:Plantilla EL BICHO.. que deberíamos ver en nuestro muro
  32. 32. users users_tweets tweets1 {name:Javier Vidal} 1 {2,4,6,9,10,12,15,16,19} 1 {autor:1,text:Hola vaya, vaya …2 {name:Miguel Angel} 2 {3,6,7,10} 2 {auto:2,text:Informáticos de la…3 {name:Jose Manuel} 3 {8,9,11,16,22,23,24} 3 {auto:1,text:Ey como va el trab…4 {name:Nicolas Garcia} 4 {1,4,5,7,8,12,13,16,18,19} 4 {autor:5, text:Mi enhorabuena…5 {name:Jose Ferrer} 5 {12,13,15,16,18,19,20} 5 {autor:3, text: El futuro pertene…6 {name:Antonio Valverde} 6 {3,4,6,8,9,10} 6 {autor:2, text:G+: Comienza el …7 {name:Sergio Lopez} 7 {4,5,7,9,12,14,17,18} 7 {autor:7, text:Felicidades @gl … 8 {autor:6, text:@galatea128 co… 9 {autor:5, text:Como mola la A… 10 {autor:2, text: Exacto, están ec… 2) Multiget tweets para obtener la 11 {autor:6, text:Plantilla EL BICHO.. información detallada de cada tweet
  33. 33. users users_tweets tweets1 {name:Javier Vidal} 1 {2,4,6,9,10,12,15,16,19} 1 {autor:1,text:Hola vaya, vaya …2 {name:Miguel Angel} 2 {3,6,7,10} 2 {auto:2,text:Informáticos de la…3 {name:Jose Manuel} 3 {8,9,11,16,22,23,24} 3 {auto:1,text:Ey como va el trab…4 {name:Nicolas Garcia} 4 {1,4,5,7,8,12,13,16,18,19} 4 {autor:5, text:Mi enhorabuena…5 {name:Jose Ferrer} 5 {12,13,15,16,18,19,20} 5 {autor:3, text: El futuro pertene…6 {name:Antonio Valverde} 6 {3,4,6,8,9,10} 6 {autor:2, text:G+: Comienza el …7 {name:Sergio Lopez} 7 {4,5,7,9,12,14,17,18} 7 {autor:7, text:Felicidades @gl … 8 {autor:6, text:@galatea128 co… 9 {autor:5, text:Como mola la A… 10 {autor:2, text: Exacto, están ec… 2) Multiget users para obtener la 11 {autor:6, text:Plantilla EL BICHO.. información detallada de cada autor
  34. 34. Comparativa aproximada350300250200 SQL150 NoSQL10050 0 Tiempo (ms)
  35. 35. Pros Contras• Rápida • Mayor trabajo• Flexible • Expuesto a• Escalable errores
  36. 36. SQL vs NoSQL
  37. 37. SQL vs NoSQL
  38. 38. Elige tu criterio

×