Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Connecting the Dots: Graph Databases and Laravel

Connecting the Dots: Graph Databases and Laravel

Presented at Laracon US 2019

Keith Damiani

July 23, 2019
Tweet

Other Decks in Programming

Transcript

  1. Graph Databases and Laravel
    DOTS
    the
    CONNECTING
    LARACON US 2019
    KEITH DAMIANI

    View Slide

  2. Graph Databases and Laravel
    KEITH DAMIANI
    DOTS
    the
    CONNECTING
    LARACON US 2019

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. Graph Databases and Laravel
    KEITH DAMIANI
    DOTS
    the
    CONNECTING
    LARACON US 2019

    View Slide

  7. View Slide

  8. KEITH DAMIANI
    PRINCIPAL PROGRAMMER
    !

    View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. "

    View Slide

  18. What is a graph database?
    CONNECTING THE DOTS

    View Slide

  19. What is a graph database?
    CONNECTING THE DOTS

    View Slide

  20. What is a graph database?
    CONNECTING THE DOTS

    View Slide

  21. What is a graph database?
    CONNECTING THE DOTS

    View Slide

  22. What is a graph database?
    CONNECTING THE DOTS
    Graph DBs vs. relational DBs
    Use cases
    Writing queries
    Laravel graph DBs

    View Slide

  23. What is a graph database?
    CONNECTING THE DOTS

    View Slide

  24. What is a graph database?
    CONNECTING THE DOTS
    © JACK MCDADE

    View Slide

  25. © JACK MCDADE

    View Slide

  26. View Slide

  27. View Slide

  28. Nodes
    "VERTICES"

    View Slide

  29. Nodes
    "VERTICES"
    "EDGES"
    Relationships

    View Slide

  30. Nodes
    "VERTICES"
    "EDGES"
    Relationships

    View Slide

  31. Keith's
    Family
    Tree

    View Slide

  32. Keith's
    Family
    Tree
    Keith

    View Slide

  33. WAIT A MINUTE

    View Slide

  34. WAIT A MINUTE
    RELATIONAL DATABASES

    View Slide

  35. WAIT A MINUTE
    RELATIONAL DATABASES
    “ ”

    View Slide

  36. L
    14th St./8th Ave. Union Square
    6th Ave.
    Washington Square
    Houston St.
    1st Ave.
    L L
    K
    B
    B
    K
    B
    B

    View Slide

  37. 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

    View Slide

  38. 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

    View Slide

  39. L
    14th St./8th Ave. Union Square
    6th Ave.
    Washington Square
    Houston St.
    1st Ave.
    L L
    K
    B
    B
    K
    B
    B

    View Slide

  40. 1735
    KALININGRAD

    View Slide

  41. KÖNIGSBERG

    View Slide

  42. © HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI

    View Slide

  43. © HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI

    View Slide

  44. © HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI
    No sweat, 

    I got this.

    View Slide

  45. © HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI
    No sweat, 

    I got this.
    e
    2.718281828459045

    View Slide

  46. © HISTORIC CITIES RESEARCH PROJECT / OZGUR TUFECKI

    View Slide

  47. View Slide

  48. View Slide

  49. JOINS

    View Slide

  50. JOINS

    View Slide

  51. L
    14th St./8th Ave. Union Square
    6th Ave.
    Washington Square
    Houston St.
    1st Ave.
    L L
    K
    B
    B
    K
    B
    B

    View Slide

  52. View Slide

  53. What is a graph database?
    CONNECTING THE DOTS
    Graph DBs vs. relational DBs
    Use cases

    View Slide

  54. Highly-connected data
    THE NATURE OF YOUR DATA
    Hierarchical/tree-shaped

    View Slide

  55. 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

    View Slide

  56. Highly-connected data
    THE NATURE OF YOUR DATA
    Hierarchical/tree-shaped
    Many-to-many and/or polymorphic
    Schema-less

    View Slide

  57. Social networks
    COMMON USE CASES
    Real-time product recommendations
    Social + Recommendation

    View Slide

  58. Social networks
    COMMON USE CASES
    Real-time product recommendations
    Would you like to 

    Join my Professional
    Network?
    Social + Recommendation

    View Slide

  59. Social networks
    COMMON USE CASES
    Real-time product recommendations
    Social + Recommendation
    Geospatial
    Geospatial + Recommendation

    View Slide

  60. Digital asset management
    COMMON USE CASES (MORE!)
    Textual analysis / search
    PageRank search
    Financial / fraud detection
    Public policy / journalism

    View Slide

  61. View Slide

  62. Disconnected data
    BAD FITS
    Bulk data scans
    Aggregating across nodes
    When write speed is paramount
    BLOBs / large amounts of text

    View Slide

  63. View Slide

  64. NEO4J.COM

    View Slide

  65. OrientDB
    Apache TinkerPop
    Amazon Neptune
    JanusGraph
    ArangoDB

    View Slide

  66. CYPHER

    View Slide

  67. CYPHER
    ( )-[ ]->( )

    View Slide

  68. CYPHER
    ( )-[ ]->( )
    MATCH RETURN

    View Slide

  69. CYPHER
    MATCH (me:User {name: 'Me'})

    View Slide

  70. (DEMO TIME!)

    View Slide

  71. What is a graph database?
    CONNECTING THE DOTS
    Graph DBs vs. relational DBs
    Use cases
    Writing queries
    Laravel graph DBs

    View Slide

  72. NeoEloquent
    THREE OPTIONS FOR LARAVEL

    View Slide

  73. NeoEloquent
    THREE OPTIONS FOR LARAVEL

    View Slide

  74. NeoEloquent
    THREE OPTIONS FOR LARAVEL
    GraphAware neo4j-php-client

    View Slide

  75. NeoEloquent
    THREE OPTIONS FOR LARAVEL
    GraphAware neo4j-php-client

    View Slide

  76. NeoEloquent
    THREE OPTIONS FOR LARAVEL
    GraphAware neo4j-php-client
    ¯\_(ツ)_/¯

    View Slide

  77. Vapor
    Laravel

    View Slide

  78. Neo4Laravel

    View Slide

  79. Larapals.com

    View Slide

  80. ! @keithdamiani
    keithdamiani.com

    View Slide