Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Grafos - La tercera via para tus datos (ed. dot...

Grafos - La tercera via para tus datos (ed. dotNetMalaga 2022)

Presentación correspondiente a la charla de dotNetMalaga 2022

Jose María Flores Zazo

November 12, 2022
Tweet

More Decks by Jose María Flores Zazo

Other Decks in Technology

Transcript

  1. ¿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.
  2. 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)
  3. 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.
  4. 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).
  5. 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.
  6. 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
  7. 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
  8. 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.
  9. 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.
  10. 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
  11. 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/)
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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.
  18. ¿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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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