Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Noviembre 2011
Figura 2
Figura 1
La escala de la Web
Respuesta al problema
Respuesta al problema
Respuesta al problema
Respuesta al problema
Premisas CAP
Premisas CAP
Premisas CAP
Premisas CAP
Premisas CAP
Premisas CAP
Available
Un sistema satisface al menos 2 de
las 3 premisas:
Partition
Consistent
Tolerant
Consistencia: Se refiere a la
integridad de la información. Figura 4. Teorema CAP.
Disponibilidad: Que el
sistema esté disponible siempre.
Tolerancia al
particionamiento: El sistema
continúa funcionando a pesar
de que se pierdan mensajes de
forma arbitraria.
Premisas CAP
Available
Un sistema satisface al menos 2 de
las 3 premisas:
Partition
Consistent
Tolerant
Consistencia: Se refiere a la
integridad de la información. Figura 4. Teorema CAP.
Disponibilidad: Que el
sistema esté disponible siempre. A
Derivados de Amazon Dynamo:
Tolerancia al Relacional: Cassandra
Voldemort
Mysql
particionamiento: El sistema SQL Server CouchDB
Riak
Postgres
continúa funcionando a pesar
de que se pierdan mensajes de
forma arbitraria. C
Neo4J, Google BigTable y
P
derivados de BigTable:
MongoDB Hbase
HyperTable
Redis
Fernando Pech May Base de Datos NoSQL Noviembre 2011 10/32
Introducción
Sistemas de Base de Datos Relacionales (RDBMS)
NoSQL-Not Only SQL
Teorema CAP (Brewer)
Tecnologı́as NoSQL
A
Derivados de Amazon Dynamo:
Relacional: Cassandra
Mysql Voldemort
SQL Server CouchDB
Postgres Riak
C P
Neo4J, Google BigTable y
derivados de BigTable:
MongoDB Hbase
HyperTable
Redis
Modo de almacenamiento
No se guardarán los datos en tablas y columnas sino de otro modo
4 vertientes
4 vertientes
Métodos de almacenamiento
4 vertientes
Métodos de almacenamiento
1 Orientado en Columnas
4 vertientes
Métodos de almacenamiento
1 Orientado en Columnas
2 Por Clave-Valor
4 vertientes
Métodos de almacenamiento
1 Orientado en Columnas
2 Por Clave-Valor
3 En forma de documentos
4 vertientes
Métodos de almacenamiento
1 Orientado en Columnas
2 Por Clave-Valor
3 En forma de documentos
4 En forma de Grafos
Valores Nulos
Nombre: Juan
Apellidos: Perez Sanchez
cp: 10001
genero: hombre
Nombre: Carlos
cp: 86930
Nombre: Juan
Apellidos: Perez Sanchez
cp: 10001
genero: hombre
Nombre: Carlos
cp: 86930
Nombre: Juan
Apellidos: Perez Sanchez
cp: 10001
genero: hombre
Nombre: Carlos
cp: 86930
Nombre: Carlos
cp: 86930
Nombre: Carlos
cp: 86930
Cassandra
http://cassandra.apache.org
Hbase
http://hbase.apache.org
Creación de un Esquema
Creación de un Esquema
Familia de Columnas Registros Organización de Columnas
{ { {
“row_key_1” : { “row_key_1” : { “row_key_1” : {
“Nombre” : { “Nombre” : { “Nombre” : {
... “nombre” : “Juan”, “nombre” : {
},
“Localizacion” : { “Apellidos” : “Perez Sanchez” 1: Juan
... }, },
}, “Localizacion” : { "Apellidos" :{
“Perfil” : { “cp”: “10001” 1: Perez Sanchez
...
} }, }
}, “Perfil” : { },
“row_key_2” : { “genero” : “hombre” “Localizacion” : {
“Nombre” : { } “cp”: {
...
}, }, 1: 10001
“Localizacion” : { “row_key_2” : { }
... “Nombre” : { },
}, “nombre” : “Carlos”, “Perfil” : {
“Perfil” : {
... }, “genero” : {
} “localizacion” : { 1: hombre
}, “cp” : “86930” }
“row_key_3” : { } }
...
} } }
... ...
} }
Eficiencia
Lectura
Eficiencia
Lectura
Escritura
Eficiencia
Lectura
Escritura
Pueden escalar fácilmente particionando los valores de
acuerdo a su clave
Redis
http://redis.io/
Amazon SimpleDB
Oracle BerkeleyDB
Arquitectura Redis
MongoDB
CouchDB
Arquitectura MongoDB
Arquitectura MongoDB
{ ”title”: ”MongoDB”, ”Content”: ”Mi contenido” }
Arquitectura MongoDB
No contiene esquema
Cada documento puede tener distinta estructura
Uso de ODM (Object Document Mapper)
Increiblemente flexible
Neo4J
Hyperbase-DB
InfoGrid.
Java
Java
Python
Java
Python
Ruby
Java
Python
Ruby
PHP
La Actualidad
La información en la red se vuelve cada vez mas compleja y de
mayor volumen. Toda esta información requiere ser almacenado en
grandes volúmenes de base de datos.
A todo esto surge un problema, la lentitud de almacenar y hacer
operaciones en las base de datos relacionales.
Estos nuevos paradignas de almacenamiento puede mejorar
drásticamente las operaciones en las BD.
Que pasarı́a con estas BD NoSQL si lo almacenamos en
Discos duros de estado sólido?