Retour sur le Hands On Neo4J

Les Mains dans le Code

Qu’est-ce que c’est que Neo4J ?

Neo4J fait parti des bases de données NoSQL que l’on peut diviser en 4 catégories:

  1. les bds se basant sur le couple “clé-valeur” qui ont été définies par le Dynamo d’Amazon. Ces base se traduisent généralement par une collection globale de clé-valeur. Exemple : Riak, Voldemort
  2. les bds se basant sur les colonnes : ce sont celles qui ont été définies par Google dans son Big Table. Exemple : Cassandra, Hbase
  3. les bds se basant sur les documents. Ces bases se sont inspirées de Lotus Notes. Ce sont des collections de clé-valeur. Exemple : MongoDB, CouchDB.
  4. les bds se basant sur les graphes qui sont inspirés de la théorie des graphes et celle d’Euler. Ces bases mettent en œuvre des nœuds et des relations. Exemple : :Neo4j, Flock DB utilisé par Twitter.

Les graphes représentent le meilleur choix pour stocker des gros volumes de données complexes et très connectées et vu le nombre de solutions hétéroclites qui apparaissent sur le marché, des entreprises comme BluePrints qui essaie de mettre en place un langage commun aux bases de données graphes.

Il existe une différence entre une modélisation relationnelle et une modélisation graphe:

Exemple d’une modélisation relationnelle

relationnel

Ce qui se traduit en graphe comme suit.
graph

Ainsi, la table person-group qui n’a aucune valeur fonctionnelle est remplacée par une simple relation entre le nœud personne et un nœud group.

Le graphe Neo4J a une architecture basée sur 2 couches: le Traversal Framework qui défini comment je traverse le graphe et le Graph Matching qui défini  ce qui m’intéresse. La direction des nœuds se définie par le requêtage.

Neo4j utilise Cypher pour requêter la base. On peut requêter le graphe de 2 manières: BFS qui signifie breath for search et permet de faire de la recherche en largeur, et DFS qui signifie depth for search et permet de faire de la recherche en profondeur.

Vous pouvez retrouver la présentation de neo4j de Florent et Olivier ici: http://www.lateral-thoughts.com/DevInLove/prez/#begin

L’atelier réalisé lors du Hands On consistait à implémenter un concurrent à GIT : BIRGITT. Le code source utilisé lors de l’atelier se trouve sur Githup : https://github.com/LateralThoughts/hands-on-neo4j.git.

Pour chaque exercice, il faut faire un chekout –f nomExercice afin de repartir d’un support adapté. Les exercices sont définis sous un format de développement TDD. Donc, chaque exercice consiste à faire passer les TU définis avec TestNg. Chaque exercice aborde un point de Neo4j. Ainsi, Le premier exercice consiste à créer un nœud (projet) Birggit avec des labels et à s’assurer qu’on le retrouve bien.

Merci encore à Florent Biville et Olivier Girardot pour leur présentation de Neo4J.

Tags :

Je développe des applications Java depuis 2003. J'ai participé à des grands projets pour des grands comptes dans des équipes de plus de 40 personnes mais aussi à des projets de plus petites tailles dans des équipes composé d'une seule personne. Je m’intéresse à tout ce qui tourne autour de Java. J'adore apprendre et découvrir de nouvelles choses.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nom*

Email

Website

dix-huit − 16 =

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

En continuant à utiliser le site, vous acceptez l’utilisation des cookies. Plus d’informations

Les paramètres des cookies sur ce site sont définis sur « accepter les cookies » pour vous offrir la meilleure expérience de navigation possible. Si vous continuez à utiliser ce site sans changer vos paramètres de cookies ou si vous cliquez sur "Accepter" ci-dessous, vous consentez à cela.

Fermer