introducción a nosql

Post on 28-May-2015

584 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentación introductoria

TRANSCRIPT

Resum Executiu 東京‘TOKIOTA

INTRODUCCIÓN A NOSQL

Presentación de compañía東京‘ TOKIOTA

Base de datos relacionales

Nacen en los años 70 porque

Almacenamiento es caro

Los datos se normalizan

El almacenamiento se separa de la aplicación

Ventajas

Único modelo disponible por muchos años

Integración

Control de concurrencia

Presentación de compañía東京‘ TOKIOTA

Base de datos relacionales

Desventajas

No esta preparado para cluster

Hardware caro

Coste de licencias

Limitar el desarrollo haciéndolo poco ágil

Con lógica de la aplicación

Join

Nuevo requisitos de escalabilidad continua

Presentación de compañía東京‘ TOKIOTA

Desarrollo de software

Metodologías ágiles

Ciclos de desarrollo cortos

Constante evolución de requerimientos

Flexibilidad de diseño

Pero las bases de datos relacionales

Difíciles de evolucionar (migrar)

Pocos desarrolladores interactúan con la base de datos

Tienen un modelo diferente al que se usa en el

desarrollo

Presentación de compañía東京‘ TOKIOTA

Necesidades reales

Escalar horizontalmente

Resultados en tiempo real

Agilidad en el desarrollo

Modelo de datos flexibles

Bajo coste

Presentación de compañía東京‘ TOKIOTA

Base de datos NoSQL

Nacen por las necesidades:

No usan el modelo relacional

Se ejecutan bien sobre clusters

Crecen horizontalmente (sharding)

Open-source

Sin schemas

Presentación de compañía東京‘ TOKIOTA

Base de datos NoSQL

Ventajas

Veloces

Escalables

Se acoplan al modelo de objetos

Agiles

Desventajas

No son transaccionales – tampoco lo necesitan

No son ACID, son BASE

Consultas Ad-hoc limitadas

Modelo de escritura y modelo de lectura

Presentación de compañía東京‘ TOKIOTA

Alta disponibilidad – Replica sets

Alta disponibilidad

Redundancia de datos

Recuperación en caso de desastre

Transparente a la aplicación

En caliente

Presentación de compañía東京‘ TOKIOTA

Primaria

Secundaria

Secundaria

Dri

ver

Escribir

Leer

Leer

Leer

Replicas asíncronas

Presentación de compañía東京‘ TOKIOTA

Recuperación ante caidas

Primaria

Secundaria

Secundaria

Dri

ver

Escribir

Leer

Leer

Leer

Presentación de compañía東京‘ TOKIOTA

Recuperación ante caidas

Primaria

Secundaria

Dri

ver Escribir

Leer

Leer

Primaria

Presentación de compañía東京‘ TOKIOTA

Recuperación ante caidas

Primaria

Secundaria

Dri

ver Escribir

Leer

Leer

PrimariaSecundariaLeer

Presentación de compañía東京‘ TOKIOTA

Sharding

Key[0...100]

V

Nodo Clave

V 0 … 15

W 16 … 45

X 46 … 60

Y 61 … 75

Z 76 … 100

data{a , b}

W X Y Z

Presentación de compañía東京‘ TOKIOTA

Sharding - búsquedas

Nodo Clave

a 0 … 15

b 16 … 45

c 46 … 60

d 61 … 75

e 76 … 100

find{a=30}

La query se envía a un solo nodo

Presentación de compañía東京‘ TOKIOTA

Sharding - búsquedas

Nodo Clave

a 0 … 15

b 16 … 45

c 46 … 60

d 61 … 75

e 76 … 100

find{20>a<50}

La query se envía a mas de un nodo

Presentación de compañía東京‘ TOKIOTA

Sharding - búsquedas

Nodo Clave

a 0 … 15

b 16 … 45

c 46 … 60

d 61 … 75

e 76 … 100

find{b=hola}

Tabla-Scan es igual de malo

Presentación de compañía東京‘ TOKIOTA

Sharding - búsquedas

Nodo Clave

a 0 … 15

b 16 … 45

c 46 … 60

d 61 … 75

e 76 … 100

Crear índice sobre b

find{b=hola}

Penaliza un poco el coste de comunicación

Presentación de compañía東京‘ TOKIOTA

Sharding - búsquedas

Nodo Clave

a 0 … 15

b 16 … 45

c 46 … 60

d 61 … 75

e 76 … 100

find{b=hola, a=51}

Se envía solo a un nodo

Presentación de compañía東京‘ TOKIOTA

Sharding - búsquedas

Nodo Clave

a 0 … 15

b 16 … 45

c 46 … 60

d 61 … 75

e 76 … 100

find{b=hola, a=51}

Se envía solo a un nodo

Presentación de compañía東京‘ TOKIOTA

Sharding – Order by …

Presentación de compañía東京‘ TOKIOTA

Velocidad de lectura

Presentación de compañía東京‘ TOKIOTA

Tipos de NoSQL y uso

Tipo Uso Productos

Key - Value Cache Redis

MemCached

Colum-Family Clave + multiples

columnas

Cassandra

Amazon Simple DB

Google BigTable

HBase

Documentales Guardar objetos enteros

con una clave

MongoDB

RavenDB

CrounchDB

Azure Table Storage

Grapho Guardan nodos y

relaciones entre nodos

Neo4j

Presentación de compañía東京‘ TOKIOTA

Key-Value

Una única clave que apunta a un único ítem.

Presentación de compañía東京‘ TOKIOTA

Column-Family

Es el mas parecido a SQL. Mantiene la información

separada en columnas.

Documentos

{ "customer": { "id": 1, "name": "Martin",

"billingAddress": [{"city": "Chicago"}],

"orders": [{"id":99, "customerId":1,

"orderItems":[ {"productId":27, "price": 32.45}],

"shippingAddress":[{"city":"Chicago"}]

"orderPayment":[{

"ccinfo":"1000-1000-1000-1000",

"txnId":"abelif879rft",

"billingAddress": {"city": "Chicago"}

}],

}]

}

}

Grafos

Se representa por nodos que están unidos por

relaciones, donde ambos tienen propiedades

¿Qué pasa con BI?

¿Como hago vistas o DW?

Aplicar una función por cada elemento de una

colección

Combina los elementos usando una

operación

Ejemplo, cuanto he vendido de cada producto

Beneficios de MapReduce

Preparado para gran volumen de información

Pero puedo hacer pruebas con pequeñas muestras

Tolerable a fallos

Piso los datos porque los recalculo

Seguro ante problemas de threading

No tocan la información de entrada

Implementaciones

La implementación mas grande de Cassandra tiene

300 TB repartidos en 400 ordenadores

Disney tiene los datos de usuarios y juegos

repartidos en 1400 instancias de MongoDB

Para un listado mas detallado visitar

http://www.mongodb.org/display/DOCS/Producti

on+Deployments

Resum Executiu 東京‘TOKIOTA

MUCHAS GRACIAS POR TU CONFIANZA

top related