Professional Documents
Culture Documents
bases de datos
NoSql
ndice
Qu es eso de NoSQL?
Diferencias entre bases de datos SQL y
NoSQL
ACID
BASE
ndice
Qu es eso de NoSQL?
Diferencias entre bases de datos SQL y
NoSQL
ACID
BASE
Qu es eso de NoSQL?
NoSQL (Not Only SQL) fue nombrado en
1998 por Carlo Strozzi para referirse a
su base de datos no relacional
Subconjunto de bases de datos que
difieren del modelo clsico de bases de
datos (RDBMS) por no usar SQL
Son usadas por Google, Amazon,
Twitter, Facebook para enfrentarse a
problemas de rendimiento
4
Qu es eso de NoSQL?
Tanto las bases de datos relacionales
(RBDMS) como las NoSQL son de
Almacenamiento estructurado
En las bases de datos relacionales la
estructura se define en las tablas
En las bases de datos no sql no es
necesario definir una estructura, aunque
si que es recomendable
ndice
Qu es eso de NoSQL?
Diferencias entre bases de datos SQL
y NoSQL
ACID
BASE
NoSQL
ACID
Caractersticas que tiene que
garantizar una base de datos a la
hora de realizar una transaccin
Asegurar que la transaccin se
correctamente
Atomicity
Consistency
Isolation
Durability
Asegurar la persistencia de la
transaccin ante cualquier fallo
11
ACID
Bases de datos que garantizan ACID
12
BASE
Acrnimo anlogo a ACID para
NoSQL donde prima la disponibilidad
frente a la consistencia
Caractersticas comunes entre todas
las implementaciones de bases de
datos distribuidas no relacionales
Basically
Available
Soft state
Eventual
13
BASE
Bases de datos que garantizan BASE
14
ndice
Qu es eso de NoSQL?
Diferencias entre bases de datos SQL y
NoSQL
ACID
BASE
Datos semi-estructurados en
documentos (XML, YAML, JSON
y BSON)
Grafo
Clave / valor
Familia de
columnas
Datos estructurados en
columnas donde cada fila
puede tener una configuracin
diferente
16
Neo4j
Estructura de datos orientada a
Grafos
Posibilidad de gestionar millones de
grafos/nodos/relaciones/propiedades
en una sola mquina
Completamente transaccional
Mxima escalabilidad
Software libre
17
Neo4j
Un Grafo guarda datos en Nodos que
tienen Propiedades
Una Propiedad es una relacin clave / valor
donde la clave es un identificador de tipo string
GRA
FO
Nodo
Propiedad1:Val
or
Propiedad2:Val
or
.
PropiedadN:Val
or
RELACI
N
Propiedad1:Val
or
Propiedad2:Val
or
.
PropiedadN:Val
or
Nodo
Propiedad1:Val
or
Propiedad2:Val
or
.
PropiedadN:Val
or
19
20
Brewer
y
Geocod
e
Brewer
y
FABRIC
A
Beer
TIENE_FABRIC
A
ESTILIZA
Style
21
Neo4j - CYPHER
CYPHER: Lenguaje de consultas de Neo4j
para consultar los grafos
Referenciar un nodo (nodo)
Uso de Labels para identificar los nodos
(label:nodo)
Brewer
y
Geoco
de
(BreweryGeoc
ode)
(bg:BreweryGeo
code)
Brewer
y
(Brewe
ry)
(br:Brew
ery)
Beer
Style
(Bee
r)
(be:Bee
r)
(Styl
e)
(st:Styl
22
e)
Neo4j - CYPHER
Relaciones entre nodos simples --> <- Identificando el nombre de la relacin
[:RELACION]->
Brewer
y
Geoco
de
Brewer
y
<[:TIENE_FABRICA]-
<-
<-
Beer
-[:FABRICA]>
Style
<<-[:ESTILIZA]23
Neo4j - CYPHER
Brewe
ry
FABRICA
Beer
24
Neo4j - CYPHER
MATCH
(style:Style) --> (beer:Beer) <-[:FABRICA](brewery:Brewery) -[:TIENE_FABRICA]->
(geocode:BreweryGeocode)
WHERE
beer.name = 'Estrella Damm'
RETURN beer, brewery, geocode, style
25
Elastic Search
Permite indexar y analizar grandes
cantidades de datos de manera distribuida
Almacena documentos pudiendo
estructurar su contenido con un schema /
mapping
Indexa los datos en tiempo real
Utiliza JSON y un API web RESTFul
Permite agrupar / facetar el contenido de
los documentos
26
Elastic Search
Un Cluster almacena un conjunto de
Nodos que mantienen la informacin
distribuida
Un Nodo almacena la informacin y
se encara de las tareas de
indexacin
No hay lmite de Nodos
27
CLUSTER
NODOS
ndice
ndice
ndice
ndice
ndice
Documento1
Documento2
DocumentoN
28
29
31
33
Redis
Base de datos de tipo clave / valor
Almacena los datos en memoria RAM
Permite poner una fecha de
expiracin a los datos
Se usa como memoria cach para
cargas pesadas por su velocidad
34
Redis
Posee diferentes Nodos donde se
almacenan los datos en formato
clave / valor
DB
0
DB
1
DB
X
Clave1 /
valor
Clave2 /
valor
ClaveN /
valor
35
Redis - Comandos
SELECT numero (0 al 15): Selecciona el nodo de
redis datos donde se van a trabajar
KEYS cadena: busca las claves que coincidan
con la cadena introducida
SET clave valor: almacena los datos en redis
GET clave: devuelve el valor almacenado en esa
clave. Nil o -1 en caso de que no haya datos
DEL clave: borra la clave
CUIDADO:
Es sensible a mayusculas y minusculas
Si la clave existe la remplaza
36
Redis - Comandos
Expire clave segundos: Establece los segundos
que va a permanecer la clave en redis
Ttl clave: Obtiene el tiempo en segundos que
le queda a la clave antes de desaparecer
lpush clave valor: Agrega el valor a la lista por
la izquierda
Rpush clave valor: Agrega el valor a la lista por
la derecha
Lrange clave inicio fin: Devuelve la lista de
elemetos del inicio al fin
37
Referencias - NoSQL
NoSQL http
://www.genbetadev.com/bases-de-datos/el-concepto-n
osql-o-como-almacenar-tus-datos-en-una-base-de-dat
os-no-relacional
ACID VS BASE http
://www.dataversity.net/acid-vs-base-the-shifting-ph-of
-database-transaction-processing/
CAP http
://www.johndcook.com/blog/2009/07/06/brewer-cap-t
heorem-base/
DB Ranking http://db-engines.com/en/ranking
NoSQL http
://www.nosql.es/blog/nosql/que-es-nosql.html
NoSQL http://nosql-database.org/
38
NoSQL http
Referencias Neo4j
Neo4j y .NET http://
blog.micic.ch/net/using-neo4j-graph-db-wi
th-c-net
Ejemplos .NET https
://github.com/Readify/Neo4jClient/wiki/cy
pher-examples
Ejemplos .NET http
://stackoverflow.com/questions/19534511/
how-to-create-a-node-with-neo4jclient-in
-neo4j-v2
Ejemplos .NET http
://stackoverflow.com/questions/20968733/39
Bibliografia
Neo4j: Graph Databases http
://info.neotechnology.com/rs/neotec
hnology/images/GraphDatabases.pdf
41