SlideShare une entreprise Scribd logo
1  sur  38
Introducción a las bases
de datos NoSql
Alberto Ortiz Capellán
@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 clásico 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
5
Í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 están 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 ningún esquema
Posibilidad de crear restricciones, triggers,
claves foráneas… sobre los datos
Estas utilidades no suelen estar
disponibles
7
ACID
• Características que tiene que garantizar una
base de datos a la hora de realizar una
transacción correctamente
Atomicity
Asegurar que la transacción se 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 transacción
ante cualquier fallo
11
ACID
• Bases de datos que garantizan ACID
12
BASE
• Acrónimo análogo a ACID para NoSQL donde
prima la disponibilidad frente a la consistencia
• Características comunes entre todas las
implementaciones de bases de datos
distribuidas no relacionales
Basically Available Disponibilidad como prioridad
Soft state
Delegación de la consistencia de datos a
un motor externo
Eventual consistency Se intenta lograr un estado consistente
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
configuración diferente
16
Neo4j
• Estructura de datos orientada a Grafos
• Posibilidad de gestionar millones de
grafos/nodos/relaciones/propiedades en una
sola máquina
• Completamente transaccional
• Máxima escalabilidad
• Software libre
17
Neo4j
• Un Grafo guarda datos en Nodos que tienen
Propiedades
– Una Propiedad es una relación clave / valor donde
la clave es un identificador de tipo string
• Los Nodos se organizan en Relaciones que
también tienen Propiedades
• Un Índice mapea Propiedades tanto de Nodos
como de Relaciones para conseguir consultas
de datos más eficientes
18
19
GRAFO
RELACIÓN
•Propiedad1:Valor
•Propiedad2:Valor
•….
•PropiedadN:Valor
Nodo
•Propiedad1:Valor
•Propiedad2:Valor
•….
•PropiedadN:Valor
Nodo
•Propiedad1:Valor
•Propiedad2:Valor
•….
•PropiedadN:Valor
20
21
Brewery Beer
FABRICA
Style
ESTILIZA
Brewery
Geocode
TIENE_FABRICA
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)
22
Brewery Beer Style
Brewery
Geocode
(BreweryGeocode) (Brewery) (Beer) (Style)
(bg:BreweryGeocode) (br:Brewery) (be:Beer) (st:Style)
Neo4j - CYPHER
• Relaciones entre nodos simples --> ó <--
• Identificando el nombre de la relación
–[:RELACION]->
23
Brewery Beer Style
Brewery
Geocode
<-- <--
<--
<-[:TIENE_FABRICA]- <-[:ESTILIZA]--[:FABRICA]->
Neo4j - CYPHER
24
(Brewery) –[: FABRICA]-> (Beer)
(cerveceria:Brewery) -[relacion: FABRICA]-> (cerveza:Beer)
cerveceria, relacion, cerveza: Labels
Brewery, Beer: Nodos
FABRICA: Relación
Brewery Beer
FABRICA
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 información distribuida
• Un Nodo almacena la información y se encara
de las tareas de indexación
– No hay límite de Nodos
• Un Índice es una colección de Documentos
con características similares
27
28
CLUSTER
NODOS
Índice
Índice
•Documento1
•Documento2
…
•DocumentoN
Índice Índice
Índice
Elastic Search - Consultas simples
• Consultas a través 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/_search?q=*
– Busqueda sobre el tipo beer, por el parámetro name
• http://localhost:9200/nosqlbeers/beer/_search?q=nam
e:Estrella
30
Elastic Search – Consultas complejas
• Querys con datos extra en formato JSON como
rangos y agregaciones
• Imposible pasar esos parámetros por URL
– Uso de curl desde línea de comandos
– Plugin Sense de Elastic Search para Chrome
31
Elastic Search – Consultas complejas
• Agrupación de cervezas por su graduación
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 graduación:
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 expiración 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
35
DB 0 DB X
DB 1
•Clave1 / valor
•Clave2 / valor
…
•ClaveN / valor
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-nosql-o-como-almacenar-tus-datos-en-una-base-
de-datos-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-theorem-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/
• NoSQL http://www.genbetadev.com/bases-de-datos/bases-
de-datos-nosql-elige-la-opcion-que-mejor-se-adapte-a-tus-
necesidades
• BASE http://queue.acm.org/detail.cfm?id=1394128
38
Referencias – Neo4j
• Neo4j y .NET http://blog.micic.ch/net/using-neo4j-graph-
db-with-c-net
• Ejemplos .NET
https://github.com/Readify/Neo4jClient/wiki/cypher-
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/how-to-
create-relationship-between-neo4j-existing-node-and-new-
node-in-c-net-us
• Ejemplos .NET http://architects.dzone.com/articles/neo4jd-
net-client-neo4j-graph-0
39
Referencias – Elastic Search
• Getting started http://joelabrahamsson.com/elasticsearch-101/
• Curl http://stackoverflow.com/questions/22882927/how-to-insert-data-
into-elasticsearch
• Problemas con http y curl
http://stackoverflow.com/questions/6684235/perl-curl-1-protocol-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=prime
ros-pasos-elasticsearch
• Facetas
http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
facets.html
• Rangos
http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
facets-range-facet.html
40
Bibliografia
• Neo4j: Graph Databases
http://info.neotechnology.com/rs/neotechnol
ogy/images/GraphDatabases.pdf
41

