ORM avec des bases de données graphiques comme Neo4j en Python
je me demande s'il existe une solution (ou un besoin) à un ORM avec une base de données Graphique (F. E. Neo4j). Je traque les relations (A est lié à B qui est lié à A via C etc., construisant ainsi un grand graphe) d'entités (y compris des attributs supplémentaires pour ces entités) et besoin de les stocker dans une base de données DB, et je pense qu'une base de données de graphe conviendrait parfaitement à cette tâche.
maintenant, avec sql-like DBs, j'utilise sqlalchemyś ORM pour stocker mes objets, surtout parce que je peux récupérez les objets de la base de données et travaillez avec eux dans un style pythonique (utilisez leurs méthodes, etc.).
Existe-t-il une solution de cartographie d'objets pour Neo4j ou un autre Graph-DB, de sorte que je puisse stocker et récupérer des objets python dans et depuis le Graph-DB et travailler avec eux facilement?
ou écririez-vous quelques fonctions ou adaptateurs comme dans la documentation sqlite de python (http://docs.python.org/library/sqlite3.html#letting-your-object-adapt-itself) pour récupérer et stocker des objets?
3 réponses
il y a quelques choix en Python en ce moment, basés sur les interfaces de repos des bases de données.
comme je l'ai mentionné dans le lien @Peter fourni, nous travaillons sur neo4django, qui met à jour l'ancienne intégration Neo4j/Django. C'est un bon choix si vous avez besoin de requêtes complexes et que vous voulez un ORM qui gérera également l'indexation des noeuds - ou si vous utilisez déjà Django. Son fonctionnement est très similaire à celui de L'ORM de Django. Trouver sur PyPi ou GitHub.
il y a aussi une solution plus générale appelée Bulbflow qui est censé fonctionner avec n'importe quelle base de données graphique supportée par des Bleus. Je ne l'ai pas utilisé, mais d'après ce que j'ai vu, il se concentre sur la modélisation de domaine - Bulbflow a déjà des modèles de relation de travail, par exemple, sur lesquels nous travaillons encore - mais ne supporte pas beaucoup les interrogations complexes (comme nous le faisons avec Django querysets + utilisation de l'index). Il vous permet également de travailler un peu plus près du graphique.
plug effrontée... il y a aussi mon propre ORM que vous pouvez aussi vouloir vérifier: https://github.com/robinedwards/neomodel
il est construit sur le dessus de py2neo, en utilisant des appels d'API de cypher et rest sous hood, I. e ne dépend pas de gremlin.
Peut-être que vous pourriez jeter un oeil sur Bulbflow, qui permet de créer des modèles en Django, flasque ou pyramide. Cependant, il fonctionne à travers un REST client au lieu de python de liaison fourni par Neo4j, donc peut-être que ce n'est pas aussi rapide que la reliure native.