Académique Documents
Professionnel Documents
Culture Documents
Big Data
Data Storage
Introduccin
Tema 2: Data Storage
Introduccin
El primer problema al que se enfrenta el Big Data es el almacenamiento y
la organizacin de los datos que se pretende analizar.
Big Data implica volmenes gigantescos de datos, por lo que
probablemente necesitemos mecanismos especiales para almacenarlos.
Fuente :http://itusersmagazine.com/tag/universo-digital-de-idc/
Condiciones:
Grandes volmenes de datos
Alta velocidad de transferencia (en
entornos cada vez ms distribuidos)
Mucha variedad de datos
9
3 Vs de Big Data
Volumen: crece ms deprisa que los recursos de cmputo:
El volumen crece 10 veces cada 5 aos.
La capacidad de almacenamiento/procesamiento se dobla cada 18 meses (Ley de Moore).
Es indispensable poder gestionar mayores volmenes en los recursos disponibles.
Velocidad
Los recursos de red no crecen en proporcin a los datos que fluyen por ella.
Necesidad de optimizar la comunicacin: Procesamiento en streaming + Almacenamiento
selectivo.
10
12
Atomicity
Consistency
Isolation
Durability
13
14
15
http://blog.monitis.com/index.php/2011/05/22/picking-the-right-nosql-database-tool
Modelos de estructuracin de
datos no relacional (No-SQL)
Tema 2: Data Storage
16
Escalan bien
Las soluciones son inherentemente distribuidas.
17
18
20
21
22
23
24
25
Contras:
Recuperar una tupla completa es ms costoso (consulta a varias columnas).
Insertar una tupla completa es ms costoso (insercin en varias columnas).
26
Distinto a una una columna de una matriz o un atributo de una tabla en una BD
relacional.
Pieza bsica de las BD orientadas a columnas.
27
28
29
30
31
32
Listas
CREATE TABLE playlists (
id uuid,
title text,
song_order int,
album text,
song_id uuid,
artist text,
title text,
data blob
album text,
);
artist text,
PRIMARY KEY (id, song_order)
);
33
Tecnologas de recuperacin y
procesamiento masivo
Tema 2: Data Storage
34
MapReduce
Framework para el procesamiento de grandes problemas paralelizables.
Pensado para grandes volmenes de datos.
Hace uso de grandes clusteres o grids (muchos nodos).
Hace uso de tcnicas de bajo nivel para mejorar el rendimiento, como la
localizacin de los datos.
Inspirado por el modelo map/reduce de la programacin funcional, pero
con diferentes objetivos.
La base de muchas iniciativas de Big Data.
35
36
37
MapReduce
Lo cinco pasos de MapReduce:
1. Se prepara la entrada del Map(): Particin y diseminacin de los datos.
2. Se ejecuta Map() en cada nodo (mapper). La salida de cada sub-problema se
identifica con una clave intermedia.
3. Se baraja y ordena (shuffle and sort) la salida de cada Map(), usando la clave
intermedia.
4. Ejecuta Reduce() en cada nodo. Cada reducer procesa los datos asociados a una
clave intermedia.
5. Se agrupa la salida de los reducers como resultado final.
38
Estado de un nodo:
Se calcula en funcin de su estado actual y el estado de sus vecinos.
Evoluciona de manera iterativa.
39
40
Reduce
Emit(id n, object N)
M = null
messages = []
messages.add(s)
M.State = calculateState(messages)
Emit(id m, item M)
41
42
Hadoop y HDFS
Hadoop es la implementacin mas popular de MapReduce.
Software libre.
Escrito en Java.
Altamente escalable y confiable.
43
HDFS
Arquitectura: 1 Namenode + n Datanodes.
Namenode: Nodo de metadatos. Puede tener un respaldo (SecondaryNamenode).
Datanode: Nodo que almacena los bloque que datos.
44
HDFS
45
Pig
Plataforma de alto nivel para crear aplicaciones MapReduce basadas en
Hadoop.
Desarrollado inicialmente por Yahoo. Ahora parte del proyecto Apache.
Pig Latin: Lenguaje de programacin de alto nivel para definir trareas map
y reduce.
46
47
Fuente: Wikipeda
Hive
Solucin de data warehousing basada en Hadoop.
Desarrollada por Facebook. Ahora parte del proyecto Apache.
Permite estructura la informacin almacenada en HDFS y acceder a ella
mediante HiveQL, similar a SQL.
Las queries en HiveQL se implementan como trabajos MapReduce en
Hadoop.
48
Modelos de almacenamiento
dependientes de los datos
Tema 2: Data Storage
49
50
Modelos de almacenamiento
dependientes de los datos
BD de Grafos
Tema 2: Data Storage
51
52
neo4j.org
Jess Montes &
Jose M. Pea
name: Morpheus
occupation: Total badass
rank: Captain
since: 12 years
name: Trinity
since: 3 days
since: 3 days
55
name: Neo
real_name: Thomas Andersson
is_the_chosen: true
BD sin esquema
No implica que no haya un diseo por debajo.
Implica que la tipologa de entidades(nodos) que se pueden incluir no hay
que definirla explcitamente:
Se hace de forma dinmica.
En cualquier caso, en el ejemplo, tienes que definir cmo representar personajes,
enemigos, escenarios,
56
Indexado
Tanto los nodos como las relaciones pueden indexarse.
La BD dispone de un mecanismo de indexado interno, pero el usuario puede
incluir el suyo propio:
Est orientado a identificar nodos/relaciones interesantes.
Son los que se usan como comienzo de una operacin de recorrido.
Inconvenientes:
Reparticin (sharding) horizontal de datos:
A pesar de que la escalabilidad de las soluciones tecnolgicas actuales es buena.
La interrelacin entre los datos dificulta la creacin de particiones (shards).
Depende de los dominios o naturaleza de los datos (en algunos casos hay una fuerte localidad
que se puede aprovechar).
58
59
Ejemplo comparativo
http://java.dzone.com/articles/mysql-vs-neo4j-large-scale
Comparativa frente
a MySQL:
Recorrido desde un
nodo raz a lo largo
de N pasos.
Neo4J tard la
mitad de tiempo.
60
Ejemplo comparativo
Qu ocurre si eliminamos la sobrecarga de
E/S de disco?
Otro experimento:
1000 personas
Una media de 50 amigos por persona.
Determinar si hay ruta entre X e Y.
Jim Webber
61
Traversal framework:
62
Motor de queries.
Diferentes implementaciones.
Acceso:
API REST: Descubrible para acceso remoto.
Bindings de lenguajes sobre la API nativa.
API de bajo nivel sobre las abstracciones
de los elementos del grafo.
REST API
Java
Ruby
Clojure
Traversal Framework
Graph Matching
Core API
Caches
Memory-Mapped (N)IO
Filesystem
63
Creacin de Relaciones
Transaction tx = db.beginTx();
try
{
Node trinity = db.createNode();
trinity.setProperty("name",
"Trinity");
trinity.createRelationshipTo(morpheus,
DynamicRelationshipType.withName("KNOWS"));
tx.success();
}
finally
{
tx.finish();
}
64
65
67
Jim Webber
68
Jim Webber
69
70
Jim Webber
Referencias
Recursos de Neu4j (web site):
http://www.neo4j.org
http://www.neo4j.org/learn/cypher
71
Otras alternativas
OrientDB (Orient
Technologies)
Java
Soporta SQL,
RESTful/HTTP y JSON
Transacciones ACID y
soporte documental
Licencia Apache 2.
72
DEX / Sparksee
(Sparsity-Technologies)
C++
Multilenguaje API
para desarrollo.
Transacciones aCiD
parcial.
Licencia dual
comercial/personal
TinkerGraph (TinkerPop)
Java
Todo un ecosistema
de herramientas
(Gremlin, Blueprints,
Pipes, ).
Licencia Open Source
Modelos de almacenamiento
dependientes de los datos
BD de Documentos
Tema 2: Data Storage
73
BD orientadas a documentos
Concepto natural para el almacenamiento de registros electrnicos.
El elemento central almacenado es el documento:
Su concepto concreto depende de la implementacin especfica de la BD en
concreto, por lo general asociado con una codificacin:
Para el caso de documentos de texto: Formato de almacenamiento (PDF, MSWord, )
Para el caso de objetos: Serializacin en formato texto o binario (XML, YAML, JSON o BSON).
BD orientadas a documentos
Similitudes con otros modelos:
BD relacional:
Las colecciones seran las tablas,
pero a diferencia de los registros en una BD relacional, los documentos pueden tener
campos y estructura diferente.
BD clave-valor:
En un BD orientada a documentos, cada documento tiene una clave identificativa nica.
Adems de la recuperacin de los documentos por esa clave, se pueden realizar bsquedas
por contenido de los documentos (que no se pueden hacer en BD de tipo clave-valor).
75
BD orientadas a documentos
Almacenamiento de objetos:
Traduccin a un formato compacto y genrico:
MongoDB usa BSON (Binary JSON).
Optimizado por cuestiones de rendimiento y navegacin.
Admite compresin.
76
77
Lectura:
db.collection.find( <query>, <projection> )
db.collection.findOne( <query>, <projection> )
Actualizacin:
db.collection.update( <query>, <update>, <option> )
Borrado:
db.collection.remove( <query>, <justOne> )
79
Recuperacin y bsqueda
Los mecanismos de bsqueda se basan en ndices y etiquetas:
location1 = {
name
:
address:
city
:
zip
:
tags
"10gen HQ",
"17 West 18th Street 8th Floor",
"New York",
"10011",
latlong: [40.0,72.0]
}
db.locations.find({zip:"10011"}).limit(10)
db.locations.find({zip:"10011", tags:"business"})
db.locations.ensureIndex({latlong:"2d"})
db.locations.find({latlong:{$near:[40,70]}})
80
Generacin de un ndice
por parte del usuario
Jess Montes &
Jose M. Pea
Recuperacin y bsqueda
Los documentos se pueden referenciar entre s:
location1 = {
name
:
address:
city
:
zip
:
tags
"10gen HQ",
"17 West 18th Street 8th Floor",
"New York",
"10011",
Referencias a ObjectId
dentro del sistema.
latlong: [40.0,72.0],
contact: [4b97e62bf1d8c7152c9ccb74,
5a20e62bf1d8c736ab]
contactos= db.locations.find({..},
{contact:true}).contact
db.persons.find({_id:{$in: contactos}})
81
http://docs.mongodb.org/manual/reference/method/db.collection.mapReduce
Referencias
No SQL Distilled by P. Sadalage and M. Fowler
MongoDB Applied Design Patters by R. Copeland
The Definitive Guide to MongoDB by Plugge, Membry and Hawkins
MongoDB (web site):
http://www.mongodb.org/
84
Alternativa (CoachDB)
CoachDB (Damien Katz):
Desarrollado en Erlang
Interfaz de acceso REST
Consulta va JavaScript + Map/Reduce
Licencia: Apache v2.
85
Big Data
Data Storage
86