You are on page 1of 38

Introduccin a las

bases de datos
NoSql

Alberto Ortiz Capelln


@albertortizcape

ndice
Qu es eso de NoSQL?
Diferencias entre bases de datos SQL y
NoSQL
ACID
BASE

Bases de datos NoSQL


Tipos de bases de datos NoSQL
Neo4J
ElasticSearch
Redis
2

ndice
Qu es eso de NoSQL?
Diferencias entre bases de datos SQL y
NoSQL
ACID
BASE

Bases de datos NoSQL


Tipos de bases de datos NoSQL
Neo4J
ElasticSearch
Redis
3

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

Bases de datos NoSQL


Tipos de bases de datos NoSQL
Neo4J
ElasticSearch
Redis
6

Diferencias entre bases de datos SQL y NoSQL


SQL

NoSQL

Permite unir tablas con JOIN

No permite el uso de JOINS o


estn muy limitados

Dificultad para distribuir los datos

Facilidad para distribuir los datos

Escalabilidad vertical (mejorar


potencia del servidor para
obtener mejores resultados)

Escalabilidad horizontal (repartir /


distribuir base de datos en
diferentes servidores)

Los datos se estructuran


siguiendo los esquemas de las
tablas

Los datos no siguen ningn


esquema

Posibilidad de crear restricciones,


triggers, claves forneas sobre
los datos

Estas utilidades no suelen estar


disponibles
7

ACID
Caractersticas que tiene que
garantizar una base de datos a la
hora de realizar una transaccin
Asegurar que la transaccin se
correctamente

Atomicity

realice o no, sin quedar a medias


ante fallos

Consistency

Asegurar el estado de validez de


los datos en todo momento

Isolation

Asegurar independencia entre


transacciones

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

Disponibilidad como prioridad


Delegacin de la consistencia de
datos a un motor externo
Se intenta lograr un estado

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

Bases de datos NoSQL


Tipos de bases de datos NoSQL
Neo4J
ElasticSearch
Redis
15

Tipos de bases de datos NoSQL


Documentales

Datos semi-estructurados en
documentos (XML, YAML, JSON
y BSON)

Grafo

Datos estructurados como


nodos relacionados entre si

Clave / valor

Datos estructurados como


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

Los Nodos se organizan en Relaciones


que tambin tienen Propiedades
Un ndice mapea Propiedades tanto de
Nodos como de Relaciones para
conseguir consultas de datos ms
eficientes
18

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

(Brewery) [: FABRICA]-> (Beer)


(cerveceria:Brewery) -[relacion: FABRICA]->
(cerveza:Beer)
cerveceria, relacion, cerveza:
Labels
Brewery, Beer: Nodos
FABRICA: Relacin

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

Un ndice es una coleccin de


Documentos con caractersticas
similares

27

CLUSTER
NODOS

ndice

ndice

ndice

ndice

ndice
Documento1
Documento2

DocumentoN

28

Elastic Search - Consultas


simples
Consultas a travs de llamadas RESTFul
http://localhost:9200/<index>/<type>/<id>
Index: nosqlbeers
Type: beer, brewery, style, brewerygeocode
Id: Identificador del documento
http://localhost:9200/nosqlbeers/beer/5151

29

Elastic Search - Consultas


simples
Ejemplos de busquedas
Busqueda sobre el ndice nosqlbeers
http://localhost:9200/nosqlbeers/_search?q=
*
Busqueda sobre el tipo beer
http://localhost:9200/nosqlbeers/beer/_sear
ch?q=*
Busqueda sobre el tipo beer, por el parmetro
name
http://localhost:9200/nosqlbeers/beer/_sear
ch?q=name:Estrella
30

Elastic Search Consultas


complejas
Querys con datos extra en formato
JSON como rangos y agregaciones
Imposible pasar esos parmetros por
URL
Uso de curl desde lnea de comandos
Plugin Sense de Elastic Search para
Chrome

31

Elastic Search Consultas


complejas
Agrupacin de cervezas por su graduacin
POST /nosqlbeers/beer/_search?pretty
{
"size": 0,
"aggs": {
"Agrupacion_Graduacion_Cervezas": {
"terms": {
"field": "abv"
}
}
}
}

Consulta en SQLServer: SELECT COUNT(*) from beers


GROUP BY abv ORDER BY COUNT(*) DESC
32

Elastic Search Consultas


complejas
Rango de cervezas por su graduacin:
POST /nosqlbeers/beer/_search?pretty
{
"size": 0,
"facets" : {
"Rango_Cervezas_Graduacion" : {
"range" : {
"field" : "abv",
"ranges" : [
{ "to" : 5 },
{ "from" : 5, "to" : 8 },
{ "from" : 8, "to" : 10 },
{ "from" : 10, "to" : 20 },
{ "from" : 20, "to" : 50 },
{ "from" : 50 }
]
}
}
}
}

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

Referencias Elastic Search


Getting started
http://joelabrahamsson.com/elasticsearch-101/
Curl
http://stackoverflow.com/questions/22882927/how-to-insertdata-into-elasticsearch
Problemas con http y curl
http://stackoverflow.com/questions/6684235/perl-curl-1-prot
ocol-http-not-supported-or-disabled-in-libcurl
Elastic Search .NET
http://www.elastic.co/guide/en/elasticsearch/client/net-api/
current/_elasticsearch_net.html
Elastic Search .NET http://nest.azurewebsites.net/
Primeros pasos con Elastic Search
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?
pagina=primeros-pasos-elasticsearch
Facetas
40
http://www.elastic.co/guide/en/elasticsearch/reference/curr

Bibliografia
Neo4j: Graph Databases http
://info.neotechnology.com/rs/neotec
hnology/images/GraphDatabases.pdf

41

You might also like