Contenu connexe

En vedette

Servidores: cuadro comparativo
Servidores: cuadro comparativoServidores: cuadro comparativo
Servidores: cuadro comparativoMaria Figueredo
 
Tabla comparativa servidores web
Tabla comparativa servidores webTabla comparativa servidores web
Tabla comparativa servidores webjuancma77
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesAndrés Londoño
 
mongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y ComponentesmongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y Componentesomenar
 
Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume  Elasticsearch HDFS KibanaLog -Analytics with Apache-Flume  Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume Elasticsearch HDFS KibanaFelix Rodriguez
 
Aplicando elasticidad en la búsqueda con Grails
Aplicando elasticidad en la búsqueda con GrailsAplicando elasticidad en la búsqueda con Grails
Aplicando elasticidad en la búsqueda con GrailsEnrique Medina Montenegro
 
Game of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCCGame of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCCCarlos Azaustre
 
BASE DE DATOS ORIENTADO A OBJETOS
BASE DE DATOS ORIENTADO A OBJETOSBASE DE DATOS ORIENTADO A OBJETOS
BASE DE DATOS ORIENTADO A OBJETOSmigmorbus1
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic IntroductionMayur Rathod
 
Diferencias entre base de datos relacional y no relacional
Diferencias entre base de datos relacional y no relacionalDiferencias entre base de datos relacional y no relacional
Diferencias entre base de datos relacional y no relacionalUPCI
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.Jurriaan Persyn
 
Base de datos-objeto-relacional
Base de datos-objeto-relacionalBase de datos-objeto-relacional
Base de datos-objeto-relacionalEduar Alfons Leon
 

En vedette (18)

Servidores: cuadro comparativo
Servidores: cuadro comparativoServidores: cuadro comparativo
Servidores: cuadro comparativo
 
Tabla comparativa servidores web
Tabla comparativa servidores webTabla comparativa servidores web
Tabla comparativa servidores web
 
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionales
 
mongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y ComponentesmongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y Componentes
 
Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume  Elasticsearch HDFS KibanaLog -Analytics with Apache-Flume  Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana
 
Aplicando elasticidad en la búsqueda con Grails
Aplicando elasticidad en la búsqueda con GrailsAplicando elasticidad en la búsqueda con Grails
Aplicando elasticidad en la búsqueda con Grails
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
Game of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCCGame of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCC
 
NOSQL vs SQL
NOSQL vs SQLNOSQL vs SQL
NOSQL vs SQL
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
BASE DE DATOS ORIENTADO A OBJETOS
BASE DE DATOS ORIENTADO A OBJETOSBASE DE DATOS ORIENTADO A OBJETOS
BASE DE DATOS ORIENTADO A OBJETOS
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic Introduction
 
Curso completo de Elasticsearch
Curso completo de ElasticsearchCurso completo de Elasticsearch
Curso completo de Elasticsearch
 
