Graph Databases

Using Neo4J

2016-01-08

D Fetterman

What is a graph database?

  • Relational datastore
  • Can be schemaless
  • Nodes
  • Edges / Relationships
  • Properties

Nodes

  • Nouns
  • Label(s) - optional
  • Properties - Key:Value pairs

Person

ID: 100

Name: David

Gender: Male

Job: DBA

Person

ID: 101

Name: Eleanor

Gender: Female

Age: 1

Vehicle

ID: 102

Make: Honda

Model: Accord

Year: 2014

Employee

Relationships

  • Verbs(?)
  • Start and End node
  • Directional
  • Named
  • Properties - optional

Person

ID: 100

Name: David

Vehicle

ID: 101

Make: Subaru

OWNS

ID: 102

Purchased: 2014

Why Graphs

  • Performance
    • Queries tend to be local
    • Scales well compared to 'join-heavy' RDBMS data models
  • Flexibility
    • No enforced schemas
    • Additive data model changes
    • Fewer schema changes = lower maintenance
      • Runtime schema changes?!
  • Agility
    • Data model in the code layer, not the datastore
    • Exposed and testable API's  
    • Plays well in TDD

Interaction:

  • neo4j-shell
  • web interface
    • ​RESTful service
  • ​REST::Neo4p

Examples

  • Movie Graph
    • CLI
    • Web
  • Perl
Made with Slides.com