| |
| |
Foreword | |
| |
| |
Preface | |
| |
| |
| |
Introduction | |
| |
| |
What Is a Graph? | |
| |
| |
A High-Level View of the Graph Space | |
| |
| |
Graph Databases | |
| |
| |
Graph Compute Engines | |
| |
| |
The Power of Graph Databases | |
| |
| |
Performance | |
| |
| |
Flexibility | |
| |
| |
Agility | |
| |
| |
Summary | |
| |
| |
| |
Options for Storing Connected Data | |
| |
| |
Relational Databases Lack Relationships | |
| |
| |
NOSQL Databases Also Lack Relationships | |
| |
| |
Graph Databases Embrace Relationships | |
| |
| |
Summary | |
| |
| |
| |
Data Modeling with Graphs | |
| |
| |
Models and Goals | |
| |
| |
The Property Graph Model | |
| |
| |
Querying Graphs: An Introduction to Cypher | |
| |
| |
Cypher Philosophy | |
| |
| |
START | |
| |
| |
MATCH | |
| |
| |
RETURN | |
| |
| |
Other Cypher Clauses | |
| |
| |
A Comparison of Relational and Graph Modeling | |
| |
| |
Relational Modeling in a Systems Management Domain | |
| |
| |
Graph Modeling in a Systems Management Domain | |
| |
| |
Testing the Model | |
| |
| |
Cross-Domain Models | |
| |
| |
Creating the Shakespeare Graph | |
| |
| |
Beginning a Query | |
| |
| |
Declaring Information Patterns to Find | |
| |
| |
Constraining Matches | |
| |
| |
Processing Results | |
| |
| |
Query Chaining | |
| |
| |
Common Modeling Pitfalls | |
| |
| |
Email Provenance Problem Domain | |
| |
| |
A Sensible First Iteration? | |
| |
| |
Second Time's the Charm | |
| |
| |
Evolving the Domain | |
| |
| |
Avoiding Anti-Patterns | |
| |
| |
Summary | |
| |
| |
| |
Building a Graph Database Application | |
| |
| |
Data Modeling | |
| |
| |
Describe the Model in Terms of the Application's Needs | |
| |
| |
Nodes for Things, Relationships for Structure | |
| |
| |
Fine-Grained versus Generic Relationships | |
| |
| |
Model Facts as Nodes | |
| |
| |
Represent Complex Value Types as Nodes | |
| |
| |
Time | |
| |
| |
Iterative and Incremental Development | |
| |
| |
Application Architecture | |
| |
| |
Embedded Versus Server | |
| |
| |
Clustering | |
| |
| |
Load Balancing | |
| |
| |
Testing | |
| |
| |
Test-Driven Data Model Development | |
| |
| |
Performance Testing | |
| |
| |
Capacity Planning | |
| |
| |
Optimization Criteria | |
| |
| |
Performance | |
| |
| |
Redundancy | |
| |
| |
Load | |
| |
| |
Summary | |
| |
| |
| |
Graphs in the Real World | |
| |
| |
Why Organizations Choose Graph Databases | |
| |
| |
Common Use Cases | |
| |
| |
Social | |
| |
| |
Recommendations | |
| |
| |
Geo | |
| |
| |
Master Data Management | |
| |
| |
Network and Data Center Management | |
| |
| |
Authorization and Access Control (Communications) | |
| |
| |
Real-World Examples | |
| |
| |
Social Recommendations (Professional Social Network) | |
| |
| |
Authorization and Access Control | |
| |
| |
Geo (Logistics) | |
| |
| |
Summary | |
| |
| |
| |
Graph Database Internals | |
| |
| |
Native Graph Processing | |
| |
| |
Native Graph Storage | |
| |
| |
Programmatic APIs | |
| |
| |
Kernel API | |
| |
| |
Core (or "Beans") API | |
| |
| |
Traversal API | |
| |
| |
Nonfunctional Characteristics | |
| |
| |
Transactions | |
| |
| |
Recoverability | |
| |
| |
Availability | |
| |
| |
Scale | |
| |
| |
Summary | |
| |
| |
| |
Predictive Analysis with Graph Theory | |
| |
| |
Depth-and Breadth-First Search | |
| |
| |
Path-Finding with Dijkstra's Algorithm | |
| |
| |
The A* Algorithm | |
| |
| |
Graph Theory and Predictive Modeling | |
| |
| |
Triadic Closures | |
| |
| |
Structural Balance | |
| |
| |
Local Bridges | |
| |
| |
Summary | |
| |
| |
| |
NOSQL Overview | |