Florent Biville, développeur associé chez Lateral Thoughts, est notre formateur Neo4j. Il a accepté de répondre à quelques questions pour nous expliquer ce qui l’a amené à faire de la formation et nous présenter Neo4j.
Human Coders: Salut Florent, tout d’abord, peux-tu te présenter en quelques mots ?
Salut, je m’appelle Florent Biville. Je suis développeur associé chez Lateral Thoughts, petite société auto-gérée, où je profite de ma liberté pour m’investir sur les formations, les projets open-source, les événements communautaires mais aussi les blagues pas drôles (vous connaissez la blague du bus ?).
J’ai commencé à Metaboli, plate-forme légale de téléchargement de jeux vidéos, où j’ai eu la chance d’être encadré par une personne ultra-compétente et qui m’a vite donné envie de m’investir à fond sur les langages de JVM (et quitter le langage sur lequel je passais 75% de mon temps alors : PHP).
Depuis ce temps, je m’intéresse à tout ce qui se passe sur la JVM et autour des navigateurs.
HC: Qu’est-ce que Neo4j ? Qui l’utilise ?
Neo4j est une base de données orientée graphe. Alors que les bases de données relationnelles manipulent des tables et des relations entre différentes entrées de différentes tables, une base de données orientée graphe ne manipulera que des noeuds et relations.
Chaque noeud et relation peut être vu comme un ensemble indépendant de clefs/valeurs. Les relations ont ceci de spécifique qu’elle joignent deux noeuds, éventuellement dans une direction donnée.
Et comme une bonne illustration vaut mieux qu’un long discours, voici une comparaison très pertinente et compréhensible des graphes (à droite) versus SGDBR (à gauche).
L’usage de Neo4j fait intuitivement sens dans le contexte des réseaux sociaux, on la retrouve chez Viadeo par exemple, dans le cadre de son moteur de recommandations de contacts. Selon différents critères, il s’agit de trouver les contacts de contacts (et au delà : contacts de contacts de contacts…) les plus pertinents. Exprimer ce genre de requête avec le langage Cypher est d’ailleurs d’une facilité déconcertante.
On la retrouve aussi dans les réseaux de télécom (Telenor, Deutsche Telekom, SFR) pour différentes raisons : gestion de catalogue, calcul d’impact… Dans le premier, Neo4j permet de modéliser sans difficulté un grand nombre de combinaisons possibles entre forfaits téléphoniques, options éligibles ou non et appareils. Dans le second cas, l’impact d’une panne peut se calculer très simplement : il suffit de suivre les relations des utilisateurs (ensemble de noeuds) vers le DSLAM (autre noeud) auquel ils sont raccordés.
Neo4j peut aussi être très utile dans le cadre des détections de fraude. L’idée principale est de classifier certains motifs clairement identifiés au sein du graphe comme étant frauduleux et d’inférer les individus qui s’en rapprochent le plus de par leur historique de transactions et/ou par la transaction en cours : on pourra ainsi détecter en temps réel des fraudeurs en action, et aussi, très rapidement lever des alertes sur des comportements suspicieux (distance courte entre un individu et un motif identifié).
Dans tous les cas, la richesse du métier réside dans les nouvelles règles que l’on peut déduire, non pas de la donnée brute, mais des relations qu’elle porte. Les bases de données orientées graphe excellent sur ce point précis : elles permettent de dénicher de nouvelles relations jusque là non envisagées et d’en tirer profit de façon très performante.
HC: Quand et comment as-tu découvert Neo4j ? Pourquoi le recommandes-tu ?
J’ai commencé à entendre parler de Neo4j à l’époque ou une refonte du système de détection de fraudes à Metaboli était envisagée, autour de 2010-2011. En effet, l’exécution des règles de détection de fraude souffrait d’un temps d’exécution excessivement mauvais, sans vouloir blâmer la base de données relationnelle derrière, bien évidemment (une boîte qui s’occupe de Java, je crois).
J’ai donc progressivement regardé ce qui se cachait derrière Neo4j et suis très vite devenu fan. Son expressivité et sa facilité d’utilisation m’ont tout de suite séduit. Neo Technology a vraiment mis l’accent sur les développeurs et cet effort d’adaptation a vraiment joué dans mon cas. Ça n’engage évidemment que moi, mais l’opérationnel ne transpire pas vraiment de Neo4j, alors que ce ne fut pas l’impression qu’ont pu me laisser d’autres systèmes de persistence distribués.
De plus, la communauté Neo4j est très réactive et accessible et le produit se développe très vite (il y a 1 an et demi, Cypher était encore une fonctionnalité expérimentale !).
Je vous invite à regarder par vous-mêmes à quoi Neo4j ressemble, jouer un peu avec Cypher sur http://console.neo4j.org/, vous verrez : je suis sûr que ça vous plaira et que plein d’idées germeront dans votre tête ;-)
HC: Peux-tu nous présenter la formation Neo4j ? Comment se déroule-t-elle ?
Le but de cette formation est vraiment de prendre le point de vue d’un développeur, sans aucune utilisation préalable d’une base graphe, et de se plonger progressivement dans les possibilités offertes par Neo4j.
Il n’est évidemment pas question de laisser chacun se débrouiller dans son coin. Très inspirée des formats hands-on (merci les JDuchess), cette formation est découpée en sections, chaque section est composée d’explications théoriques suivies par un maximum d’exercices pratiques. Chaque exercice est piloté par les tests : vous n’avez qu’à faire passer les tests au vert !
Enfin, cette formation est sans doute l’une des premières à se porter sur la version 2.0 de la base de données, qui introduit la notion de label sur les noeuds et permet ainsi de semi-structurer nativement ses données.
HC: Pourquoi as-tu décidé de donner des formations ?
Je dois beaucoup à toutes ces personnes qui donnent de leur temps pour partager de l’information, que ce soit via leur blog, leurs ateliers et conférences ou leurs formations.
J’ai toujours aimé apprendre au contact des autres, c’est pourquoi je consacre une bonne partie de mon temps à faire de la veille, suivre certains ateliers et aussi m’inscrire à des formations spécifiques.
J’estime que ça doit aussi aller dans l’autre sens : dès que je me libère un peu de temps, je committe sur un projet open-source que j’utilise, dès que j’apprends un nouveau truc, je le partage à mes collègues et ainsi de suite.
C’est dans cette optique que je donne des formations : partager des connaissances et partager son enthousiasme. De plus, se frotter à d’autres points de vue fait parfois émerger des questions auxquelles nous n’aurions sans doute pas forcément pensé tout seul !
HC: Quel est ton meilleur souvenir de formation ?
Finalement, le meilleur souvenir de toutes les formations auxquelles j’ai assisté en tant qu’apprenant reste le même : celui où l’on commence à projeter ce que l’on vient d’apprendre à notre contexte quotidien et entrapercevoir les nouvelles possibilités qui se dégagent.
C’est un sentiment très grisant et j’espère pouvoir le faire vivre à tous mes futurs participants :-)
HC: Merci Florent !
Retrouvez le programme complet de la formation Neo4j sur Human Coders Formations.