introducción a nosql
DESCRIPTION
Presentación introductoriaTRANSCRIPT
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