Meetup Python à Nantes le 09 avril : GrapheekDB une base de données graphe rapide en Python !

Posté par . Édité par tuiu pol, Benoît Sibaud, Christophe Guilloux et ZeroHeure. Modéré par ZeroHeure. Licence CC by-sa
13
22
mar.
2014
Python

Une base de données graphe, c’est quoi ? À quoi ça sert ? Pourquoi GrapheekDB ?

Pour ce premier rendez-vous Python, nous vous proposons de découvrir GrapheekDB, avec Raphaël Braud, mercredi 9 avril, de 19h00 à 21h00 à la Cantine du numérique de Nantes.
Cette base de données de graphe libre se distingue de ses consœurs car elle repose sur la rapidité des bases clé-valeur et propose déjà de nombreuses optimisations qui boostent les recherches.
Venez comprendre comment GrapheekDB s’utilise et permet de créer un algorithme de recommandation, de comprendre les principes du page rank ou d’inférer des règles logiques.

Cette petite conférence est une première tentative pour instaurer un rendez-vous avec la communauté Python de Nantes. Les développeurs de tous bords sont bien sûr bienvenus. On espère bien avoir le temps de boire un coup ensemble ensuite !

  • # Pourquoi Python 2.7 ?

    Posté par (page perso) . Évalué à 4.

    Pourquoi utiliser Python 2.7 ?
    Il serait temps d'utiliser Python 3, surtout pour un nouveau projet, d'autant que dans les dépendances, pyzmq et msgpack-python existent pour Python 3, pas gevent encore, mais comme cela dépend de greenlet et que greenlet existe pour Python 3, l'effort devrait être possible.

    • [^] # Re: Pourquoi Python 2.7 ?

      Posté par . Évalué à 1.

      Disclaimer : je suis l'auteur de GrapheekDB.

      En effet, le fait que, pour l'instant, l'outil ne soit disponible que pour Python 2.7 vient de l'indisponibilité de gevent sous Python 3, j'ai prévu de porter le projet sur Python 3 dans les semaines à venir (avant le meetup de Nantes) en supprimant la dépendance gevent et en passant sur une implémentation "plus classique" à base de threads et sockets.

    • [^] # Re: Pourquoi Python 2.7 ?

      Posté par . Évalué à 0.

      La nouvelle version (0.0.12) est désormais compatible avec Python2.7, Python3.3, Python 3.4.

  • # Titre trompeur...

    Posté par (page perso) . Évalué à -3.

    J'ai cru que le titre avec 'rapide' et 'Python' était un troll : il vaudrait mieux enlever 'rapide' et ajouter que ça repose sur un Key/Value store au choix, d'autant plus que ça informerait les gens qui ne lisent que le titre.

    • [^] # Re: Titre trompeur...

      Posté par . Évalué à 2.

      Bien sur le rapide vient notamment de l'utilisation de backend Key-Value store, mais si on dit "rapide" c'est que c'est le but de cette implémentation. À chacun de juger s'il le but est atteint.

    • [^] # Re: Titre trompeur...

      Posté par . Évalué à 1.

      Oui, la rapidité vient essentiellement de l'utilisation d'une base Key/Value Store en backend mais également d'une dénormalisation importante des données stockées (au niveau du KVS).

      Ensuite, comme toujours, la rapidité est toute relative, puisque dépendante du contexte d'utilisation, dans un des cas ptatiques d'utilisation, il s'agissait d'implémenter un algorithme de recommandation, dont la performance dépendait directement de la capacité de l'outil à traverser des liens entre des entités et dans ce contexte, j'ai pu obtenir des performances bien supérieures à des bases existantes (Neo4j, Titan et même ArangoDB), ce n'est pas un troll : j'ai parfaitement conscience que GrapheekDB est très loin d'avoir le périmètre fonctionnel de ces bases mais dans ce cas pratique, la perf était clairement meilleure.

      Accessoirement, la vitesse n'est pas le seul objectif de l'outil : il s'agissait aussi d'offrir une solution en "pur python" (l'utilisation d'un KVS rend l'expression toute relative) pour rendre persistent un graphe. A ce titre, j'ai initialement utilisé NetworkX qui permet, bien sûr, de sauvegarder un graphe mais on doit le recharger en mémoire à chaque utilisation ce qui peut rapidement dégrader les performances dès que l'on commence à travailler sur des millions de noeuds et des dizaines de millions de liens.

      Autre point : le projet est actuellement en version 0.0.11 alpha ce qui ne signifie pas pour autant qu'il n'est pas utilisable ou insuffisamment testé (au contraire : j'essaie à chaque release d'avoir une couverture très importante), cela signifie simplement que l'API peut encore évoluer (pas de garanties pour l'instant de compatibilité ascendante) et qu'il reste des points à ajouter en terme de perf et de fonctionnalités.

      Mais, en conclusion, comme le faisait remarquer Alexandre, le mieux est de tester :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.