Domanda

Mi chiedo se esista una soluzione (o la necessità di) un ORM con Graph-Database (ad esempio Neo4j).Sto monitorando le relazioni (A è correlato a B che è correlato ad A tramite C ecc., Costruendo così un grande grafico) di entità (inclusi attributi aggiuntivi per quelle entità) e ho bisogno di memorizzarle in un DB, e penso che unil database dei grafici si adatterebbe perfettamente a questo compito.

Ora, con DB simili a sql, utilizzo sqlalchemyś ORM per memorizzare i miei oggetti, soprattutto perché posso recuperare oggetti dal db e lavorare con loro in uno stile pitonico (usare i loro metodi ecc.).

Esiste una soluzione di mappatura degli oggetti per Neo4j o altri DB di Graph, in modo che io possa memorizzare e recuperare oggetti Python in e da Graph-DB e lavorare con loro facilmente?

O scriveresti alcune funzioni o adattatori come nella documentazione di Python sqlite (http://docs.python.org/library/sqlite3.html#letting-your-object-adapt-itself) per recuperare e archiviare oggetti?

È stato utile?

Soluzione

Ci sono un paio di scelte in Python in questo momento, basate sulle interfacce REST dei database.

Come ho detto nel link fornito da @Peter, stiamo lavorando su neo4django, che aggiorna la vecchia integrazione Neo4j / Django. È una buona scelta se hai bisogno di query complesse e desideri un ORM che gestisca anche l'indicizzazione dei nodi o se stai già utilizzando Django. Funziona in modo molto simile all'ORM Django nativo. Trovalo su PyPi o GitHub .

Esiste anche una soluzione più generale chiamata Bulbflow che dovrebbe funzionare con qualsiasi database grafico supportato da Blueprints . Non l'ho usato, ma da quello che ho visto si concentra sulla modellazione del dominio - Bulbflow ha già modelli di relazione di lavoro, ad esempio, su cui stiamo ancora lavorando - ma non supporta molto query complesse (come facciamo con set di query Django + utilizzo dell'indice). Ti consente anche di lavorare un po 'più vicino al grafico.

Altri suggerimenti

Plug senza vergogna ... c'è anche il mio ORM che potresti anche voler controllare: https://github.com/robinedwards/neomodel

È costruito su py2neo, utilizzando chiamate API cypher e rest sotto il cofano, ovvero nessuna dipendenza da gremlin.

Forse potresti dare un'occhiata a Bulbflow , che permette di creare modelli in Django, Flask o Pyramid.Tuttavia, funziona su un client REST invece che su python-binding fornito da Neo4j, quindi forse non è veloce come l'associazione nativa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top