graf baze i neo4j - javacro conference · graf baze i neo4j . | 3 nosql baze (1) • key-value •...
TRANSCRIPT
![Page 1: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/1.jpg)
| 1 Graf baze i Neo4j .
Graf baze i Neo4j
Vjeran Marčinko
Kapsch CarrierCom Croatia
![Page 2: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/2.jpg)
| 2 Graf baze i Neo4j .
Kapsch – O kompaniji
![Page 3: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/3.jpg)
| 3 Graf baze i Neo4j .
NoSQL baze (1)
• Key-value
• zasnovane na Amazon Dynamo arhitekturi
• K-V kolekcije
• Primjeri: Voldemort, Redis, Riak
• Big-Table
• zasnovane na Google BigTable arhitekturi
• big table strukture, column families
• Primjeri: HBase, Cassandra
• Document
• inspirirane od Lotus Notes-a
• K-V kolekcije unutar K-V kolekcija
• Primjeri: CouchDB, MongoDB
![Page 4: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/4.jpg)
| 4 Graf baze i Neo4j .
NoSQL baze (2)
Graf
• zasnovane na teoriji graf struktura
• Primjeri:
• InfiniteGraph
• OrientDB
• Neo4j
• Visoka povezanost data modela:
• Normalizirani podaci (kao RDBMS)
• Izvlačenja informacija nepredviđenih u trenutku zapisa
• Teže horizontalno skaliranje
• Kada koristiti:
• Dosta „join” tablica (pretraga >1000x brža od RDBMS baza)
• Dosta polu-struktuiranih podataka
• Želite fleksibilan model
![Page 5: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/5.jpg)
| 5 Graf baze i Neo4j .
Graf data model
Dijelovi graf data modela:
• Node-ovi
• Relacije između node-ova
• Property-ji na node-ovima i relacijama
Nema DB „scheme” ne postoje različiti „tipovi” node-ova aplikacijski sloj
brine o upisu!
![Page 6: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/6.jpg)
| 6 Graf baze i Neo4j .
Graf data model – SQL ekvivalent
Grubi ekvivalent graf data modela u SQL bazi:
• Tablica „NODES”
• Tablica „RELATIONSHIPS”
![Page 7: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/7.jpg)
| 7 Graf baze i Neo4j .
Skiciranje na ploči - graf
![Page 8: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/8.jpg)
| 8 Graf baze i Neo4j .
Object-Relational Mapping
• OO model (npr. Java) bogatiji od SQL modela
• Problem referenciranja objekta po „ulozi”:
• OO model: višestruko klasificiranje objekta kroz različite jezične
konstrukcije (klasa, superklasa, interface, mixin, trait …) višestruke
„uloge” nekog objekta
• SQL model: klasificiranje objekta (recorda) po samo jednom tipu (tablici)
Primjer objektnog modela:
public class User implements UserOwner {
private UserOwner owner;
… }
public class Company implements UserOwner { …. }
public class Department implements UserOwner {…}
![Page 9: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/9.jpg)
| 9 Graf baze i Neo4j .
Object-Graph Mapping
• Objektni model u
runtime-u je graf!
• Referenciranje
objekta po više
njegovih „uloga” se
implementira kao
različite relacije
prema jednom te
istom node-u
Objektni model Graf baza
Ti me kompletiraš!
![Page 10: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/10.jpg)
| 10 Graf baze i Neo4j .
Područja primjene graf bazi
• Social data
• Geospatial
• Katalozi proizvoda
• Upravljanje sustavima
• Bioinformatika
• Business Intelligence
• Preporuke
![Page 11: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/11.jpg)
| 11 Graf baze i Neo4j .
Neo4j - uvod
• trenutno najpopularnija graf baza
• vlasništvo Neo Technologies Inc.
• izrađena u Javi
• početak razvoja oko 2001.g., u 24/7 produkciji od 2004.g.
• transakcijska baza (ACID)
• nema scheme podataka
• klijenti za mnoge jezike: Java, Ruby, .NET, PHP, Scala, Clojure, Haskell …
• različiti deploymenti:
• embedded
• single server
• master-slave cluster
• milijarde zapisa na jednom stroju
![Page 12: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/12.jpg)
| 12 Graf baze i Neo4j .
Neo4j – Cypher API - Uvod
• graf „pattern matching” jezik („SQL” za grafove)
• agregacije, sortiranje, offset, limit…
• mutacije podataka (create, update, delete)
• Deklarativan:
• Odredite početne node-ove (Lucene index)
• Odredite graf „pattern” ciljanih node-ova
• Algoritam se „ispod haube” prilagođava query-u
Brzina pretrage neovisna o količini podataka! (uglavnom)
![Page 13: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/13.jpg)
| 13 Graf baze i Neo4j .
Neo4j – Cypher API - Pattern Matching
• Neimenovani node-ovi i relacije
• Imenovani node-ovi i relacije
• Umrežene strukture
( ) --> ( )
( A ) -[ :LOVES ]-> ( B )
( A ) --> ( B ) --> ( C ) <-- ( A )
![Page 14: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/14.jpg)
| 14 Graf baze i Neo4j .
Neo4j – Cypher API – Primjer pretrage
Suradnici „Jim”-a koji dijele interese za iste teme?
![Page 15: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/15.jpg)
| 15 Graf baze i Neo4j .
Neo4j – Cypher API – Primjer pretrage
START startEmployee = node:employees(name = „Jim”)
MATCH (startEmployee) – [ :WORKS_FOR ] -> (company),
(coworker) – [ :WORKS_FOR ] -> (company),
(startEmployee) – [ :INTERESTED_IN ] -> (topic),
(coworker) – [ :INTERESTED_IN ] -> (topic)
RETURN cowoker.name AS coworker_name,
count(topic) as common_topic_count
ORDER BY common_topic_count DESC
![Page 16: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/16.jpg)
| 16 Graf baze i Neo4j .
Neo4j – Java API – Spring Data Neo4j
• Spring Data projekt
• POJO-centričan (anotacije)
• Template-centričan (Neo4jTemplate)
• Inversion-of-Control
• Spring XML namespaces
• Mapiranje graf modela:
• Node @NodeEntity klasa
• Relacija @RelationshipEntity klasa
• Property Field-ovi u klasama
![Page 17: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/17.jpg)
| 17 Graf baze i Neo4j .
Neo4j – Java API – Spring Data Neo4j - Primjer
@NodeEntity
public class Actor {
@RelatedToVia(type = „ACTS_IN”)
private Set<Role> roles;
private String name;
}
@RelationshipEntity
public class Role {
@StartNode private Actor actor;
@EndNode private Movie movie;
private String roleName;
…
}
![Page 18: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/18.jpg)
| 18 Graf baze i Neo4j .
Neo4j - web konzola
![Page 19: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/19.jpg)
| 19 Graf baze i Neo4j .
Vizualiziranje grafa (1)
Tablice, bar/pie chartovi…?
Hmmm…
Graf ima jedinstvenu strukturu.
ISKORISTITE TO!
Kako prikazati graf?
Budite atraktivni!
![Page 20: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/20.jpg)
| 20 Graf baze i Neo4j .
Vizualiziranje grafa (2)
• Max de Marzi Blog
• D3 Javascript lib
• Gephi tool
• VivaGraphJS
• …
![Page 21: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,](https://reader030.vdocuments.us/reader030/viewer/2022040312/5e03c3612485042cf31e5380/html5/thumbnails/21.jpg)
| 21 Graf baze i Neo4j .
The end my friend…
Hvala!