Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Sessions intra-entreprises sur demande : contact[at]mokatech.net.
Inscrivez-vous vite !

Book review : Learning Neo4j 3.x

Neo4j is a graph database.
I never had the chance to actually use it, but it was on my watch list for a while, so this book by Jérôme Baton came as an excellent opportunity to lean more about it.

You know that I read a lot of technical docs in general, and books in particular. I have lots of them. But I'm often left frustrated because they don't cover much more than the official docs, or only explain the hows instead of the whys.

But this one came as a good surprise, and I enjoyed it.
Jérôme Baton, the main author, is obviously a very experienced Neo4j user. The book is technically dense, with lots of pragmatic tips and examples. Furthermore, I found it entertaining and easy to read, and I completed it in about a week of short studying sessions.

This said, retrospectively, the order of some chapters seemed quite illogical to me, so I'll group them by topic below, rather than book ordering. Now let's start the review.

Disclaimer : a copy of this book was sent to me for review by the authors. But if you are a seasoned follower of this blog, you know that I say what I really think !

Book review

Chapter 1 is the obligatory introduction to graph databases : historical examples, basics of graph theory, and comparison with others SQL or NoSQL databases.

Chapter 2 guides you in a very beginner-friendly way through the database installation process (with many screenshots), on Windows, Mac and Linux, and even on Docker if you prefer to keep it isolated.

Chapter 3 explains the art of data modelling in the realm of graph databases, and describes the most common (anti-)patterns.
It is supplemented with Chapter 12, which deals with refactoring.

Chapters 4, 5 and 6 are all about queries : first with the bare Cypher query language, then with the APOC extension library, and finally with our own functions and procedures.
Those chapters are filled with pragmatic advices and, in my opinion, really show the author's many years of experience with the product - as do the detailed use-case studies presented at the end of the book.

Chapter 9, I think, could/should have been inserted right here, because it introduces (yet another) APOC extension dedicated to spatial data and queries. It also explains how to efficiently import data from map providers such as OpenStreetMaps, which is nice.

Chapters 14 and 15 should have been here too, because they are the real hidden gems of this book.
Both are use-case analysis. The former guides you through the implementation of a realistic recommendation engine ; the latter demonstrates how a company's processes can be modelled as a graph in order to perform an impact analysis on dimensions such as prices or delays.

Chapter 7 deals with performance : query plans, indexes... Nothing really graph-specific here.

Chapters 8 lets us load data into Neo4j from structured sources such as CSV, JSON, XML, and even other databases through a JDBC driver.
I was quite impressed to see that no external CLI tool or an ETL were required for this - only standart Cypher commands.

Chapter 11 lists a dozen of graph-compatible visualization tools and libraries, each with a short description and a screen capture. Quite useful to make sense of all that data you just loaded ! Also, it reminds you that Neo4j comes with its own IDE-like web application, complete with a query editor and a graph preview - useful for quick prototyping.

Finally, chapters 10 and 13 are more production-oriented and will please the devops people.
I must admit I skipped both of them. Security, LDAP integration.and clustering weren't my primary concerns for this first contact with Neo4j. Still good to know it exists, for future reference.


In conclusion, I must say that this book is a great resource for first-time Neo4j users.

I found it very informative and liked its "batteries included" aspect, with lots of tips, realistic examples and useful external resources.

However, if you are in a hurry or if this is your first reading of the book, please take my advice and read the chapters in the order I suggest above !

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.