Introducción a NoSQL - RubyFunDay 2013

757 views

Published on

Introducción a los diferentes tipos de base de datos no relacionales, como ser clave/valor, por columnas, de documentos y de grafos. Contando las caracteristicas principales de cada una, cuándo es útil, cuándo no, y ejemplos de motores de base de datos disponibles para cada tipo.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
757
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
34
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introducción a NoSQL - RubyFunDay 2013

  1. 1. Introducción a NoSQL RubyFunDay Argentina 2013 Damian Martinelli @damianmarti
  2. 2. Introducción a NoSQL ● ● ● ● ● ● Conceptos Generales Relacional Clave/Valor Columnas Documentos Grafos
  3. 3. Conceptos Generales: ACID ● ● ● ● Atomicidad Consistencia Aislamiento Durabilidad
  4. 4. Conceptos Generales: CAP ● Consistente ● Disponibilidad ● Tolerante a particiones Teorema CAP: elegir 2 Depende del negocio
  5. 5. Conceptos Generales: Mapreduce ● Map ● Reduce ● Paralelismo
  6. 6. Relacional ● ● ● ● ● ● Tablas bidimensionales Estructurada Relación de datos mediante claves foráneas SQL ACID Muchas features
  7. 7. Relacional - Motores ● ● ● ● ● ● MySQL MSSQL Oracle SQLite PostgreSQL MariaDB
  8. 8. Relacional +1 ● Se sabe cómo son los datos, pero no cómo se va a usar
  9. 9. Relacional -1 ● Datos muy variables ● Datos con muchas jerarquías ● Escalar
  10. 10. Clave/Valor ● ● ● ● ● Mapea claves a valores Sin estructura Muy rápidos para accesos por clave Simples de distribuir Muchas veces usados como cache
  11. 11. Clave/Valor - Motores ● ● ● ● ● ● Memcached Voldemort Redis Riak Tokyo/Kyoto Cabinet Google LevelDB
  12. 12. Clave/Valor +1 ● Escalar horizontalmente ● Muchos accesos solo por clave ● Datos poco relacionados
  13. 13. Clave/Valor -1 ● Necesidad de consultas complejas
  14. 14. Columnas ● Sorted map (key: row, col, timestamp) ● Conceptualmente -> tabla, con filas y columnas ● Los datos se almacenan por columnas ● No es costoso agregar columnas ● Cada fila puede tener un conjunto distinto de columnas (valores nulos no ocupan espacio) ● Solo scan y get para consultas
  15. 15. Columnas - Motores ● ● ● ● ● HBase Cassandra Hypertable Google BigTable Accumulo
  16. 16. Columnas +1 ● Escalabilidad horizontal ● Compresión y versionado
  17. 17. Columnas -1 ● Cuando no se sabe cómo se van a usar los datos ● Pocos datos (entran en un solo server)
  18. 18. Columnas != Columnas Relacional ● Base de datos relacionales que guardan los datos por columnas ● Motores: ○ ○ ○ ○ ○ ○ ○ Sybase IQ C-Store Vertica VectorWise MonetDB ParAccel Infobright
  19. 19. Documentos ● ● ● ● Esquemas flexibles Objetos anidados, no relacionados Facil de distribuir Desnormalización de datos
  20. 20. Documentos - Motores ● MongoDB ● CouchDB ● OrientDB
  21. 21. Documentos +1 ● Cuando no se sabe cómo van a ser los datos
  22. 22. Documentos -1 ● Consultas complejas con joins (cada documento deberia contener toda la información que generalmente se va a querer sobre él)
  23. 23. Grafos ● Datos almacenados en forma de grafo ● Los datos se navegan mediante nodos y aristas ● Los nodos y las relaciones pueden tener propiedades (pares clave/valor) ● ACID
  24. 24. Grafos - Motores ● Neo4J ● InfiniteGraph
  25. 25. Grafos +1 ● Aplicaciones donde hay redes ● Datos muy interconectados
  26. 26. Grafos -1 ● Difícil de particionar una misma red (se puede usar el grafo para relaciones y los datos se almacenan en otra db)
  27. 27. Preguntas? Repositorios con el código del taller: ● https://github.com/damianmarti/rubyfunday2013-redis ● https://github.com/damianmarti/rubyfunday2013-mongodb ● https://github.com/damianmarti/movies_graph

×