Neo4j

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
image illustrant un logiciel
Cet article est une ébauche concernant un logiciel.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

Neo4j
Logo

Développeur Neo Technology
Première version 2000
Dernière version 3.0.4 (14 juin 2016)
Écrit en Java
Environnement Multi-plateforme
Langues Anglais
Type Système de gestion de base de données
Licence GPLv3 pour Neo4j community, AGPLv3 et Commerciale pour Neo4j entreprise
Site web http://www.neo4j.com

Neo4j est un système de gestion de base de données au code source libre basée sur les graphes, développé en Java[1],[2] par la société suédo-américaine Neo technology.

Le produit existe depuis 2000, la version 1.0 de Neo4j est sortie en février 2010[3].

Généralités[modifier | modifier le code]

Neo4j permet de représenter les données en tant que "nœuds" reliés par un ensemble de "relations", ces objets possédant leurs propres propriétés. Les propriétés sont constitués d'un couple de clé-valeurs de type simple tel que chaînes de caractères ou numérique; celles-ci peuvent êtres indexées. La modélisation est très proche des concepts métier, il n'est pas nécessaire d'utiliser de clés dans Neo4j, car les relations ont une existence propre. L'absence de modélisation rigide rend Neo4j bien adapté à la gestion de données changeantes et de schémas évoluant fréquemment.

La base de données Neo4j est construite pour être extrêmement performante pour traiter les relations. Ces performances sont dues au fait que Neo4j pré-calcule les jointures au moment de l'écriture des données, comparativement aux bases de données relationnelles qui calculent les jointures à la lecture en faisant appel aux Index et à la logique de clés. Ce qui fait de Neo4j une technologie adaptée à de larges ensembles de données connectées.

Les traversées utilisent le langage de requête Cypher, standard de parcours des connexions, élaboré dans le but de réaliser plus simplement que SQL les opérations de parcours ou d'analyse de proximité qui sont les plus courantes lors qu'on traite des données connectées.

Les bases de données de graphes sont des outils puissants pour répondre à des requêtes faisant intervenir des relations entre objets. La recherche du plus court chemin entre deux points du graphe permet par exemple de mettre en place des profils utilisant liens sociaux, géographie et analyse d’impact. 

Exemples d'usages de Neo4j[modifier | modifier le code]

  • Gestion de réseau/Analyse d’impact : avoir la main sur son système et identifier en temps réel le client affecté par une maintenance ou une panne.
  • Logistique : calculer le meilleur chemin pour livrer un client.
  • Social, collaboration : rechercher très facilement qui sont les amis de mes amis.
  • Recommandation : définir en temps réel la liste des produits achetés par mes amis que je n’ai pas moi même achetés.
  • Master Data Management / Gestion de configuration : construction d’un référentiel standardisé performant et sans redondance pour vos données critiques hiérarchisées : hiérarchie d’entreprise et de produit.
  • Droits d’accès : gestion des groupes, utilisateurs et droits rapidement et sans redondance.
  • Géo-Spatial : modélisation d’une carte routière et calculs d’itinéraires.
  • Biologie, interactions moléculaires : réduire les risques d’effets secondaires des médicaments en calculant en temps réel les interactions entre une protéine et une future molécule. 

De tels exemples pratiques sont accessibles en ligne ou à télécharger sous forme d'études de cas via le site de dépôt associé.

Points forts de Neo4j[modifier | modifier le code]

Des requêtes haute performance[modifier | modifier le code]

Le modèle de données du graphe permet l’exécution de requêtes complexes avec une haute performance, inhérentes aux données connectées des applications d’aujourd’hui.

Des projets livrés plus rapidement[modifier | modifier le code]

Modéliser une base de données de graphes est une procédure simple. Les utilisateurs et clients peuvent capturer rapidement toutes sortes de données, structurées, semi-structurées et déstructurées et ainsi les stocker dans Neo4j. Pour une application industrielle, par rapport à une approche par base de données relationnelle, les temps de développement sont réduits, ainsi que les coûts de maintenance, tout en profitant de plus hautes performances.

La découverte de nouveaux cas d’usage[modifier | modifier le code]

Très souvent les utilisateurs et clients de Neo4j démarrent un projet car ils n’ont pas pu trouver de solution à un problème bien précis avec d'autres systèmes de gestion de base de données. Puis ils découvrent, par la simplicité du modèle de données de graphes, de nouveaux cas d’usage très utiles dans le monde des startups ou des industries fortement concurrentielles. 

Ressources[modifier | modifier le code]

Livres[modifier | modifier le code]

"Neo4j : Des données et des graphes - Prise en main" par Sylvain Roussy (Lien)

(en) "Graph Databases - The Definitive Book on Graph Databases" par Ian Robinson, Jim Webber, and Emil Eifrém (Version électronique gratuite)

Ressources électroniques[modifier | modifier le code]

(en) Académie des graphes (Cours, tutoriaux et ressources en ligne)

(en) Documentation de Neo4j & (en) carte de référence Cypher

Documentation en Français (v1.9)

Bases de données Neo4j d'exemples

Communauté[modifier | modifier le code]

La communauté française est accessible via la plateforme Meetup et le forum Neo4jfr.

Groupes locaux : Paris, Lyon, Nantes, Lille, Montpellier, Toulouse, Bordeaux.

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  1. (en) Todd Hoff, « Neo4j - a Graph Database that Kicks Buttox », High Scalability, Possibility Outpost,‎ (consulté le 24 janvier 2012)
  2. (en) Gavin Terrill, « Neo4j - an Embedded, Network Database », InfoQ, C4Media Inc,‎ (consulté le 24 janvier 2012)
  3. (en) « The top 10 ways to get to know Neo4j », Neo4j Blog,‎ (consulté le 24 janvier 2012)

Liens externes[modifier | modifier le code]