Jørgen's life can be modeled as a graph database, relational database, or on a whiteboard. A graph database best represents the flexible, connected relationships in Jørgen's social network. It allows for queries like finding connections between individuals or places they've lived. Storing the data as a graph matches how we naturally think about social networks.
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Put the whiteboard in your database
1. PUT THE WHITEBOARD IN YOUR
DATABASE
Modeling with grafdatabser
Lightning talk, Graph Databases – Oslo Meetup
26.05.2014
Jørgen Braseth – jorgen.braseth@bekk.no
2. JØRGEN’S LIFE – WHITEBOARD EDITION
MagnusErik TonjeArne
Michael
Lise
MohammedYngveKaiRune
Jan-Fredrik
Jan
Hilde
Torshov
Øya
Moholt
Hønefoss Jørgen
3. JØRGENS LIFE – RELATIONAL DATABASE EDITION
Property relation Address
RelationPerson
Is the property in a
Is the person in a
Is related to
Is in a romantic relationship with
4. JØRGENS LIFE – RELATIONAL DATABASE EDITION
ID Navn
1 Jørgen
2 Erik
3 Arne
4 Magnus
5 Tonje
11 Rune
12 Jan-Fredrik
13 Jan
14 Hilde
People
ID Navn
1 Torshov
2 Øya
3 Moholt
4 Hønefoss
Adresses
ID FROM TO START END TYPE
1 1 14 02.04.82 (null) CHILD_OF
2 1 13 02.04.82 (null) CHILD_OF
3 13 14 22.06.78 (null) MARRIED_TO
4 1 12 02.04.82 (null) SIBLING_OF
5 1 5 16.05.06 20.08.09 IN_RELATIONSHIP_WITH
6 1 7 03.02.02 11.09.05 IN_RELATIONSHIP_WITH
Relations
ID PERSON_ID ADDRESS_ID START END INHABITS OWNERSHIP
1 1 4 01.06.84 20.07.01 true (null)
2 1 3 20.07.01 01.01.03 true RENTS
3 1 2 01.01.03 01.01.05 true OWNS
4 1 2 01.01.05 24.04.05 false OWNS
… … … … … … …
17 3 1 01.06.84 02.07.12 true OWNS
Property relations
6. SELECT * FROM
people p1, people p2,
relations, address a1, address a2,
propertyRelations ef1, propertyRelations ef2
WHERE
p1.name="Jørgen" AND p2.name="Arne"
AND(
(
(p1.id=relations.from AND p2.id=relations.to)
OR
(p2.id=relations.from AND p1.id=relations.to)
) OR (
p1.id=ef1.person_id AND
a1.id=ef1.address_id AND
p2.id=ef2.person_id AND
a2.id=ef2.address_id AND
a1.id=a2.id
)
)
Jørgen Arne
?
10. Where have Jørgen lived?
Who is older, Jørgen or Arne?
How many people have lived in Hønefoss?
What, if any, are the connections between Jan-Fredrik and Arne?
Of those that have lived with Jørgen, what kinds of connections do
they have to each other?
Jørgen og Arne have lived together before!
Hei, jeg heter Jørgen og jeg er forelska i grafdatabaser.
Nå skal jeg fortelle dere om én av de mange grunnene…
La meg fortelle dere bittelitt om livet mitt frem til nå…
Jørgen – det er meg.
Jeg har bodd 4 steder.
På hver av disse stedene, har jeg bodd sammen med noen.
I hønefoss bodde jeg med familien min.
Mamma og Pappa og broren min Jan-Fredrik.
Så flyttet jeg til Trondheim for å studere.
På moholt studentby bodde jeg med 4 andre personer ila. Halvannet år
Rune, Kai, Yngve og Mohammed
Så kjøpte jeg meg egen leilighet på Øya i Trondheim.
På øya bodde jeg først med Michael, og etter hvert så flyttet dama mi inn også.
Når jeg var ferdig i Trondheim flyttet jeg til Oslo, begynte i BEKK og fikk meg leilighet på Torshov.
Der har jeg bodd siden, og har over 7 år bodd med
Erik, Arne, Magnus og på ett tidspunkt dama, nå eksdama mi, Tonje
---
Nå har jeg tegnet inn relasjonene mellom personer og adresser slik jeg ville gjort på ei tavle.
I tillegg til disse relasjonene mellom bosted og adresser, så har jeg nevnt noen andre relasjone:
Jeg fortalte at familien min var Jan, Hilde og Jan-Fredrik, så jeg har familierelasjoner til dem.
Jeg fortalte dere også om to av eksene mine, Lise og Tonje, som jeg har hatt kjæresteforhold til. I tillegg så har mamma og pappa også et pågående kjæresteforhold.
La oss tegne inn disse…
---
Dette er en tegning, relativt forståelig, av historien jeg nettopp fortalte.
Hva om vi ville lagre denne historien i databasen vår?
Vel, for å få oversikt, så begynner vi med et ER-diagram, omtrent som dette.
Dette en oversikt over hvilke typer entiteter vi har, og hvordan de forholder seg til hverandre.
I hvor mange minutter forholder man seg til denne?
DETTE er det vi egentlig forholder oss til!
41 rader fordelt på fire tabeller, med en liten bit av totalbildet i hver enkelt rad.
«Hva spør jeg om her?»
«Finnes det noen kobling mellom Jørgen og Arne?»
Eller
«Hvilke forhold har Jørgen til Arne?»
Spørringen gir deg kun direkte sammenhenger:
direkte personrelasjoner
og
folk som har forholdt til samme adresse
DET BLIR FOR VANSKELIG Å TENKE PÅ MODELLEN DIN!
“Impedans for veksestrøm = motstand for likestrøm”
Nøkkelorder her er: “Impedans” = Motstand
DVS: Impedance mismatch = «Motstanden» databasen din gir deg når du prøver å forholde deg til datamodellen din
DETTE ER SLIK VI TENKER RUNDT MODELLEN
Forskjellen på en relasjonsdatabase og en grafdatabaser er at
I en grafdatabase så ER dette datamodellen!
Alt er modellert slik.
Det er slik du jobber med modellen din.
Tegn hva du lurer på - på white board
Tegn det igjen – i ASCII! Cypher syntax!
CREATE og «SELECT» samme prinsipp – tegn mønsteret!
Når du lagrer dataene på denne måten, og kan forholde deg til dem slik,
så begynner du å tenke på en helt annen måte,
«vanskelige» spørsmål blir lette å få svar på!
du begynner å stille spørsmål til dataene dine som du aldri ville funnet på å stille tidligere!
Du går fra de gamle lukkede spørsmålene:
du vet at det finnes et svar
du vet formatet på svaret
du vet et bestemt antall steg du må gå for å finne svaret
Til å stille åpne spørsmål,
til å utforske dataene dine,
til å finne nye sammenhenger
Min oppfordring.
Gå hjem og prøv deg på å lagre domenet ditt slik du tenkte på det i utgangspunktet.
Legg whiteboarden i databasen!