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

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

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. Grafos
    La tercera vía para tus datos

    View Slide

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

    View Slide

  3. ¿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.

    View Slide

  4. El porqué de esta presentación

    View Slide

  5. 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)

    View Slide

  6. 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.

    View Slide

  7. 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).

    View Slide

  8. 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.

    View Slide

  9. 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

    View Slide

  10. 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

    View Slide

  11. 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.

    View Slide

  12. 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.

    View Slide

  13. 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

    View Slide

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

    View Slide

  15. Grafos, casos de uso(4/6)

    View Slide

  16. 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/)

    View Slide

  17. 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

    View Slide

  18. 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

    View Slide

  19. 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

    View Slide

  20. 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

    View Slide

  21. Relacional + Grafos
    Application
    Read Write Read Write
    Soft References

    View Slide

  22. 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

    View Slide

  23. 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.

    View Slide

  24. ¿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

    View Slide

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

    View Slide

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

    View Slide

  27. 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

    View Slide

  28. 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

    View Slide

  29. 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

    View Slide

  30. ¿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)

    View Slide

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

    View Slide

  32. 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

    View Slide

  33. Analítica: Relacional VS Grafos
    Relacional Grafos

    View Slide

  34. 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

    View Slide

  35. 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

    View Slide

  36. View Slide