Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Connecting the Dots: Graph Databases and Laravel
Keith Damiani
July 23, 2019
Programming
2
1.8k
Connecting the Dots: Graph Databases and Laravel
Presented at Laracon US 2019
Keith Damiani
July 23, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
dictoss
0
170
azdaroth
0
180
line_developers_tw2
0
850
yaamaa
0
460
line_developers_tw
0
1.5k
hollodotme
1
110
trajchevska
2
390
horie1024
1
430
mraible
PRO
0
310
masayaaoyama
4
880
hirotokirimaru
1
440
kyoheig3
0
440
Featured
See All Featured
carmenhchung
26
1.3k
stephaniewalter
260
11k
lynnandtonic
272
16k
tammielis
237
23k
chrislema
231
16k
cromwellryan
101
5.9k
wjessup
338
16k
jonrohan
1021
380k
brettharned
93
3k
reverentgeek
27
1.9k
robhawkes
52
2.8k
smashingmag
283
47k
Transcript
Graph Databases and Laravel DOTS the CONNECTING LARACON US 2019
KEITH DAMIANI
Graph Databases and Laravel KEITH DAMIANI DOTS the CONNECTING LARACON
US 2019
None
None
None
Graph Databases and Laravel KEITH DAMIANI DOTS the CONNECTING LARACON
US 2019
None
KEITH DAMIANI PRINCIPAL PROGRAMMER !
None
None
None
None
None
None
None
None
"
What is a graph database? CONNECTING THE DOTS
What is a graph database? CONNECTING THE DOTS
What is a graph database? CONNECTING THE DOTS
What is a graph database? CONNECTING THE DOTS
What is a graph database? CONNECTING THE DOTS Graph DBs
vs. relational DBs Use cases Writing queries Laravel graph DBs
What is a graph database? CONNECTING THE DOTS
What is a graph database? CONNECTING THE DOTS © JACK
MCDADE
© JACK MCDADE
None
None
Nodes "VERTICES"
Nodes "VERTICES" "EDGES" Relationships
Nodes "VERTICES" "EDGES" Relationships
Keith's Family Tree
Keith's Family Tree Keith
WAIT A MINUTE
WAIT A MINUTE RELATIONAL DATABASES
WAIT A MINUTE RELATIONAL DATABASES “ ”
L 14th St./8th Ave. Union Square 6th Ave. Washington Square
Houston St. 1st Ave. L L K B B K B B
stations id name 1 14th St./8th Ave. 2 6th Ave.
3 Union Square 4 1st Ave. 5 Washington Square 6 Houston St. lines id name 1 3 2 4 3 5 4 L 5 B 6 K line_station id station_id line_id connected_to 1 3 4 2 2 4 4 7 3 5 5 4 4 5 6 8 5 6 5 6 6 6 6 9
stations id name 1 14th St./8th Ave. 2 6th Ave.
3 Union Square 4 1st Ave. 5 Washington Square 6 Houston St. lines id name 1 3 2 4 3 5 4 L 5 B 6 K line_station id station_id line_id connected_to 1 3 4 2 2 4 4 7 3 5 5 4 4 5 6 8 5 6 5 6 6 6 6 9
L 14th St./8th Ave. Union Square 6th Ave. Washington Square
Houston St. 1st Ave. L L K B B K B B
1735 KALININGRAD
KÖNIGSBERG
© HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI
© HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI
© HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI No sweat,
I got this.
© HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI No sweat,
I got this. e 2.718281828459045
© HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI
None
None
JOINS
JOINS
L 14th St./8th Ave. Union Square 6th Ave. Washington Square
Houston St. 1st Ave. L L K B B K B B
None
What is a graph database? CONNECTING THE DOTS Graph DBs
vs. relational DBs Use cases
Highly-connected data THE NATURE OF YOUR DATA Hierarchical/tree-shaped
FRIEND-OF-A-FRIEND QUERY Depth Relational DB Neo4j Graph DB Records 2
0.02 0.01 2500 3 30 0.17 110,000 4 1,544 1.36 600,000 5 Unfinished 2.13 800,000 PERFORMANCE, IN SECONDS
Highly-connected data THE NATURE OF YOUR DATA Hierarchical/tree-shaped Many-to-many and/or
polymorphic Schema-less
Social networks COMMON USE CASES Real-time product recommendations Social +
Recommendation
Social networks COMMON USE CASES Real-time product recommendations Would you
like to Join my Professional Network? Social + Recommendation
Social networks COMMON USE CASES Real-time product recommendations Social +
Recommendation Geospatial Geospatial + Recommendation
Digital asset management COMMON USE CASES (MORE!) Textual analysis /
search PageRank search Financial / fraud detection Public policy / journalism
None
Disconnected data BAD FITS Bulk data scans Aggregating across nodes
When write speed is paramount BLOBs / large amounts of text
None
NEO4J.COM
OrientDB Apache TinkerPop Amazon Neptune JanusGraph ArangoDB
CYPHER
CYPHER ( )-[ ]->( )
CYPHER ( )-[ ]->( ) MATCH RETURN
CYPHER MATCH (me:User {name: 'Me'})
(DEMO TIME!)
What is a graph database? CONNECTING THE DOTS Graph DBs
vs. relational DBs Use cases Writing queries Laravel graph DBs
NeoEloquent THREE OPTIONS FOR LARAVEL
NeoEloquent THREE OPTIONS FOR LARAVEL
NeoEloquent THREE OPTIONS FOR LARAVEL GraphAware neo4j-php-client
NeoEloquent THREE OPTIONS FOR LARAVEL GraphAware neo4j-php-client
NeoEloquent THREE OPTIONS FOR LARAVEL GraphAware neo4j-php-client ¯\_(ツ)_/¯
Vapor Laravel
Neo4Laravel
Larapals.com
! @keithdamiani keithdamiani.com