Bases de datos NoSQL - Huancayo - 2010

57
Bases de Datos NoSQL Antonio Ognio [email protected]

description

Una introducción a las bases de datos agrupadas bajo la etiqueta "NoSQL", conceptos relacionados y problemática que origina su creación y evolución.

Transcript of Bases de datos NoSQL - Huancayo - 2010

Page 1: Bases de datos NoSQL - Huancayo - 2010

Bases de Datos NoSQL

Antonio [email protected]

Page 2: Bases de datos NoSQL - Huancayo - 2010

Conceptosbásicos

Page 3: Bases de datos NoSQL - Huancayo - 2010

Rendimiento

Capacidad de llevar a cabo una tarea comparada con los recursos utilizados

Si un sistema puede hacer más que otro usando la misma cantidad de recursos entonces tiene un mayor rendimiento

Page 4: Bases de datos NoSQL - Huancayo - 2010

Alta disponibilidad

Capacidad de un sistema de ofrecer cierto nivel de funcionalidad y servicio en sus operaciones de manera ininterrumpida.

Generalmente esto requiere tener servidores redundantes, replicar la información y ofrecer tolerancia a los fallos

Page 5: Bases de datos NoSQL - Huancayo - 2010

Escalabilidad

Generalmente requiere piezas independientes, particionamiento de la información y tolerancia a los fallosCapacidad de un sistema de poder crecer en número de usuarios y operaciones realizadas de manera continua sin que la calidad de su servicio se vea afectada.

Page 6: Bases de datos NoSQL - Huancayo - 2010

Tipos de escalabilidad

Vertical: El sistema cree al usuario equipos más potentes y con más recursos.

Horizontal: El sistema crece dividiendo la carga de trabajo entre más equipos de las mismas características

Page 7: Bases de datos NoSQL - Huancayo - 2010

Tolerancia a fallos

Capacidad de un sistema de poder recuperarse en caso de que alguno de sus componentes falle o deje de operar.

Generalmente mente requiere utilizar equipos con funciones redundantes y replicar la información constantemente.

Page 8: Bases de datos NoSQL - Huancayo - 2010

Sistema Distribuido

Es un sistema en el que las características ofrecidas solo se logran entregar utilizando distintos equipos trabajando en simultáneo de manera conjunta y colaborativa.

Page 9: Bases de datos NoSQL - Huancayo - 2010

Modelo Relacional

Las entidades del dominio del problema se modelan como tablasLas tablas tienen columnas y registrosLos atributos van como columnas y son los mismos para todos los registrosCada tabla tiene una estructura definida (Schema) Las relaciones se logran asociando los valores de ciertas columnas de una tabla con ciertas columnas de otras tablas

Page 10: Bases de datos NoSQL - Huancayo - 2010

ACID

Atomicidad (Atomicity)

Consistencia (Consistency)

Independencia (Isolation)

Durabilidad (Durability)

Page 11: Bases de datos NoSQL - Huancayo - 2010

Teorema CAP

Solo es posible obtener dos de las propiedades al mismo tiempo

Page 12: Bases de datos NoSQL - Huancayo - 2010

Map/Reduce

Estrategia para calcular un resultado que divide la entrada de datos en un montón de partes procesadas independientemente en paralelo para luego consolidar todos los resultados en un solo valor o conjunto.

Page 13: Bases de datos NoSQL - Huancayo - 2010

NoSQL(No solo SQL)

Page 14: Bases de datos NoSQL - Huancayo - 2010

Motivaciones

Enormes volúmenes de datos

Dificultad de escalar operaciones de escritura

Dificultad de gestionar esquemas a gran escala

Necesidad de mayor velocidad y rendimiento

Page 15: Bases de datos NoSQL - Huancayo - 2010

Datos en Facebook

161 EB

988 EB

2006 2010

6 veces en 4 años

322 millones de HD de 500GB

1 980 millones de HD de 500 GB

