bases de datos de grafos...grafos cpap, fing, udelar – 2020 modelado y procesamiento de grandes...
TRANSCRIPT
![Page 1: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/1.jpg)
Bases dedatos degrafos
CPAP, FING, UdelaR – 2020Modelado y Procesamiento de Grandes Volumenes de Datos
![Page 2: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/2.jpg)
2/94
¡Hay casos en que interesa más modelar lasrelaciones entre cosas que las cosas!
![Page 3: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/3.jpg)
3/94
Agenda● Bases de datos de grafos
– Modelos de datos● Grafos y la web semántica
– Estrategias de almacenamiento– Lenguajes de consulta
● Otras bases de datos de grafos– Estrategias de almacenamiento– Lenguajes de consulta– Modelos de procesamiento distribuído
![Page 4: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/4.jpg)
4/94
Agenda● Bases de datos de grafos
– Modelos de datos● Grafos y la web semántica
– Estrategias de almacenamiento– Lenguajes de consulta
● Otras bases de datos de grafos– Estrategias de almacenamiento– Lenguajes de consulta– Modelos de procesamiento distribuído
![Page 5: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/5.jpg)
5/94
Problema de los puentes deKönigsberg (I)
![Page 6: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/6.jpg)
6/94
Problema de los puentes deKönigsberg (I)
![Page 7: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/7.jpg)
7/94
Problema de los puentes deKönigsberg (II)
![Page 8: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/8.jpg)
8/94
Problema de los puentes deKönigsberg (III)
![Page 9: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/9.jpg)
9/94
¿Qué es un grafo?
Un grafo G consiste en un conjunto de nodos o vértices V,
y un conjunto de aristas E.Las aristas conectan nodos entre si.
Las bases de datos de grafos implementandiferentes variantes1.
1 Survey of Graph Database Models, Angles and Gutierrez,ACM Computing Surveys, 2008
![Page 10: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/10.jpg)
10/94
![Page 11: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/11.jpg)
11/94
Grafos según su estructura
Grafo no dirigido Grafo dirigido
Multigrafos ypseudografos
Hipergrafos
![Page 12: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/12.jpg)
12/94
Grafos según su estructura
Grafo no dirigido Grafo dirigido
Multigrafos ypseudografos
Hipergrafos
![Page 13: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/13.jpg)
13/94
Grafos según los datos asociados
Etiquetas en las aristas Etiquetas en los nodos
23
Atributos en los nodos
Bob Alice [Bob,25] [Alice,30]
¿qué tipos de grafos se representan en las bases de datos de grafos?
![Page 14: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/14.jpg)
14/94
¿qué tipos de grafos se representanen las bases de datos de grafos?
Existen muchos modelos (ver Survey of Graph Database Models, Angles and Gutierrez, ACM
Computing Surveys, 2008)
Los sistemas más populares actualmente implementanRDF o property graphs
![Page 15: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/15.jpg)
15/94
Resource Description Framework (RDF)
http://example.org/bob “Bob”
http://xmlns.com/foaf/0.1/name
Multigrafos dirigidos.
Etiquetas en nodos yaristas.
Las etiquetas pueden ser: IRIs, literales, o nodos
blancos.http://example.org/alice
http://xmlns.com/foaf/0.1/knows
Virtuoso y Stardog son ejemplos de sistemas de bases de datos que soportan RDF.
![Page 16: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/16.jpg)
16/94
Property Graph Model (PGM)
Username:Bobage: 25
Groupname: GDM
Username:Alice
memberOfsince:2015
memberOfsince:2014
foundedBy
Multigrafos dirigidos.
Parejas (clave,valor)llamadas propiedades asociadas a nodos y
aristas.
Además puedo etiquetarnodos y aristas.
Neo4j y Titan son ejemplos de sistemas de bases de datos que soportan PGM.
![Page 17: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/17.jpg)
17/94
Property Graph Model (PGM)
![Page 18: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/18.jpg)
Grafos y la web semántica
![Page 19: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/19.jpg)
La web clásica es una red de
documentos, interpretable por humanos,
donde las relaciones entredocumentos no tienen un
signifcado.
![Page 20: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/20.jpg)
![Page 21: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/21.jpg)
Además, la mayoría de los datos en la web están
a i s l a d o s
![Page 22: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/22.jpg)
La web de datos es una red de afrmaciones, interpretable porhumanos y máquinas, donde las
afrmaciones se relacionan y tienenun signifcado.
![Page 23: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/23.jpg)
http://www.w3.org/2001/sw/wiki/RDF
RDF: un modelo de datos basado en triplas que permite representar relaciones.
SPARQL: el lenguaje de consultas sobreRDF.
http://www.w3.org/2001/sw/wiki/SPARQL
![Page 24: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/24.jpg)
José E. Rodó Ariel
obraNotable
<sujeto, predicado, objeto>
afirmación o tripla
![Page 25: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/25.jpg)
Ing. Eladio DiesteMVD Shopping
Center Barrio Buceo
obraNotable Libro_de
<sujeto, predicado, objeto>
afirmación o tripla
En RDF todo es una tripla.Los recursos y las propiedades se
identifican por URIs
http://.../EnriqueRodo http://.../Ariel http://.../Uruguay
![Page 26: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/26.jpg)
Se habla menos de semantic web...
![Page 27: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/27.jpg)
![Page 28: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/28.jpg)
![Page 29: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/29.jpg)
Linked Dataes un conjunto de
buenas prácticas para publicar y relacionar
datos en la web, usando
tecnologías de la
web semántica
![Page 30: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/30.jpg)
Principios de Linked Data
1) Usar URIs para nombrar cosas
2) Usar URIs HTTP que sean consultablespor humanos y máquinas
3) Proveer información útil acerca de cadaURI en RDF
4) Crear links entre URIsTim Berners-Lee – Linked Data (2006)
http://www.w3.org/DesignIssues/LinkedData#TED Talk Tim Berners-Lee on the next Web (2009)
http://www.ted.com/talks/tim_berners_lee_on_the_next_web.html
![Page 31: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/31.jpg)
Linked Data + Open Data = LOD
http://5stardata.info/en/
![Page 38: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/38.jpg)
Almacenamiento de RDF
● Los datos RDF se almacenan en triplestores.● Algunos se implementan sobre bases de datos
relacionales : ej OpenLink Virtuoso● Otros almacenan el grafo en forma “nativa”
![Page 39: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/39.jpg)
Para los curiosos
● Tutorial SPARQL by Examplehttp://www.cambridgesemantics.com/semantic-university/sparql-by-example
● Curso Linked Data Engineering del Hasso-Plattner Instituthttps://open.hpi.de/courses/semanticweb2016
![Page 40: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/40.jpg)
40/94
¿Qué es Neo4j?
• Una base de datos de grafos + índices Lucene• Open source (Java)• Representa property graphs en forma nativa• Soporta ACID • Cantidad “acotada” de elementos:
– 32k millones de nodos– 32k millones de relaciones– 64k millones de propiedades
• Cypher como lenguaje de consulta +APIs
![Page 41: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/41.jpg)
41/94
Volvamos al modelado
![Page 42: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/42.jpg)
42/94
![Page 43: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/43.jpg)
43/94
![Page 44: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/44.jpg)
44/94
¿Qué busca esta consulta?
![Page 45: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/45.jpg)
45/94
Modelo de Grafos es compatiblecon pizarrones
![Page 46: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/46.jpg)
46/94
Modelo de Grafos es compatiblecon pizarrones (II)
![Page 47: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/47.jpg)
47/94
Modelo de Grafos es compatiblecon pizarrones (III)
![Page 48: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/48.jpg)
48/94
Modelo de Grafos es compatiblecon pizarrones (IV)
![Page 49: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/49.jpg)
49/94
¿Cuáles fueron los pasos queseguimos?
● Identifcamos entidades y las representamoscomo nodos (sustantivos)
● A los nodos les asignamos etiquetas, de formade agruparlos o categorizalos (actor, director)
● Identifcamos las relaciones (acciones, verbos)● Incorporamos propiedades
![Page 50: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/50.jpg)
50/94
Modelando sin esquema
● Neo4j es schema-free
● Un modelo de datos puede ser mejor o peor● La mejor opción suele estar dada por las
consultas que necesitamos ejecutar sobrenuestros datos
● Veamos un ejemplo...
![Page 51: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/51.jpg)
51/94
Ejemplo de modelado (I)● Una aerolínea tiene un vuelo particular, en un
día determinado hacia y desde una ubicaciónespecífca
![Page 52: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/52.jpg)
52/94
Ejemplo de modelado (II)
● Esta parece una mejor idea...
![Page 53: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/53.jpg)
53/94
Ejemplo de modelado (III)
● Esta parece una mejor idea...
![Page 54: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/54.jpg)
54/94
Ejemplo de modelado (IV)
● Esta parece una mejor idea...
![Page 55: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/55.jpg)
55/94
Para discutir:
Modelado relacional vs modelado en grafos
![Page 56: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/56.jpg)
56/94
Estrategias de almacenamiento
![Page 57: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/57.jpg)
57/94
¿cómo almacenar grafos? (i)
Usando
índices
● Búsqueda en índice O(log n) (depende de la implementación).
● Atravesar un camino de largo m tiene un costo O(m log n)
● Índices en una sola dirección
![Page 58: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/58.jpg)
58/94
¿cómo almacenar grafos? (ii)
Index-free adjacency: acceder al adyacente en O(1)
¿cómo se implementa?
![Page 59: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/59.jpg)
59/94
Almacenamiento en Neo4j
● Datos almacenados en diferentes store files, unpor cada parte del grafo (nodos, relaciones,propiedades y etiquetas)
● Registros de largo fjo:– Permiten computar el offset fácilmente
● Punteros entre store files.
● Las listas de relaciones son doblementeenlazadas. ¡Multiestructuras!
![Page 60: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/60.jpg)
60/94
Ejemplo: nodos y relaciones
![Page 61: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/61.jpg)
61/94
Operaciones sobre grafos
![Page 62: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/62.jpg)
62/94
Operaciones básicasDado un nodo G:
● AddNode (G, x): agrega el nodo x al grafo G
● DeleteNodo (G, x): borra el nodo x del grafo G
● Adjacent(G,x,y): chequea si existe una arista de x a y
● AdjacentEdges(G,x,y): etiquetas de las aristas de x a y
● Add(G,x,y,l): agrega una arista entre x e y con etiqueta l
● Delete (G,x,y,l): elimina una arista entre x e y con etiqueta l
![Page 63: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/63.jpg)
63/94
Operaciones básicasDado un nodo G:
● Reach (G,x,y): chequea si existe un camino de x a y
● Path (G,x,y): un camino de x a y (el más corto)
● 2-hop(G,x): conjunto de nodos y, tal que existe un camino delargo 2 entre y e y, o de y a x
● n-hop(G,x): conjunto de nodos y, tal que existe un camino delargo n entre y e y, o de y a x
![Page 64: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/64.jpg)
64/94
Cypher● Lenguaje desarrollado por Neo4j, tanto para la creación de
bases de datos cono para su manipulación (DML, DDL)● Lenguaje declarativo, inspirado en SQL●
● Los tipos de datos se dividen en dos tipos● Básicos:
● Booleanos, integer, Float, String, List (lista ordenada), Map (clave,valor)
● De estructura:● Node: almacena un nodo del grafo con sus propiedades● Relationship: almacena una relación del grafo con sus
propieades● Path: almacena una ruta del grafo
![Page 65: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/65.jpg)
65/94
Cypher: Pattern-Matching● Pattern-matching
● Es el “corazón” de Cypher● Usando patterns, especificamos la forma de los datos
que requerimos, luego Cypher resuelve como obtienelos mismos.
![Page 66: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/66.jpg)
66/94
Cypher: Pattern-Matching● Pattern-matching
● Pattern para un nodo: (a)● Este pattern describe un nodo, y nombra el nodo
usando la variable a
● Patterns para nodos relacionados: (a) --> (b)● Describe dos nodos y una relación simple entre
ellos. Los nodos se llaman a y b y la relación esdirigida, desde a hacia b
● Patterns para etiquetas: (a:Persona)-->(b)● Se especifica la etiqueta que debe tener el nodo a
![Page 67: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/67.jpg)
67/94
Cypher: Pattern-Matching● Pattern-matching
● Propiedades: (a {name:'Seba'})● Los patterns asociados a propiedades se escriben
entre llaves. En este caso, todos los nodos cuyapropiedad name sea 'Seba'
● Largo variable: (a)-[*2]->(b)● Describe un grafo de tres nodos y dos relaciones,
en un solo camino (de largo 2). Es equivalente a(a)-->()-->(b)
![Page 68: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/68.jpg)
68/94
Cypher: Pattern-Matching● Pattern-matching
● Largo variable: (a)-[*3..5]->(b)Largo mínimo de 3 y máximo de 5. Describe un grafo de 4 nodos y 3 relaciones, 5 nodos y 4 relaciones o 6 nodos y 5 relaciones, todos conectados por un solo camino.
![Page 69: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/69.jpg)
69/94
Cypher: creación de un nodo● La operación CREATE permite crear nuevos nodos● Ejemplo de creación de un nodo con etiqueta y propiedades
CREATE (ejNodo:persona {nombre: 'Seba', anio_nac:1981})}
Operación
Variable temporal en la que se almacena el nodo
EtiquetaOperación Etiqueta Propiedades
![Page 70: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/70.jpg)
70/94
Cypher: crear relaciones● La operación CREATE también permite crear relaciones entre
nodos. Las diferentes operaciones CREATE deben de ejecutarsejuntas para poder acceder a las variables temporales.
CREATE (SebaNodo:persona {nombre: 'Seba', anio_nac:1981})}
Nodo origen
CREATE (CursoNodo:curso {nombre: 'MPGVD'})}
CREATE (SebaNodo)-[:DICTA {anio_desde:[2020]}]->(CursoNodo), CursoNodo)-[:DICTADO_POR {anio_desde:[2020]}]->(SebaNodo))
Relación Nodo destinoPropiedadesde la relación
RelaciónRelación
![Page 71: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/71.jpg)
71/94
Cypher: consultas con el operadorMATCH
● El operador MATCH permite hacer consultas con condicionessobre los datos de los nodos y sus relaciones
● La siguiente consulta retorna todos los nodos etiquetados como“persona”
MATCH (p:persona) RETURN p
Variable donde se almacenanlos datos que serán retornados
Operación Etiqueta
![Page 72: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/72.jpg)
72/94
Cypher: consultas con el operadorMATCH
● ¡Cuidado! En las consultas debemos prestar atención a laaplicación de las etiquetas
MATCH (p) RETURN p
![Page 73: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/73.jpg)
73/94
Cypher: consultas con el operadorMATCH
● Es posible proyectar las propiedades que se quieren incluir en elresultado
MATCH (p:persona) RETURN p.nombre, p.anio_nac
![Page 74: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/74.jpg)
74/94
Cypher: consultas con el operadorMATCH
● Se dispone de una operación WHERE (dijimos que estabainspirado en SQL)
MATCH (p:persona) WHERE p.nombre = 'Seba' RETURN p.nombre, p.anio_nac
![Page 75: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/75.jpg)
75/94
Cypher: operador SET● El operador SET se utiliza para añadir nuevas propiedades a un
nodo● Si la propiedad ya existe, se actualizará con el nuevo valor
MATCH (p:persona) WHERE p.nombre = 'Seba' SET p.apellido='Garcia'
RETURN p● También es posible eliminar propiedades
MATCH (p:persona) WHERE p.nombre = 'Seba' SET p.apellido=NULL
RETURN p
![Page 76: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/76.jpg)
76/94
Cypher: operador REMOVE● El operador REMOVE puede usarse, al igual que el operador
SET, para eliminar propiedades:
MATCH (p:persona) WHERE p.nombre = 'Seba' REMOVE p.apellido
RETURN p● También es posible eliminar etiquetas de un nodo
MATCH (p) WHERE p.nombre = 'Seba' REMOVE p:persona
RETURN p
![Page 77: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/77.jpg)
77/94
Cypher: operador DELETE● El operador DELETE se utiliza para eliminar nodos
MATCH (p:persona) WHERE p.nombre = 'Seba' DELETE p
● ¡Cuidado! Para eliminar un nodo, primer deben de eliminarse susrelaciones. También se pueden eliminar con el operadorDELETE.
MATCH (p1:persona)-[r:DICTA]->(c:curso) WHERE p1.nombre='Seba' DELETE r
![Page 78: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/78.jpg)
78/94
Cypher: operador DELETE● En una sola operación pueden eliminarse nodos y aristas● El operador DETACH elimina el nodo y todas sus relaciones de
origen y destino
MATCH (p:persona) WHERE p.nombre = 'Seba' DETACH DELETE p
![Page 79: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/79.jpg)
79/94
Cypher: constraints● Cypher permite definir constraints
● De unicidad: los valores de una propiedad o de un conjunto deellas no pueden repetirse en nodos que compartan unaetiqueta
CREATE CONTRAINT ON (p:persona) ASSERT p.ci IS UNIQUE
● De existencia: obliga a que la propiedad exista en todos los nodoscon la misma etiqueta
CREATE CONTRAINT ON (p:persona) ASSERT EXISTS (p.nombre)
![Page 80: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/80.jpg)
80/94
Cypher: constraints● Cypher permite definir constraints
● De clave (Node key): obliga a que una propiedad o conjunto deestas existan y sean únicas. Concepto similar al de PK en elmodelo relacional (Sólo disponible en versión Enterprise)
CREATE CONTRAINT ON (p:persona) ASSERT p.ci IS NODE KEY
![Page 81: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/81.jpg)
81/94
Cypher: funciones de agregación● Cypher dispone de funciones de agregación
MATCH (n:Person) RETURN avg(n.edad)
Cualquier valor null es excluído del cálculoavg(null) retorna null
![Page 82: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/82.jpg)
82/94
Cypher: funciones de agregación● avg● collect● count● max● min● percentileCont (interpolación lineal)● percentileDisc (método de redondeo)● stDev● sum
![Page 83: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/83.jpg)
83/94
Cypher: operaciones más complejas● Buscar un camino más corto entre dos nodos, con un cantidad
máxima de 15 relaciones.
MATCH (martin:Person { name: 'Martin Sheen' }),(oliver:Person { name: 'Oliver Stone' }), p = shortestPath((martin)-[*..15]-(oliver))RETURN p
![Page 84: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/84.jpg)
84/94
GQL Standard● Graph Query Language Standard● ISO/IEC 39075 Information Technology, Database Languages, GQL● Propuesta aceptada en 9/2019● Standard propuesto para 8/2021● Basado en standard SQL● Fuerte participación de Neo4j y Oracle
● Gramática de Cypher liberada como open source en 2015
![Page 85: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/85.jpg)
85/94
GQL Standard● Graph Query Language Standard● ISO/IEC 39075 Information Technology, Database Languages, GQL● Propuesta aceptada en 9/2019● Standard propuesto para 8/2021● Basado en standard SQL● Fuerte participación de Neo4j y Oracle
● Gramática de Cypher liberada como open source en 2015
![Page 86: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/86.jpg)
86/94
Sharding Graph Data● Repaso:
● Data Sharding: división horizontal de los datos, en particionesorganizadas en distintos servidores
● ¿Por qué usar sharding?● Razones legales o de privacidad (GDPR)● Minimizar latencia de consultas entre varias regiones● Segmentos relevantes de los grafos pueden almacenarse en
servidores cercanos a los que ejecutan la consulta● El tamaño del grafo se hace demasiado grande (billones de
nodos), por lo que debe de ser dividido en grafos máspequeños
![Page 87: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/87.jpg)
87/94
Sharding Graph Data
● La implementación del sharding depende fuertemente del nivelde conexión de los datos
● Mientras más conectados estén los datos, más complejo seráhacer el sharding
● Se debe utilizar redundancia de datos para generar puentesentre shards● No es posible tener relaciones entre un nodos de diferentes
shards● Neo4j Fabric (disponible desde versión 4.0) es la solución de
sharding que permite dividir grandes grafos en instancias máspequeñas para luego almacenarlas en bases de datosindependientes
![Page 88: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/88.jpg)
88/94
Sharding Graph Data
![Page 89: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/89.jpg)
89/94
Sharding Graph Data
![Page 90: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/90.jpg)
90/94
Sharding Graph Data
● Se decide dejar todos los nodos de NodeA en un shard ymantener las relaciones entre los NodeA y NodeB en otro shard
● Cuando son ejecutadas las consultas, Fabric buscará los nodosNodeA que interesan y tomará las relaciones del otro shard,devolviendo los datos integrados.
![Page 91: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/91.jpg)
91/94
Sharding Graph Data
![Page 92: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/92.jpg)
92/94
Sharding Graph Data
USE fabric.shard1MATCH (n) RETURN count(n)
Consultar un shard específico
![Page 93: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/93.jpg)
93/94
Sharding Graph DataCALL { // Query January 20202 for a flight USE fabric.january2020 MATCH (flight:Flight {id: "2013-1-1--1545"})-[:ORIGIN]->(o:Airport), (flight)-[:DESTINATION]->(d:Airport) RETURN flight, o, d} // No puede accederse a un nodo de otro shard.Se deben de obtener los valores de laspropiedades y buscarlas en el otro shard
WITH flight, o.code AS originCode, d.code ASdestinationCode
CALL { // Take variables from previous WITH originCode, destinationCode // Find the nodes in the airports shard USE fabric.airports MATCH (origin:Airport {code: originCode}) MATCH (destination:Airport {code:destinationCode}) RETURN origin, destination}RETURN flight, origin, destination
![Page 94: Bases de datos de grafos...grafos CPAP, FING, UdelaR – 2020 Modelado y Procesamiento de Grandes Volumenes de Datos. 2/94 ¡Hay casos en que interesa más modelar las relaciones entre](https://reader036.vdocuments.pub/reader036/viewer/2022071609/6147b686afbe1968d37a3a70/html5/thumbnails/94.jpg)
94/94
Material adicional● Graph Databases, Ian Robinson et al, O’Reilly 2015.
http://graphdatabases.com/?ref=blog
● Documentación, cursos y videos de Neo4Jhttps://neo4j.com/developer/
● Tom Heath and Christian Bizer (2011) Linked Data:Evolving the Web into a Global Data Space.http://linkeddatabook.com/editions/1.0/
● W3C, Best Practice Recipes for Publishing RDFVocabularies, http://www.w3.org/TR/swbp-vocab-pub/