Neo4j In Action Pdf -
“The connections don’t lie,” Alex said. “Neither does Neo4j.” | Chapter | Topic | |---------|-------| | 1–2 | Graph thinking, Neo4j basics, Cypher intro | | 3–4 | Data modeling, querying, indexing | | 5–6 | Advanced queries, shortest path, recommendations | | 7–8 | Integration with Java, Spring, REST APIs | | 9–10 | Performance tuning, clustering, high availability | | 11–12 | Real‑world use cases (social, fraud, logistics) |
“We need a faster way to follow relationships,” Alex said.
MATCH (p:Person name: 'Charlie')-[:VISITED|KNOWS]->(common)<-[:VISITED|KNOWS]-(other:Person) WHERE p <> other RETURN other.name, count(common) AS similarity ORDER BY similarity DESC This returned unknown associates—perfect for expanding investigations. The agency integrated Neo4j with Kafka. Every new tip became a new relationship. A trigger query ran every minute:
“It took 2 milliseconds,” Sam said. “And we didn’t even index anything yet.” Alex needed to know: how is Alice connected to a known criminal, Mr. X? neo4j in action pdf
MATCH path = shortestPath( (alice:Person name: 'Alice')-[:KNOWS*..5]-(mrX:Person name: 'Mr. X') ) RETURN path The result: Alice → KNOWS → Bob → KNOWS → Dave → KNOWS → Mr. X
His tech lead, Sam, introduced Neo4j—a where data is stored as nodes (entities) and relationships (connections). Chapter 2: Building the Knowledge Graph Sam modeled their first case:
I’m unable to provide a full PDF file or reproduce an entire copyrighted book like Neo4j in Action . However, I can give you a that walks through the key concepts and examples from the book, showing Neo4j in action from start to finish. Story: The Graph-Powered Detective Agency Chapter 1: The Case of the Missing Data Detective Alex Kim ran a small intelligence agency. For years, he stored case data in SQL tables: suspects, locations, vehicles, and tips. But connections were buried in foreign keys and JOINs. Finding how a suspect knew a witness required five table joins—and hours of work. “The connections don’t lie,” Alex said
SQL would need multiple JOINs. In Neo4j:
CREATE (alice:Person name: 'Alice', age: 34) CREATE (bob:Person name: 'Bob', age: 29) CREATE (alice)-[:KNOWS]->(bob) A witness said: “Bob called a phone number, and that phone was used near the crime scene.”
Sam partitioned data by case and used for speed. No more JOIN explosions. Epilogue: The Conviction Using Neo4j, the agency linked a money trail, phone calls, and meeting locations across 12 suspects. The prosecutor presented a graph visualization—not as evidence, but as an investigation tool. The jury understood instantly. The agency integrated Neo4j with Kafka
“Three hops,” Alex whispered. “We can now predict risk chains.” Using collaborative filtering , Sam wrote a query to find people similar to a suspect based on shared locations and contacts:
MATCH (bob:Person name: 'Bob')-[:CALLED]->(phone:Phone) MATCH (phone)<-[:USED]-(suspect:Person)-[:VISITED]->(loc:Location address: 'Main St 42') RETURN suspect.name, phone.number Result: "Charlie" , "555-1234" .
MATCH (tip:Tip)-[:MENTIONS]->(person:Person) WHERE tip.timestamp > datetime() - duration('PT5M') RETURN person.name, tip.text Within seconds of a new tip mentioning “Mr. X,” Alex’s dashboard lit up. With 2 million nodes and 5 million relationships, SQL queries took minutes. Neo4j used index-free adjacency —traversing relationships is O(1) per hop. The same queries ran in <50 ms.