Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20150429 NoSQL RiojaDotNet

983 views

Published on

Presentación sobre bases de datos NoSQL para la asociación RiojaDotNet (http://www.meetup.com/es/RiojaDotNet/events/222050968/).

Para la demostración se usaron las siguientes bases de datos NoSQL:
* Neo4J
* ElasticSearch
* Redis

La base de datos sobre la que giró la presentación está disponible en:
http://openbeerdb.com/

Y los migradores para pasar los datos de SQL server a las diferentes bases de datos NoSQL están disponibles en:
https://github.com/albertortizcape/es.csharp.nosqlbeer

Published in: Data & Analytics
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

20150429 NoSQL RiojaDotNet

  1. 1. Introducción a las bases de datos NoSql Alberto Ortiz Capellán @albertortizcape
  2. 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. 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. 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. 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. 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. 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. 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. 9. ACID • Bases de datos que garantizan ACID 12
  10. 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. 11. BASE • Bases de datos que garantizan BASE 14
  12. 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. 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. 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. 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
  16. 16. 19 GRAFO RELACIÓN •Propiedad1:Valor •Propiedad2:Valor •…. •PropiedadN:Valor Nodo •Propiedad1:Valor •Propiedad2:Valor •…. •PropiedadN:Valor Nodo •Propiedad1:Valor •Propiedad2:Valor •…. •PropiedadN:Valor
  17. 17. 20
  18. 18. 21 Brewery Beer FABRICA Style ESTILIZA Brewery Geocode TIENE_FABRICA
  19. 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. 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. 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. 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. 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. 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
  25. 25. 28 CLUSTER NODOS Índice Índice •Documento1 •Documento2 … •DocumentoN Índice Índice Índice
  26. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 38. Bibliografia • Neo4j: Graph Databases http://info.neotechnology.com/rs/neotechnol ogy/images/GraphDatabases.pdf 41

×