Data Systems
Graph Databases
Graph databases excel at modeling and querying relationships. Master the graph data model, traversal algorithms, and the specific use cases where graphs outperform relational databases by orders of magnitude.
- Relationships β First-class citizens, not foreign keys
- Traversal β Constant-time relationship following via index-free adjacency
- Pattern Matching β Express complex relationship queries declaratively
When relationships are as important as data, graphs are the answer.
The Graph Data Model
Graph Components
Neo4j and Cypher
Common Cypher Queries
| Query Type | Cypher Example |
|---|---|
| Find nodes | MATCH (p:Person) WHERE p.name = 'Alice' RETURN p |
| Find relationships | MATCH (p:Person)-[:WORKS_AT]->(c:Company) RETURN p, c |
| Variable-length paths | MATCH (p:Person)-[:KNOWS*1..3]-(friend) RETURN friend |
| Shortest path | MATCH path = shortestPath((a)-[:KNOWS*]-(b)) RETURN path |
| Pattern matching | MATCH (p:Person)-[:USES]->(prod:Product)<-[:USES]-(q:Person) |
Index-Free Adjacency
When to Use Graph Databases
| Use Case | Why Graph |
|---|---|
| Social networks | Friend recommendations, degree of separation |
| Fraud detection | Finding suspicious patterns in transaction networks |
| Knowledge graphs | Connecting entities with semantic relationships |
| Recommendation engines | "Users who bought X also bought Y" |
| Network/IT operations | Mapping infrastructure dependencies |
| Access control | Role-based permissions with complex hierarchies |
Graph Algorithms
| Algorithm | Use Case | Complexity |
|---|---|---|
| BFS/DFS | Reachability, path finding | O(V + E) |
| Dijkstra | Shortest weighted path | O((V + E) log V) |
| PageRank | Node importance | O(k Γ E) |
| Louvain | Community detection | O(E) |
| Betweenness Centrality | Bridge detection | O(V Γ E) |
Practice Exercises
-
Data Modeling: Design a graph model for a movie database with actors, directors, movies, and genres. Write Cypher queries to find: (a) all movies featuring a specific actor, (b) the shortest path between two actors, (c) actors who worked with the same director more than 3 times.
-
Performance Analysis: Compare the performance of a graph traversal (3-degree friend finding) in Neo4j vs a relational database with self-joins. Estimate the difference at 100M users with 50 friends each.
-
Algorithm Application: Design a fraud detection system using graph algorithms. How would you identify suspicious transaction patterns using community detection and centrality analysis?
-
Migration Decision: Your team currently stores social network data in PostgreSQL. Evaluate whether migrating to a graph database would improve performance for your top 3 query patterns.
What to Learn Next
-> NoSQL Deep Dive Document, key-value, column-family, and graph databases overview.
-> Elasticsearch Deep Dive Full-text search, inverted indices, and relevance scoring.
-> MongoDB Deep Dive Advanced MongoDB features, aggregation pipeline, and sharding.
-> Choosing the Right Database Systematic framework for database selection.
-> Data Partitioning Sharding strategies, consistent hashing, and partition keys.
-> Data Replication Sync vs async replication, leader election, and consistency.