Note de lecture : Neo4J in Action, par Aleksa Vukotic & Nicki Watt

Note : 4 ; Un niveau « pratique » qui n’est pas à la hauteur de la série « in action » de Manning…

J’aime beaucoup Neo4J. C’est la base NoSQL la plus ludique que je connaisse. Il lui fallait réellement un livre dédié à sa mise en œuvre, qui donne les clés pour l’intégrer dans des solutions applicatives en répondant aux nombreuses petites questions que l’on se pose chemin faisant. C’est très naturellement que j’ai pensé que ce volume serait celui-ci. Ce fut une déception, hélas.

Neo4J in Action, ce sont 250 pages sur 11 chapitres regroupés en 3 parties. La première d’entre-elles est qualifiée d’introduction et compte 80 pages, comprenant 5 des chapitres. Au premier d’entre-eux, a case for Neo4J database, les auteurs nous y expliquent l’utilité d’une base orientée graphe. On ne parle même pas de Neo4J. L’idée est bonne, mais l’execution plutôt imparfaite, le texte se noie parfois dans des détails et pimente les explications de caractéristiques de Neo4J. Il aurait été préférable de se focaliser uniquement sur le paradigme sous-jacent de Neo4J.

Au second chapitre, on attaque sur une douzaine de de pages la question de la modélisation des données : là aussi un peu de mélange des genres, avec du Cypher (heureusement, je le connaissais un peu avant) mélangé à cela. J’aurais volontiers regroupé les chapitres 1 et 2 en les débarrassant des hors sujets et des détails techniques !

Les choses sérieuses commencent au chapitre 3 : « starting developpement with Neo4J » nous invite à créer notre premier bout de code ! C’est bien, mais nouvelles frustrations cependant : même ces premières lignes sont amputées d’informations pourtant indispensables comme la fermeture des transactions, la remise à zéro de la base, les imports, etc. Et je ne parle même pas de la manière de tester des choses simples. Ces informations figurent pourtant plus loin dans l’ouvrage. On a clairement un problème d’organisation de l’information !

Le chapitre 4, « the power of traversal » nous met le pied à l’étrier (même un peu plus en fait) sur la navigation au sein d’un graphe avec les API Neo4J. Il est à noter que tout ceci s’appuie sur la version embedded de la base (il sera peu question de Cypher), quand à l’utilisation de la version standalone, elle n’est évoquée qu’en toute fin de l’ouvrage. Mais au final, ce chapitre fait plutôt bien le boulot sur une quinzaine de pages.

Ce sont également 15 pages qui sont dévolues au chapitre 5 su l’indexation des données, qui conclut cette première partie. Pas grand chose à dire sur ce chapitre qui fait le boulot, bien qu’il ne soit pas un modèle de pédagogie.

La seconde partie est intitulée « développement d’application avec Neo4J ». Il s’agit de la partie la plus conséquente du livre avec une centaine de pages, les 4 chapitres la composant étant eux-même un peu bourratifs. Si vous vous attendez à la construction progressive d’une application au long de cette partie, il faudra déchanter : il s’agit plutôt d’une étude plus en profondeur des fonctionnalités de la base de données. Ca commence au chapitre 6 qui couvre sur près de 30 pages l’étude du language de requête de Neo4J : Cypher. J’ai bien aimé ce chapitre qui nous prends bien par la main (mais pas pour des abrutis toutefois) et nous donne les billes pour construire des requêtes de plus en plus en complexes, avec le Neo4J shell ou via les API Java.

C’est de transactions qu’il est question au chapitre 7. Les 15 pages consacrées au sujet laissent au final penser qu’il reste des choses à dire sur le sujet, mais on trouve aussi les bouts d’informations qui nous manquaient au chapitre 3 (en partie) !
La vingtaine de pages du chapitre 8 « traversal in depth » reprends et complète le chapitre 4. Il présente et illustre clairement les stratégies de traversées. C’est très bien fait.

J’aurais pu me passer du chapitre 9 consacré à l’intégration Spring Data, c’est à mon avis hors sujet, j’aurais préféré que d’autres sujets soient traités de manière moins fragmentaire. Comme il y a nombre de choses à introduire à propos de SDN, il faut compter 35 pages, ce qui s’avère finalement trop peu… ou trop, selon les goûts ! J’aurais préféré un chapitre dédié à la couche de persistance sans SDN !

Le dernière partie du livre est consacrée à Neo4J en production. On trouve là 2 chapitres qui forment 70 pages. Le chapitre 10 aborde enfin la version standalone et son interfaçage avec les API Rest. On a droit à un peu plus de 30 pages sur ce sujet qui est d’avantage un sujet d’architecture que de production. Le chapitre est à la fois passionnant et frustrant. Il aborde enfin des questions cruciales sur l’utilisation de cette version standalone, mais le propos est traité superficiellement. Pour moi, le sujet aurai mérité sa propre partie et plusieurs chapitres, j’aurais volontiers sacrifié Spring Data à cela !

Enfin le chapitre 11 aborde les véritables questions de production : dimensionnement des caches, haute disponibilité, monitoring, etc. Là encore la présentation de chacun de ces sujets paraît un peu superficielle. Cela ne laisse guère l’impression que l’on s’en sortira avec ces seules informations !

Je l’ai dit au début, le livre est une déception, même si ce n’est pas une grosse déception. Les informations sont souvent fragmentaires. Elles ne permettent pas d’écrire du code sans aller chercher des informations ailleurs. Par ailleurs l’organisation et le choix des sujets traités sont un peu critiquables . Bref, je ne recommande pas.

Neo4J in Action

Référence complète : Neo4J in Action – Aleksa Vukotic & Nicki Watt avec Tareq Abedrabbo, Dominic Fox & Jonas Partner – Manning 2015 – ISBN : 978 1 617290 76 3

Advertisements

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s