Slide 1

Slide 1 text

Grafos La tercera vía para tus datos

Slide 2

Slide 2 text

Development & Cloud Consultant @ TOKIOTA Puedes encontrarme en https://jmfloreszazo.com

Slide 3

Slide 3 text

¿Qué vamos a ver? Introducción al modelo datos de grafos. ▪ El porqué de esta presentación. ▪ Componentes del modelo. ▪ Casos de uso. ▪ Relacional VS. Grafos. Azure Cosmos DB Gremlin (graph) API y Neo4J. ▪ Introducción. ▪ Demos. ▪ Analítica. Recursos.

Slide 4

Slide 4 text

El porqué de esta presentación

Slide 5

Slide 5 text

Afrontar los problemas … es tentador pensar que, si la única herramienta que tienes es un martillo, puedes tratar cualquier cosa como si fuera un clavo … Maslow, The Psychology of Science (1966)

Slide 6

Slide 6 text

Grafos, el modelo de datos Los datos del mundo real están conectados. El modelado de datos tradicional esta enfocado a las entidades, no en las relaciones. Muchas aplicaciones, necesitan tanto el modelo de entidades como el de relaciones.

Slide 7

Slide 7 text

Grafos, la base de datos En una base de datos de grafos las relaciones persisten en la capa de almacenamiento. Esto se traduce a que las operaciones de recuperación sean muy eficientes. Estaría incluida en la categoría de NoSQL o no-relacional, debido a que no existen dependencias. Y habitualmente se designa como GDB (Graph Database).

Slide 8

Slide 8 text

Grafos, tipos de modelos Debéis saber que existen 3 fundamentales de representar los grafos: ▪ Labeled-Propery Graph (LPG) – Grafos de propiedades etiquetadas. Se trata de una estructura compuesta de vértices o nodos y relaciones o bordes. Tanto los nodos como las relaciones pueden tener propiedades. ▪ Resource Description Framework (RDF) – Marco de descripción de recursos o triple stores. La información adicional se representa en un nodo separado. Llevan con nosotros mucho tiempo son parte de la W3C y la Web Semántica. ▪ Hypergraph. Un hipergrafo es un modelo en el que una relación (hiperborde) puede conectar cualquier número de nodos. Mientras que LPG necesita un nodo inicial y un nodo final, el modelo de hipergrafo permite cualquier cantidad de nodos en cualquier extremo de una relación. Muy útil si necesitas relaciones de muchos a muchos. La que vamos a tratar en esta ocasión será la primera, la segunda se extrapola de fácilmente.

Slide 9

Slide 9 text

Grafos, LPG vs RDF(1/2) Gilfoyle Gilfoyle Person Person Person Person Person Person Know Label Know Id: K1 Since: 2014-04-06 Disnesh Id: P1 Type: Employees Gilfoyle Id: P2 Type: Employees Pied Piper Id: E1 Type: Employer

Slide 10

Slide 10 text

I’m a Relationships with Label I’m a Node with Label I’m a Node with Label I’m a Node with Label Grafos, LPG vs RDF(2/2) Verb or Predicate Subject Object

Slide 11

Slide 11 text

Grafos, modelo de propiedades etiquetadas Node Son entidades discretas, también llamados nodos. Como por ejemplo una persona, un lugar, un evento o un empleador. Relationships Son las relaciones entre los nodos. Por ejemplo: una persona conoce a otra persona. Pueden ser direccionales, bidireccionales o que apuntes a si mismo. Labels La etiqueta es la información que amplia el significado de un nodo o una relación. Como, por ejemplo: la edad, la fecha en que se conocieron, etc.

Slide 12

Slide 12 text

Grafos, casos de uso(1/6) Los escenarios en los que las GDB son obvios a la vez que eficientes son: ▪ Redes sociales: LinkedIn, Facebook, etc. ▪ Motores de recomendación: compras de Amazon o eBay, contenidos como Netflix o Spotify, etc. ▪ Geoespacial: mapa de metro, navegación, etc. ▪ Detección de fraudes, rankings, etc. ▪ IoT, como bien puede ser Digital Twins. ▪ Redes de comunicación: una red LoRA, un API Gateway, etc. Muchas aplicaciones son obvias, como las anteriores, pero en otras no tanto. Es aquí cuando conocer que existe esta tercera vía para nuestros datos puede facilitarte la vida.

