nosql-131129101642-phpapp01

download nosql-131129101642-phpapp01

of 27

Transcript of nosql-131129101642-phpapp01

  • 8/13/2019 nosql-131129101642-phpapp01

    1/27

    Introduccin a NoSQLRubyFunDay Argentina 2013

    Damian Martinelli

    @damianmarti

  • 8/13/2019 nosql-131129101642-phpapp01

    2/27

    Introduccin a NoSQL

    Conceptos Generales

    Relacional

    Clave/Valor

    Columnas Documentos

    Grafos

  • 8/13/2019 nosql-131129101642-phpapp01

    3/27

    Conceptos Generales: ACID

    Atomicidad

    Consistencia

    Aislamiento

    Durabilidad

  • 8/13/2019 nosql-131129101642-phpapp01

    4/27

    Conceptos Generales: CAP

    Consistente

    Disponibilidad

    Tolerante a particiones

    Teorema CAP: elegir 2

    Depende del negocio

  • 8/13/2019 nosql-131129101642-phpapp01

    5/27

    Conceptos Generales: Mapreduce

    Map

    Reduce

    Paralelismo

  • 8/13/2019 nosql-131129101642-phpapp01

    6/27

    Relacional

    Tablas bidimensionales

    Estructurada

    Relacin de datos mediante claves forneas

    SQL

    ACID

    Muchas features

  • 8/13/2019 nosql-131129101642-phpapp01

    7/27

    Relacional - Motores

    MySQL

    MSSQL

    Oracle

    SQLite

    PostgreSQL

    MariaDB

  • 8/13/2019 nosql-131129101642-phpapp01

    8/27

    Relacional +1

    Se sabe cmo son los datos, pero no cmo

    se va a usar

  • 8/13/2019 nosql-131129101642-phpapp01

    9/27

    Relacional -1

    Datos muy variables

    Datos con muchas jerarquas

    Escalar

  • 8/13/2019 nosql-131129101642-phpapp01

    10/27

    Clave/Valor

    Mapea claves a valores

    Sin estructura

    Muy rpidos para accesos por clave

    Simples de distribuir

    Muchas veces usados como cache

  • 8/13/2019 nosql-131129101642-phpapp01

    11/27

    Clave/Valor - Motores

    Memcached

    Voldemort

    Redis

    Riak

    Tokyo/Kyoto Cabinet

    Google LevelDB

  • 8/13/2019 nosql-131129101642-phpapp01

    12/27

    Clave/Valor +1

    Escalar horizontalmente

    Muchos accesos solo por clave

    Datos poco relacionados

  • 8/13/2019 nosql-131129101642-phpapp01

    13/27

    Clave/Valor -1

    Necesidad de consultas complejas

  • 8/13/2019 nosql-131129101642-phpapp01

    14/27

    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

  • 8/13/2019 nosql-131129101642-phpapp01

    15/27

    Columnas - Motores

    HBase

    Cassandra

    Hypertable

    Google BigTable Accumulo

  • 8/13/2019 nosql-131129101642-phpapp01

    16/27

    Columnas +1

    Escalabilidad horizontal

    Compresin y versionado

  • 8/13/2019 nosql-131129101642-phpapp01

    17/27

    Columnas -1

    Cuando no se sabe cmo se van a usar los

    datos

    Pocos datos (entran en un solo server)

  • 8/13/2019 nosql-131129101642-phpapp01

    18/27

    Columnas != Columnas Relacional

    Base de datos relacionales que guardan los

    datos por columnas

    Motores: Sybase IQ C-Store

    Vertica

    VectorWise

    MonetDB ParAccel

    Infobright

  • 8/13/2019 nosql-131129101642-phpapp01

    19/27

    Documentos

    Esquemas flexibles

    Objetos anidados, no relacionados

    Facil de distribuir

    Desnormalizacin de datos

  • 8/13/2019 nosql-131129101642-phpapp01

    20/27

    Documentos - Motores

    MongoDB

    CouchDB

    OrientDB

  • 8/13/2019 nosql-131129101642-phpapp01

    21/27

    Documentos +1

    Cuando no se sabe cmo van a ser los

    datos

  • 8/13/2019 nosql-131129101642-phpapp01

    22/27

    Documentos -1

    Consultas complejas con joins (cada

    documento deberia contener toda la

    informacin que generalmente se va a

    querer sobre l)

  • 8/13/2019 nosql-131129101642-phpapp01

    23/27

    Grafos

    Datos almacenados en forma de grafo

    Los datos se navegan mediante nodos y

    aristas

    Los nodos y las relaciones pueden tenerpropiedades (pares clave/valor)

    ACID

  • 8/13/2019 nosql-131129101642-phpapp01

    24/27

    Grafos - Motores

    Neo4J

    InfiniteGraph

  • 8/13/2019 nosql-131129101642-phpapp01

    25/27

    Grafos +1

    Aplicaciones donde hay redes

    Datos muy interconectados

  • 8/13/2019 nosql-131129101642-phpapp01

    26/27

  • 8/13/2019 nosql-131129101642-phpapp01

    27/27

    Preguntas?

    Repositorios con el cdigo del taller:

    https://github.com/damianmarti/rubyfunday2013-redis

    https://github.com/damianmarti/rubyfunday2013-mongodb https://github.com/damianmarti/movies_graph

    https://github.com/damianmarti/movies_graphhttps://github.com/damianmarti/rubyfunday2013-mongodbhttps://github.com/damianmarti/rubyfunday2013-redis