(07/11/2014)
Bonjour Philip, vous êtes responsable du développement de Neo4j au sein de Neo Technology. Est-ce que vous pourriez-nous présenter brièvement qui est derrière ce système de gestion de bases de données ?
Le système a été conçu par des Suédois en l'an 2000 et pendant une dizaine d'années ils ont mené des recherches et travaillé pour l'améliorer. En 2011, une société a été fondée en Californie par cette même équipe pour exploiter commercialement la technologie qu'ils avaient mise au point. Depuis 2011 donc, Neo Technology est derrière le projet, avec des développeurs en Suède, à Londres, en Allemagne, et des bureaux notamment en France, en Asie et bien sûr à son siège à San Mateo en Californie.
Est-ce que ça veut dire qu'aujourd'hui Neo4j est développé exclusivement par Neo Technology ?
C'est un projet open-source, et il est possible pour des développeurs en dehors de la société d'y contribuer, mais en fait il se trouve qu'il y a énormément de développement par la communauté à la périphérie du produit, disons pour des drivers, la visualisation, l'intégration, mais beaucoup moins pour la base de donnée elle-même. C'est une technologie très compliquée, lorsque nous engageons un nouvel ingénieur il lui faut environ six mois avant de la maîtriser suffisamment pour pouvoir contribuer – donc le cœur du système est surtout construit par Neo Technology.
Neo4j est un système de gestion de base de données très particulier, puisqu'il se fonde sur la théorie des graphes et de ses puissants algorithmes pour manipuler les données. Est-ce qu'on pourrait dire qu'à la différence des autres systèmes il privilégie les relations entre les données plus que la donnée elle-même ?
Oui je crois que c'est une bonne description. Les autres systèmes de données, même ceux qui permettent d'établir des relations entre les données, sont beaucoup plus basés sur l'idée de trouver des données à partir des choses et non pas des interactions entre les choses. Ce qui rend vraiment Neo4j différent c'est qu'il a un modèle, un langage et des performances qui sont optimisés pour pouvoir comprendre un univers de données dans ses causes et ses interactions. Aujourd'hui nous cherchons de plus en plus à analyser avec l'informatique des systèmes complexes, qui ne sont pas simplement des processus issus de formulaires etc. mais par exemple un système biologique ou un système social, et même des systèmes complexes de supply chain [chaîne logistique] où une entreprise fournit quelque chose qui va dans quelque chose qui va dans quelque chose qui finalement va dans un produit... ce sont des systèmes difficiles à suivre où les relations sont plus importantes.
"Neo4j permet d'analyser plus aisément
les systèmes complexes que les autres modèles de données"
Avec la théorie des graphes, on peut aller très profondément dans les réseaux. En fait la plupart des utilisateurs ne comprennent pas et n'ont pas besoin de comprendre la théorie des graphes, à part le fait que les objets sont des nœuds et que les relations entre les objets s'appellent des relations, mais ça ne nécessite pas d'avoir étudié la théorie des graphes. En fait c'est un système qui s'appréhende assez facilement, et plus facilement encore une fois qu'on le connaît un peu. Il permet d'analyser plus aisément les systèmes complexes que les autres modèle de données, notamment ceux qui sont basés sur des tables relationnelles.
Sa capacité à retrouver de manière très performante des modèles de chemin ouvre de nouvelles perspectives dans l'analyse des données, notamment en matière de sécurité ou de lutte contre la fraude. Pourriez-vous nous en dire un peu plus sur ce point ?
Dans les banques ou dans le commerce, il existe des protections qui marchent très bien contre certains types de fraudes. Ces systèmes se basent sur l'activité passée d'un client pour déceler des comportements anormaux, par exemple si j'ai l'habitude de dépenser un certain nombre d'euros ou d'avoir un certain nombre de transactions par semaine ou par mois avec une carte de crédit et que j'essaie d'acheter quelque chose d'un montant nettement supérieur à ce que j'achète normalement alors la transaction pourra être bloquée.
Or on voit de plus en plus de gens qui ont compris ce système et cherchent à faire des fraudes sans le déclencher. Un moyen utilisé est de s'associer à d'autres personnes et partager son adresse, son numéro de téléphone ou un numéro d'identification personnelle pour créer des fausses identités en combinant ces différentes données avec des faux noms. Lorsque le compte est ouvert, la banque a l'impression qu'il s'agit d'une vraie personne, et ils procèdent de sorte que chaque transaction ait toujours l'air d'être normale. Mais si on analyse comment se lient les différentes identités, on peut découvrir ces combines avant que les fraudeurs s'emparent de l'argent. Sans les graphe, c'est presque impossible. Or cette manière de procéder, qu'on appelle fraud ring en anglais, des cercles de fraudes, est à l'origine de pertes beaucoup plus importantes que ce qu'une seule personne peut faire avec une carte de crédit volée.
On constate le même phénomène de fraud rings dans les déclarations d'accidents auprès des assurances. On retrouve les mêmes personnes dans plusieurs accidents endossant différents rôles, le conducteur de l'un devient le passager ou le témoin de l'autre, et les graphes aident à les dépister.
Dans la préface du livre, vous dites que Neo4j apporte une nouvelle façon de penser. Pourriez préciser cette idée ?
C'est une façon de penser à la fois nouvelle et très ancienne. C'est très proche de notre façon naturelle de penser. En tant qu'être humain nous avons d'énormes capacités de comprendre les causes et les effets. Le cerveau lui-même a la forme d'un graphe, avec les neurones et les synapses entre les neurones établissant des connections et quand nous réfléchissons ça envoie des signaux électriques à travers ces nœuds et ces relations.
"C'est une façon de penser
à la fois nouvelle et très ancienne"
Mais pour ceux qui ont été formés par des bases de données relationnelles, qui utilisent SQL et les tables, ça change vraiment la perspective et ça ne semble pas naturel. Mais quand on commence à le pratiquer, à s'entraîner avec des exemples simples, on se met à poser des questions de plus en plus approfondies. Avec les bases de données relationnelles, on a moins l'habitude de poser des questions complexes car ça prend beaucoup de temps de formuler une requête et la base de données peut mettre beaucoup temps à renvoyer une réponse.
J'ai de nombreux exemples de personnes qui me disent qu'une fois qu'ils avaient pris le pas, ils se mettaient à faire des requêtes qui auraient pris normalement une demie journée à formuler, et une demie journée pour avoir la réponse avant de pouvoir poser la question suivante, alors qu'avec Neo4j ils peuvent écrire la requête en quelques minutes, obtenir la réponse sur-le-champ et enchaîner les questions, et ainsi acquérir une bien meilleure compréhension d'un système qu'il n'était possible avant.
Finalement on peut obtenir des réponses avec Neo4j sur des points auxquels on n'aurait pas forcément pensé à l'avance…
Tout à fait, on y arrive de façon organique, à travers une nouvelle façon de penser. Au fur et à mesure, on se permet des questions plus compliqués qu'avant on écartait, avant même qu'elles arrivent à notre conscience, à cause de nos présupposés sur la capacité de la technologie à bien formuler la question et à fournir des réponses.
Quels types d'entreprise utilisent plus particulièrement Neo4j ? Y a-t-il un profil type ?
En 2011, quand Neo Technology a vraiment commencé à travailler sur le plan commercial, elle s'attendait à voir essentiellement trois types d'industries utiliser Neo4j :
- les télécommunications, car le réseau des télécommunication est un réseau graphe ;
- la finance, parce que dans la finance il est courant de voir des portefeuilles imbriqués les uns dans les autres, les différents instruments financiers sont étroitement liés, de même pour les dirigeants, qui a des parts dans quelle entreprise, telle division appartient partiellement à telle autre, etc. On peut facilement voir cela sur https://opencorporates.com qui fournit des données sur plus de 50 millions d'entreprises dans le monde à partir des informations qu'ils reçoivent des gouvernements de nombreux pays et qu'ils mettent en relation à l'aide de Neo4j ;
- et le secteur du logiciel, que ce soit des web services ou des applications.
Or, si Neo4j a effectivement beaucoup de succès dans ces trois domaines, il se trouve qu'il est très employé aussi dans d'autres secteurs que les fondateurs n'avaient pas prévus : l'énergie, l'automobile, la logistique, le jeu, l'éducation, la santé et même les médias. Nous constatons qu'il y a dans toutes sortes d'entreprises des ingénieurs qui emploient Neo4j pour résoudre des problèmes importants auxquels ils sont confrontés.
Finalement quand Forrester annonce qu'il y aura 25 % des entreprises qui utiliseront les bases de données graphes en 2017, on en prend vraiment le chemin...
Oui, absolument. Nous-mêmes nous avons déjà plus de 50 grands comptes parmi ce qu'on appelle le Global 2000. Et donc, oui, on est bien sur le chemin d'avoir comme Forrester dit 25 % des entreprises avant la fin 2017.
Pour revenir plus particulièrement au logiciel Neo4j, peut-on dire qu'il est arrivé à maturité aujourd'hui ?
La réponse est double : oui, absolument, dans le sens où il peut être utilisé de façon performante et fiable en production, dans des systèmes critiques qui doivent fonctionner 24/24h.
Mais mon rôle est de diriger l'évolution du produit et je suis convaincu que comme tous les produits il peut encore être amélioré, ce à quoi nous travaillons continuellement.
Quels sont les points que vous souhaitez privilégier pour son développement futur ?
Nous avons beaucoup travaillé cette année sur l'importation des données et c'est un aspect que nous continuerons encore à améliorer dans l'année qui vient. En effet, dans beaucoup de situations, les données existent déjà et il faut simplement les récupérer d'un système actuel, généralement une base de données relationnelle mais elles peuvent aussi provenir d'un système de big data ou NoSQL.
D'autre part, nous voulons rendre de plus en plus facile l'utilisation de la technologie avec différents langages de développement. Nous avons déjà beaucoup avancé sur ce point, il existe des drivers pour la plupart des langages de programmation qu'on utilise au quotidien, mais on cherche encore à améliorer cela.
Enfin, bien sûr, les performances et la scalabilité, pour lesquelles la demande est toujours plus forte. Nous travaillons à repousser continuellement les limites pour pouvoir permettre des cas d'usage de plus en plus grands. Ceci dit, nous avons des clients qui ont des cas d'usage déjà assez énormes, avec des graphes de plus d'un milliard de personnes, parmi les plus grandes entreprises du monde, Wal-Mart, Ebay, mais on cherche toujours à augmenter cela.
Quelle est la fréquence des nouvelles versions ? Peut-il y avoir des problèmes de compatibilités ?
Nous sortons normalement une ou deux versions par an, et des petites améliorations une ou deux fois par mois. La 1.0 de Neo4j est sortie en 2011 après dix ans de développement, la 2.0 fin 2013, la 2.1 en mi-2014, et là on va avoir une 2.2 vers la fin de l'année. C'est seulement avec les versions 1.0, 2.0, 3.0 qu'il peut y avoir des risques d'incompatibilités, et jusqu'à présent c'est arrivé deux fois. On essaye de ne pas faire ça plus d'une fois tous les deux ans. Concernant la 2.0, il est possible avec très peu de changements de l'utiliser avec une application construite pour 1.9.
"Nombreux problèmes
auxquels j'avais moi-même fait face
dans le passé auraient pu être résolus facilement
avec une technologie comme Neo4j"
Pour terminer, j'aimerais vous poser une question plus personnelle : comment vous-même êtes-vous arrivé à Neo4j ?
Ça s'est passé pour moi comme pour beaucoup de choses dans ce monde, à travers des connections ! Je connaissais quelqu'un qui connaissait quelqu'un qui travaillait à Neo Technology… Je travaillais moi-même dans le conseil logiciel avec des bases de données relationnelles, j'étais très intéressé par les bases de données en général, et en particulier pour toutes les nouveaux systèmes. En y regardant de plus près, j'ai découvert que la façon d'analyser des systèmes graphes était passionnante, et que nombreux problèmes auxquels j'avais moi-même fait face dans le passé auraient pu être résolus facilement avec une technologie comme Neo4j. C'est ça qui m'a vraiment convaincu. Maintenant ça fait environ deux an et demi que je suis chez Neo Technology et la plupart des indicateurs mesurant la popularité ou le taux d'adoption ont augmenté de dix fois depuis que j'ai commencé à y travailler.
Merci, Philip, pour vos réponses. Auriez-vous quelques chose à ajouter ?
Oui j'aimerais vous remercier d'avoir publié le livre de Sylvain. C'est un grand plaisir de voir en langue française un ouvrage sur Neo4j.