Author: Ian Robinson, Jim Webber, Emil Eifrem
Audience: Database developers
Reviewer: Kay Ewbank
Using graphs to display data is nothing new, but graph databases provide a specialized way to work with highly connected data.
This is the second edition of an introduction to graph databases written by a team of writers from Neo, the company that produces Neo4j.the graph database.
The second edition has been updated so the Cypher examples use the latest Cypher syntax, and to add more explanations about Cypher's declarative indexing (Cypher is Neo4J's query language).The authors have also added some useful modeling guidelines.
The authors' aim is to show what graph databases can do, and how you work with graph databases, using Neo4j for the examples. While the authors concentrate on Neo4j, the techniques would transfer to other software. In essence, though, this is an introduction to Graph Databases using Neo4j.
The book begins by introducing graphs and graph databases, and explaining why graph databases have been developed. There’s a good comparison of the different choices for storing connected data – relational, NoSQL and graph databases, though you won't be surprised to hear that the authors conclude that graph databases are the best choice.
Having introduced the overall topic, the writers look in more detail at data modeling with graphs, using an example cross-domain model. They explain the property graph model, and continue with an introduction to Cypher. All the code examples in the book are written using Cypher, Neo4j’s query language, The chapter ends with an interesting discussion of common modeling pitfalls.
Having introduced modeling, the next chapter covers building a graph database application, from model creation through the different options for the application architecture, to testing and capacity planning. Graph databases in the real world are covered next, looking at how real companies use Neo4j for social recommendations, authorization and access control, and logistics.
The focus on Neo4j continues with a chapter on how it stores and queries data, and what the different APIs within it are, and the book ends with a rather lightweight chapter on predictive analysis with graph query that looks at depth and breadth-first searches, Dijkstra’s algorithm, A*, and local bridges.
Overall, the material is well written and easy to read. It's very specific to Neo4j, so you should probably look elsewhere if you're thinking of using a different graph database, but it’s a good introduction to the Neo4j graph database.
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.