Actualités

[28/04/2017] Smile annonce son plan stratégique Open Arrow 2021 et accueille à son capital EURAZEO PME, nouvel actionnaire de référence qui succède à Keensight Capital

Smile, leader de l’intégration et l’infogérance de solutions open source, choisit son nouvel actionnaire majoritaire et s’offre de nouveaux moyens lui permettant le déploiement de son plan stratégique OPEN ARROW 2021 visant à créer un nouveau champion européen de l’IT de plus de 200M€ de chiffre d’affaires.

[25/04/2017] Smile est à nouveau Strategic Partner Alfresco !

Pour la quatrième année consécutive, Smile est Strategic partner Alfresco, le plus haut niveau de partenariat !

[12/04/2017] Smile décroche le statut de Partenaire Global Elite Magento !

Smile est très heureux d'annoncer que nous devenons Partenaire Global Elite Magento - un statut accordé à seulement 5 entreprises dans le monde !

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

Neo4j 3.0 and beyond

L’annonce a été faite au GraphConnect Europe 2016 qui se tenait à Londres le 26 avril. “Neo4j 3.0 est disponible dès maintenant !” a lancé – en anglais – Emil Eifrem, CEO de Neo Technology, lors de la keynote d’ouverture.

Dans cet article nous allons nous attacher à décrire les nouveautés majeures de cette dernière version face à la précédente et nous dévoilerons les plans de la startup suédoise pour le futur de Neo4j.

Unlimited power !

Sans doute l’une des nouveautés les plus importantes : Neo4j 3.0 n’a plus de limite de capacités !

Rappelons que précédemment, jusqu’à la version 2.3 inclue, la capacité de la base était limitée en terme de nombre de nœud, de relation, de type de relation et de nombre de propriétés :

  • 235 (~34 milliards) nœuds
  • 235 relations
  • Entre 236 et 238 propriétés
  • 216 (~65 000) types de relations

Ce n’est désormais plus le cas, enfin… presque ! En vérité, derrière l’affirmation marketing, il y a toujours des limites mais celles-ci sont vraiment gigantesques : 250 (~ 1 000 000 milliards) nœuds et autant de relations peuvent être créés.
Si vous aviez dans l’idée de faire votre arbre généalogique, voyez plus grand : faites celui de tous les autres être humains, remontez jusqu’au paléolithique, c’est bon, ça rentre encore largement dans Neo4j ! Bonne chance dans votre quête des liens de parenté.

En revanche, concernant le nombre de types de relation, Neo4j reste sur une limitation à 65 000 types de relations différents. Vous ne pourrez donc pas encore envisager de stocker l’ensemble des savoirs humains en modélisant les relations entres les composants des différents domaines de connaissances, mais pour le reste ça devrait suffire.

Bolt le protocole, pas l’athlète

Autre nouveauté marquante de la 3.0 : le protocole Bolt. Développé par Neo Technology, ce protocole de communication avec le serveur Neo4j a pour but de remplacer l’utilisation du protocole HTTP anciennement utilisé pour toute communication avec le serveur Neo4j distant.
Bolt est un protocole orienté connexion, qui utilise un codage binaire compact sur TCP (ou web sockets) apportant un débit plus élevé et une latence plus faible.
Quelques caractéristiques de Bolt :

  • Stateful : un mécanisme de gestion de session a été implémenté.
  • Performances : notamment grâce au format de sérialisation des données, nommé PackStream, développé par Neo Technology sur la base de MessagePack (http://msgpack.org/). Le Json qui était le format d’échange utilisé au travers de HTTP est donc remplacé par un format plus concis.

Pour permettre dès a présent aux développeurs d’utiliser Bolt, l’éditeur a aussi développé les drivers facilitant son utilisation dans les langages Java, JavScript, .Net (C#) et Python.

Neo4j 3.0 est disponible dès maintenant !

Comme cela a été souligné par Nigel Small et Stefan Plantikow lors de la conférence sur ces drivers au GraphConnect de Londres, un effort important a été investi sur l’aspect uniformisation des APIs et structures de données entre les différents drivers.
Ainsi, les développeurs trouveront des approches similaires d’un driver à l’autre pour les opérations classiques telles que l’ouverture de session :

Neo4j 3.0 est disponible dès maintenant !

A noter tout de même que l’API REST du serveur Neo4j est toujours présente et utilisable. Il n’est pour le moment pas prévu de l’enlever et elle restera disponible encore un certain temps en parallèle de Bolt.

Procédures stockées Java

Neo4j permettait déjà d’ajouter des extensions au serveur, sous forme de jar, qui ont directement accès à l’API Java Neo4j pour effectuer par exemple des opérations complexes de traversée du graphe, non exprimable directement en Cypher. Ces extensions sont ensuite exposées sous forme de point d’API REST, permettant à une application distante de lancer l’exécution à la demande et d’obtenir les résultats associés.

Sur le même principe d’avoir accès au graphe à bas niveau, Neo4j propose dans sa version 3.0 la possibilité de créer des procédures stockées. De nouvelles possibilités s’ouvrent avec cette fonctionnalité :

  • Les procédures peuvent être développées dans n’importe quel langage géré par la JVM
  • Elles sont accessibles directement via Bolt mais aussi et surtout au sein de requête Cypher !

Neo4j propose déjà une centaine de procédures permettant par exemple de générer le méta-graphe de la base (permettant de visualiser comment sont organisées les données existantes) ou encore d’obtenir des informations sur le nombre de transactions en cours.
Au sein de requêtes Cypher, ces procédures sont déclenchées avec le nouveau mot clé CALL et les résultats de l’exécution peuvent être obtenus dans une variable avec le mot clé YIELD. Exemple de récupération d’un contenu Json sur un site tiers et création dans Neo4j d’un nœud associé :

CALL apoc.load.json('http://example.com/map.json') YIELD value as person
MERGE (p:Person {name:person.name})
ON CREATE SET p.age = person.age, p.children = size(person.children)

 

Voilà pour les principales nouveautés de la version 3.0.
A noter aussi, de nombreuses améliorations et corrections de bugs listées ici : https://github.com/neo4j/neo4j/wiki/Neo4j-3.0-changelog

Gaël Nieutin
picto

Commentaires

Soyez la premiere personne à ajouter un commentaire sur cet article.
Ecrire un nouveau commentaire