Diferencias entre base de datos relacional y no relacional
Diferencias entre base de datos relacional y no relacionalDiferencias entre base de datos relacional y no relacional
Diferencias entre base de datos relacional y no relacional
 
Log Management
Log ManagementLog Management
Log Management
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
 
Base de datos-objeto-relacional
Base de datos-objeto-relacionalBase de datos-objeto-relacional
Base de datos-objeto-relacional
 

Dernier

El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)estebancitoherrera
 
Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...israel garcia
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfJC Díaz Herrera
 
triptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciatriptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciaferg6120
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosssuser948499
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresamerca6
 
Técnica palatina baja, anestesiología dental
Técnica palatina baja, anestesiología dentalTécnica palatina baja, anestesiología dental
Técnica palatina baja, anestesiología dentalIngrid459352
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicaciónJonathanAntonioMaldo
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechojuliosabino1
 
Unidad 3 Elementos y compuestos. Física y química
Unidad 3 Elementos y compuestos. Física y químicaUnidad 3 Elementos y compuestos. Física y química
Unidad 3 Elementos y compuestos. Física y químicaSilvia García
 
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,juberrodasflores
 
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdfCritica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdfRodrigoBenitez38
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfIrapuatoCmovamos
 
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfLos artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfJC Díaz Herrera
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfIrapuatoCmovamos
 
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior UniversitariaSUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior Universitariachayananazcosimeon
 
bases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria debases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria deCalet Cáceres Vergara
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfEDUARDO MAMANI MAMANI
 
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfPREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfluisccollana
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfGEINER22
 

Dernier (20)

El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)
 
Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdf
 
triptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciatriptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescencia
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datos
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresa
 
Técnica palatina baja, anestesiología dental
Técnica palatina baja, anestesiología dentalTécnica palatina baja, anestesiología dental
Técnica palatina baja, anestesiología dental
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicación
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derecho
 
Unidad 3 Elementos y compuestos. Física y química
Unidad 3 Elementos y compuestos. Física y químicaUnidad 3 Elementos y compuestos. Física y química
Unidad 3 Elementos y compuestos. Física y química
 
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
 
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdfCritica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
 
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfLos artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
 
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior UniversitariaSUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
 
bases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria debases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria de
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
 
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfPREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdf
 