Page 16: Bases de datos NoSQL - Huancayo - 2010

Características

No relacionales

Distribuídas

Escalabilidad horizontal

Schema-less (Sin estructura)

Eventualmente consistentes

Page 17: Bases de datos NoSQL - Huancayo - 2010

Categorías

Key-Value stores

Document stores

Column-oriented stores

Graph Databases

Page 18: Bases de datos NoSQL - Huancayo - 2010

Key-Value Storehash / diccionario

Memcached

Dynamo (inspiración de otras)

Redis

Riak

Tokyo Cabinet

Page 19: Bases de datos NoSQL - Huancayo - 2010

Document Storessemi-estructuradas

IBM Lotus

MongoDB

CouchDB

Page 20: Bases de datos NoSQL - Huancayo - 2010

Column-Oriented Storessemi-estructuradas

BigTable (inspiración de otras)

HBase

Cassandra

Hypertable

Page 21: Bases de datos NoSQL - Huancayo - 2010

Graph Database

InfoGrid

Neo4j

Page 22: Bases de datos NoSQL - Huancayo - 2010

Mongo DBorientada a documentos

Documentos estilo JSON (BSON)

Colección (Similar a tabla)

Consultas simples con JSON

Consultas complejas con Map/Reduce empleando Javascript

Page 23: Bases de datos NoSQL - Huancayo - 2010

Apache Cassandraorientada a columnasCreada por Facebook

Particionamiento automático

Enfoque en op. de escritura

Consistencia ajustable (CAP)

Servidor en Java usando Thrift

Page 24: Bases de datos NoSQL - Huancayo - 2010

Modelo de datos de Cassandra

Page 25: Bases de datos NoSQL - Huancayo - 2010

Si solo tienes un martillo, todo te parece

un clavo.

Page 26: Bases de datos NoSQL - Huancayo - 2010

REDIS(Remote Dictionary Server)

Page 27: Bases de datos NoSQL - Huancayo - 2010

“La memoria es el nuevo

disco, el disco es la nueva

cinta” — jim gray

Page 28: Bases de datos NoSQL - Huancayo - 2010

FortalezasDisco duro

- durabilidad

- capacidad

- acceso sequencial (= “cinta”)

memoria

- acceso aleatorio

- baja latencia

Page 29: Bases de datos NoSQL - Huancayo - 2010

Latencia relativa

Registros 0.1

Memoria Cache 1

Memoria RAM 10

Disco Duro 1.000.000

Page 30: Bases de datos NoSQL - Huancayo - 2010

Latencia relativa

Registros 0.1

Memoria Cache 1

Memoria RAM 10

Disco Duro 1.000.000

Page 31: Bases de datos NoSQL - Huancayo - 2010

flickr.com/photos/36688133@N00/3655892919

Page 32: Bases de datos NoSQL - Huancayo - 2010

Berlin - Londres

F-16 6 minutos

Avión 1 hora

Tren 10 horas

Automóvilmalogrado

114 años

Page 33: Bases de datos NoSQL - Huancayo - 2010

flickr.com/photos/64498037@N00/3107322938

Page 34: Bases de datos NoSQL - Huancayo - 2010

flickr.com/photos/atzu/2645776918

redis

Page 35: Bases de datos NoSQL - Huancayo - 2010

4897 GET/s 5128 SET/s

benchmark

code.google.com/p/redis/wiki/Benchmarks

Page 36: Bases de datos NoSQL - Huancayo - 2010

flickr.com/photos/mbiddulph/3836727468

Page 37: Bases de datos NoSQL - Huancayo - 2010

flickr.com/photos/mbiddulph/3836727468

sheeva plug

Page 38: Bases de datos NoSQL - Huancayo - 2010

flickr.com/photos/mbiddulph/3836727468

sheeva plug

$99 99

Page 39: Bases de datos NoSQL - Huancayo - 2010

CaracterísticasEstructuras de datos

- enteros, cadenas

