3. 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
4. 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
5. Escalabilidad
Generalmente requiere piezas independientes,
particionamiento de la información y tolerancia a los fallos
Capacidad 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 .
6. 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
7. 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.
8. 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.
9. Modelo Relacional
Las entidades del dominio del problema se modelan como tablas
Las tablas tienen columnas y registros
Los atributos van como columnas y son los mismos para todos los
registros
Cada 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
12. 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.
14. 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
15. Datos en Facebook
1 980 millones de HD de 500 GB
6 veces en 4 años
988 EB
322 millones de HD de 500GB
161 EB
2006 2010
22. Mongo DB
orientada a documentos
Documentos estilo JSON (BSON)
Colección (Similar a tabla)
Consultas simples con JSON
Consultas complejas con
Map/Reduce empleando Javascript
23. Apache Cassandra
orientada a columnas
Creada por Facebook
Particionamiento automático
Enfoque en op. de escritura
Consistencia ajustable (CAP)
Servidor en Java usando Thrift
50. EJEMPLO: BLOG
(BITÁCORA DE INTERNET)
posts:contador (COUNTER)
post:id:1 (HASH)
post:id:1:tags (SET)
tag:nombre:posts (ZSET)
posts (ZSET)
51. EJEMPLO: BLOG
(CONTINUACION)
tags (SET)
posts:mes:<m>:anio:<a> (ZSET)
post:slug:<slug> (STRING)
meses (ZSET)
visitas (ZSET)
52. 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.php
http://bitbucket.org/nosqldemos/redis-blog-demo/
Un agradecimiento a Ernesto Anaya (texai) por el
trabajo en CSS.
53. 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