Slide 13

Slide 13 text

Grafos, casos de uso(2/6) Cuenta Bancaria Tarjeta Crédito Préstamo No asegurado Cuenta 1 Numero Teléfono 1 Dirección 1 DNI 1 Numero Teléfono 2 DNI 2 Cuenta 2 Cuenta 3 Cuenta Bancaria Tarjeta Crédito Préstamo No asegurado Cuenta Bancaria

Slide 14

Slide 14 text

Grafos, casos de uso(3/6) Sample of clustering with https://gephi.org/

Slide 15

Slide 15 text

Grafos, casos de uso(4/6)

Slide 16

Slide 16 text

Grafos, casos de uso(5/6) Ejemplo sacado de mi libro: Manos a la Obra con: IoT en Azure (https://jmfloreszazo.com/azure-iot-esp/)

Slide 17

Slide 17 text

Grafos, casos de uso(6/6) Login Read Insert Update Delete Grant Rights Lectura Administración Edición Publicación Bruno Mónica Ángela Hugo Sira

Slide 18

Slide 18 text

Relacional VS. Grafos(1/3) Comparación entre base de datos relacional y base de datos de grafos PersonId Name EmployerId 1 Dinesh 1 2 Gilfoyle 1 RelationshipTypeId Name 1 Know RelationshipId RelationshipTypeId PersonId PersonId 1 1 1 2 2 1 2 1 EmployerId Name 1 Pied Piper Know Id: K1 Since: 2014-04-06 Disnesh Id: P1 Type: Employees Gilfoyle Id: P2 Type: Employees Pied Piper Id: E1 Type: Employer

Slide 19

Slide 19 text

Relacional VS. Grafos(2/3) Relacional: SELECT name FROM Person LEFT JOIN Deparment_Members ON Person.Id = Deparment_Members.PersonId LEFT JOIN Deparment ON Deparment.Id = Deparment_Members. DeparmentId WHERE Deparment.name = “IT Deparment” Person id (PK) name Deparment_Members deparmentId (FK) personId (FK) Deparment id (PK) name

Slide 20

Slide 20 text

Relacional VS. Grafos(3/3) Grafo: MATCH (p:person) - :belongToname –> (d:deparment) WHERE d.name = “IT Deparment” RETURN p.name Name :person Name :deparment :belongTo

Slide 21

Slide 21 text

Relacional + Grafos Application Read Write Read Write Soft References

Slide 22

Slide 22 text

Cosmos DB Gremlin (graph) API(1/2) ¿Qué es Gremlin? ▪ Un lenguaje de grafos transversal. ▪ Nos proporciona las herramientas para realizar un CRUD en las consultas de grafos. ▪ Extrapólalo a lo que hace SQL con una base de datos Relacional. https://tinkerpop.apache.org/gremlin.html

Slide 23

Slide 23 text

Cosmos DB Gremlin (graph) API(1/2) ¿Por qué Cosmos DB? ▪ puede escalar en almacenamiento. ▪ tiene replicación multirregión. ▪ es una base de datos completamente administrada. ▪ tiene indexado automático. ▪ la sintaxis de Gremlin está soportada por diversos motores. ▪ tiene niveles de consistencia ajustables (niveles de coherencia en Azure Cosmos DB). ▪ para cada entidad especializada tenemos un tipo de API: SQL API → Colecciones, Table API → Tablas, MongoDB API → Colecciones, Cassandra API → Tablas y Gremlin API → Grafos. ▪ Y por qué desde hace tiempo existe un free tier que puedes usar para poder probarlo.

Slide 24

Slide 24 text

¿Qué vamos a ver?: https://github.com/jmfloreszazo/dotNetMalaga20222-Graph Demo: Cosmos DB + Gremlin API(1/4) Un paseo por Cosmos DB en Azure Ejemplo: Usando Gremlin y SQL. ¡Las RUs! Ejemplo: Vamos a comer en el aeropuerto de LA

Slide 25

Slide 25 text

Demo: Cosmos DB + Gremlin API(2/4) Code in GitHub Gist

Slide 26

Slide 26 text

Demo: Cosmos DB + Gremlin API(3/4) Costes de RU: Graph vs Document DB

Slide 27

Slide 27 text

Demo: Cosmos DB + Gremlin API(4/4) Wendys Terminal 1 Puerta T1-1 Puerta T1-2 Puerta T1-3 McDonals Chipiotle Jack in the Box Terminal 2 Puerta T2-1 Puerta T2-2 Puerta T2-3 Subway Burger King Terminal Puerta Restaurante Terminal/Terminal Terminal/Puerta Terminal/Restaurante Puerta/Puerta Puerta/Restaurante

Slide 28

Slide 28 text

Ejemplo: análisis, previsión e informes de la cadena de suministros Analítica avanzada: Cosmos DB & Gremlin API Azure Cosmos DB graph database Azure Synapse Link Analytical Store read optimized analytics queries Transaction Store write graph data using Gremlin API Machine Learning Big data BI Dashboards

Slide 29

Slide 29 text

Neo4J ¿Por qué debo tenerla en cuenta? ▪ Es muy rápida. ▪ Es una base de datos de grafos nativa pensada para un alto rendimiento en arquitecturas distribuidas. ▪ ACID: preparada para Workload de billones y trillones de transacciones. ▪ Dispone de integración ML out-the-box. ▪ Es open source, dispones de la versión Neo4j Community Edition. ▪ Y por que si la usan ellos, por algo será: https://neo4j.com

Slide 30

Slide 30 text

¿Qué vamos a ver?: https://github.com/jmfloreszazo/dotNetMalaga20222-Graph Un paseo por Neo4J Desktop Ejemplo: API REST usando Neo4j.Driver Demo: Neo4J(1/2)

Slide 31

Slide 31 text

Code in GitHub Gist Demo: Neo4J(2/2)

Slide 32

Slide 32 text

Analítica avanzada: Neo4J Ejemplo: análisis, previsión e informes de la cadena de suministros Detección de comunidad Detecta opciones de agrupación o partición de grupos Centralidad (Importancia) Determina la importancia de distintos nodos en la red. Semejanza Evalúa qué tan parecidos son los nodos Predicción heurística de enlaces Estima la probabilidad de que los nodos formen una relación. Caminos y búsquedas Encuentra caminos óptimos; evalúa la disponibilidad de rutas, la calidad, … Incrustación de nodos Aprende la topología de gráficos para reducir la dimensionalidad para ML

Slide 33

Slide 33 text

Analítica: Relacional VS Grafos Relacional Grafos

Slide 34

Slide 34 text

Recursos(1/2) Enlaces de Interés: ▪ Azure Cosmos DB: Gremlin API https://docs.microsoft.com/en-us/azure/cosmos-db/graph-introduction https://docs.microsoft.com/en-us/azure/cosmos-db/gremlin-support ▪ Quickstart: Create, query, and traverse an Azure Cosmos DB graph database using Gremlin https://docs.microsoft.com/en-us/azure/cosmos-db/create-graph-gremlin-console ▪ Build a .NET application using… Azure Cosmos DB Gremlin API: https://docs.microsoft.com/en-us/azure/cosmos-db/create-graph-dotnet Neo4J: https://github.com/neo4j-examples/movies-dotnet-bolt ▪ Gremlin Console https://tinkerpop.apache.org/docs/current/ çhttp://tinkerpop.apache.org/downloads.html

Slide 35

Slide 35 text

Recursos(2/2) ▪ Neo4J https://neo4j.com/download/ https://neo4j.com/books/ (donde puedes descargarte libros gratuitos ) ▪ Representación gráfica de grafos… d3js.org https://observablehq.com/@d3/gallery Linkorious https://linkurio.us/product/ NetworkX https://networkx.org/ Gephi https://gephi.org/ Y si te interesa, de forma gratuita podrás obtener el Neo4J Certified Professional: https://neo4j.com/graphacademy/neo4j-certification/ O la de Neo4j Graph Data Science Certification

Slide 36

Slide 36 text

No content