20150429 NoSQL RiojaDotNet

  • 1. Introducción a las bases de datos NoSql Alberto Ortiz Capellán @albertortizcape
  • 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 2
  • 3. Í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
  • 4. ¿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 clásico de bases de datos (RDBMS) por no usar SQL • Son usadas por Google, Amazon, Twitter, Facebook… para enfrentarse a problemas de rendimiento 4
  • 5. ¿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 5
  • 6. Í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
  • 7. Diferencias entre bases de datos SQL y NoSQL SQL NoSQL Permite unir tablas con JOIN No permite el uso de JOINS o están 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 ningún esquema Posibilidad de crear restricciones, triggers, claves foráneas… sobre los datos Estas utilidades no suelen estar disponibles 7
  • 8. ACID • Características que tiene que garantizar una base de datos a la hora de realizar una transacción correctamente Atomicity Asegurar que la transacción se 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 transacción ante cualquier fallo 11
  • 9. ACID • Bases de datos que garantizan ACID 12
  • 10. BASE • Acrónimo análogo a ACID para NoSQL donde prima la disponibilidad frente a la consistencia • Características comunes entre todas las implementaciones de bases de datos distribuidas no relacionales Basically Available Disponibilidad como prioridad Soft state Delegación de la consistencia de datos a un motor externo Eventual consistency Se intenta lograr un estado consistente 13
  • 11. BASE • Bases de datos que garantizan BASE 14
  • 12. Í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
  • 13. 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 configuración diferente 16
  • 14. Neo4j • Estructura de datos orientada a Grafos • Posibilidad de gestionar millones de grafos/nodos/relaciones/propiedades en una sola máquina • Completamente transaccional • Máxima escalabilidad • Software libre 17
  • 15. Neo4j • Un Grafo guarda datos en Nodos que tienen Propiedades – Una Propiedad es una relación clave / valor donde la clave es un identificador de tipo string • Los Nodos se organizan en Relaciones que también tienen Propiedades • Un Índice mapea Propiedades tanto de Nodos como de Relaciones para conseguir consultas de datos más eficientes 18
  • 17. 20
  • 19. 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) 22 Brewery Beer Style Brewery Geocode (BreweryGeocode) (Brewery) (Beer) (Style) (bg:BreweryGeocode) (br:Brewery) (be:Beer) (st:Style)
  • 20. Neo4j - CYPHER • Relaciones entre nodos simples --> ó <-- • Identificando el nombre de la relación –[:RELACION]-> 23 Brewery Beer Style Brewery Geocode <-- <-- <-- <-[:TIENE_FABRICA]- <-[:ESTILIZA]--[:FABRICA]->
  • 21. Neo4j - CYPHER 24 (Brewery) –[: FABRICA]-> (Beer) (cerveceria:Brewery) -[relacion: FABRICA]-> (cerveza:Beer) cerveceria, relacion, cerveza: Labels Brewery, Beer: Nodos FABRICA: Relación Brewery Beer FABRICA
  • 22. 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
  • 23. 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
  • 24. Elastic Search • Un Cluster almacena un conjunto de Nodos que mantienen la información distribuida • Un Nodo almacena la información y se encara de las tareas de indexación – No hay límite de Nodos • Un Índice es una colección de Documentos con características similares 27
  • 26. Elastic Search - Consultas simples • Consultas a través 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
  • 27. 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/_search?q=* – Busqueda sobre el tipo beer, por el parámetro name • http://localhost:9200/nosqlbeers/beer/_search?q=nam e:Estrella 30
  • 28. Elastic Search – Consultas complejas • Querys con datos extra en formato JSON como rangos y agregaciones • Imposible pasar esos parámetros por URL – Uso de curl desde línea de comandos – Plugin Sense de Elastic Search para Chrome 31
  • 29. Elastic Search – Consultas complejas • Agrupación de cervezas por su graduación 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
  • 30. Elastic Search – Consultas complejas • Rango de cervezas por su graduación: 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
  • 31. Redis • Base de datos de tipo clave / valor • Almacena los datos en memoria RAM • Permite poner una fecha de expiración a los datos • Se usa como memoria caché para cargas pesadas por su velocidad 34
  • 32. Redis • Posee diferentes Nodos donde se almacenan los datos en formato clave / valor 35 DB 0 DB X DB 1 •Clave1 / valor •Clave2 / valor … •ClaveN / valor
  • 33. 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
  • 34. 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
  • 35. Referencias - NoSQL • NoSQL http://www.genbetadev.com/bases-de-datos/el- concepto-nosql-o-como-almacenar-tus-datos-en-una-base- de-datos-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-theorem-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/ • NoSQL http://www.genbetadev.com/bases-de-datos/bases- de-datos-nosql-elige-la-opcion-que-mejor-se-adapte-a-tus- necesidades • BASE http://queue.acm.org/detail.cfm?id=1394128 38
  • 36. Referencias – Neo4j • Neo4j y .NET http://blog.micic.ch/net/using-neo4j-graph- db-with-c-net • Ejemplos .NET https://github.com/Readify/Neo4jClient/wiki/cypher- 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/how-to- create-relationship-between-neo4j-existing-node-and-new- node-in-c-net-us • Ejemplos .NET http://architects.dzone.com/articles/neo4jd- net-client-neo4j-graph-0 39
  • 37. Referencias – Elastic Search • Getting started http://joelabrahamsson.com/elasticsearch-101/ • Curl http://stackoverflow.com/questions/22882927/how-to-insert-data- into-elasticsearch • Problemas con http y curl http://stackoverflow.com/questions/6684235/perl-curl-1-protocol-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=prime ros-pasos-elasticsearch • Facetas http://www.elastic.co/guide/en/elasticsearch/reference/current/search- facets.html • Rangos http://www.elastic.co/guide/en/elasticsearch/reference/current/search- facets-range-facet.html 40
  • 38. Bibliografia • Neo4j: Graph Databases http://info.neotechnology.com/rs/neotechnol ogy/images/GraphDatabases.pdf 41