- listas, conjuntos, diccionarios

- canales

Operaciones atómicas

- get, set, increment

- push, pop ...

Page 40: Bases de datos NoSQL - Huancayo - 2010

Memoria virtual

- llaves siempre en memoria

- Intercambio sobre demandaDurabilidad

- append-only log file

- background snapshots

Replicación

Características

Page 41: Bases de datos NoSQL - Huancayo - 2010

Implementación

- 10k lineas de ANSI C

- Base de código clara y legible

- Salvatore Sanfilipo (Italia)

- Sponsor de VMware

Page 42: Bases de datos NoSQL - Huancayo - 2010
Page 43: Bases de datos NoSQL - Huancayo - 2010

Librerías cliente

- redis-cli, telnet

- c, c#

- ruby, python, perl

- java, scala

- php

- [muchas más ...]

Page 44: Bases de datos NoSQL - Huancayo - 2010

Instalación en Linux (UNIX en general)

> wget redis.tgz

> tar xzf redis.tgz> cd redis> make

> ./redis-server

Page 45: Bases de datos NoSQL - Huancayo - 2010

CADENAS

SETGETDELGETSETMGETINCR / DECR

Page 46: Bases de datos NoSQL - Huancayo - 2010

LISTAS

RPUSH / RPOPLPUSH / LPOP

LRANGERPOPLPUSHSORT

Page 47: Bases de datos NoSQL - Huancayo - 2010

CONJUNTOS(SETS)

SADD / SREMSMOVESINTER / SINTERSTORESUNION / SUNIONSTORESDIFF / SDIFFSTORESORT

Page 48: Bases de datos NoSQL - Huancayo - 2010

CONJUNTOS ORDENADOS(ZSETS)

ZADDZREM

ZRANGE? ZINTER / ZUNION / ZDIFF ?

Page 49: Bases de datos NoSQL - Huancayo - 2010

DICCIONARIOS(HASHES)

HSETHGET

HDELHGETALLHEXISTS

Page 50: Bases de datos NoSQL - Huancayo - 2010

EJEMPLO: BLOG(BITÁCORA DE INTERNET)

posts:contador (COUNTER)post:id:1 (HASH)

post:id:1:tags (SET)tag:nombre:posts (ZSET)posts (ZSET)

Page 51: Bases de datos NoSQL - Huancayo - 2010

EJEMPLO: BLOG(CONTINUACION)

tags (SET)posts:mes:<m>:anio:<a> (ZSET)

post:slug:<slug> (STRING)meses (ZSET)visitas (ZSET)

Page 52: Bases de datos NoSQL - Huancayo - 2010

Aplicación de Ejemplo:- Un blog muy simple escrito en PHP

- No usa ningún framework MVC o mapeador de objetos

- La interacción con Redis está en el archivo modelos.inc.phphttp://bitbucket.org/nosqldemos/redis-blog-demo/

Un agradecimiento a Ernesto Anaya (texai) por el trabajo en CSS.

Page 53: Bases de datos NoSQL - Huancayo - 2010

Resúmen- NoSQL = No solo SQL

- Elegir la herramienta adecuada

- No hay que cruzar la línea roja

- Nueva manera de modelar

- Casi todos productos opensource

- Redis es simple y bastante flexible

Page 54: Bases de datos NoSQL - Huancayo - 2010

ENLACES

http://redis.iohttp://code.google.com/p/redis/

http://rediscookbook.orghttp://mongodb.orghttp://cassandra.apache.org

Page 55: Bases de datos NoSQL - Huancayo - 2010

preguntas

Page 56: Bases de datos NoSQL - Huancayo - 2010

CréditosAlgunos slides y la plantillade la presentación tomadas

desde:

http://www.slideshare.net/tim.lossen.de/redis-memory-as-the-new-disk

Page 57: Bases de datos NoSQL - Huancayo - 2010

Bases de Datos NoSQL

Antonio [email protected]