4. HVA ER EN GRAF?
Noder og kanter
Property graph:
Noder og kanter har egenskaper
Kanter har retning
Name:
Rex
Name:
Alice
Owns
Name:
Rover
Name:
Tom
Name:
Floyd
Knows
HatesMarried to
Like
People
Dogs
6. Alle grafdatabaser snakker «grafisk»
«Native» grafdatabaser lagrer dataene som en graf
HVA ER EN GRAFDATABASE
7. Databasen vi skal se på i kveld!
Markedsledende
«Native» grafdatabase
Eget spørrespråk: Cypher
OLTP: Laget for real time spørringer
Fungerer best på deler av datasettet
HVA ER NEO4J?
15. HANDS ON – NODER OG RELASJONER
«Lær å tegne med Cypher»
16. CYPHER - NOEN NØKKELORD
MATCH - Beskriver et mønster å søke etter
WHERE - Begrenser søket
RETURN - Returnerer ønskede verdier
CREATE - Oppretter ny informasjon
MERGE - Oppretter ny informasjon – om den ikke finnes fra før
18. MATCH
// Alle noder
MATCH (n) RETURN n
// Fire vilkårlige noder
MATCH (n) RETURN n LIMIT 4
// Alle noder med label ”User”
MATCH (n:User) RETURN n
n
19. MATCH - PROPERTIES
// Alle user-noder med navn ”john doe”
MATCH (p:user {name:”john doe”}) RETURN p
// Eller
MATCH (p:user)
WHERE p.name = ”john doe”
RETURN p
p
Name:
”John Doe”
20. RETURN PROPERTY
// Navn på alle brukere
MATCH (p:user) RETURN p.name
p.name
John Doe
Jane Doe
Ozzy Doe
31. AGGREGERING
// Antall noder
MATCH (n) RETURN count(n)
// Summen av pris
MATCH (n) RETURN sum(n.pris)
// Høyeste pris
MATCH (n) RETURN max(n.pris)
32. ANTALL HOPP I RELASJONER
qp
// Ett til to hopp
MATCH (p) –[*1..2]-> (q)
RETURN p, q
q
// Vilkårlig antall hopp
MATCH (p) –[*]-> (q)
RETURN p, q
qp q
33. PATHS
// Alle direkte fra n til m
MATCH p = (n)-->(m)
RETURN p
// Én korteste vei mellom m og n, men max lengde 3.
MATCH p = shortestPath( (n)-[*..3]->(m) )
RETURN p
// Alle korteste veier mellom m og n
MATCH p = allShortestPath( (n)-->(m) )
RETURN p
m
mn
n
mn
36. Lynrask traversering av relasjoner
Relasjoner er en del av språket
Egner seg for:
Anbefalingsmotorer
Pathfinding
Mønstergjenkjenning
Prediktiv analyse
HVORFOR NEO4J?
39. Ikke egnet for
Analyse av store deler av datasettet
Relasjonsløse data
Høyvolum skriving av data
Bruksmønstere knyttet til enkeltagregater
HVORFOR IKKE NEO4J?
Grafikken:
Alt som har forskjellig struktur må i forskjellig tabell.
Relasjoner er pekere til andre (eller samme tabell)
Mange-til-mange krever koblingstabeller
Forklaring til grafikk:
Data i samme collection kan ha forskjellig format
Ingen relasjoner