2011-12-02 26 views
13

me pregunto si hay una solución (o una necesidad de) un ORM con Graph-Database (es decir, Neo4j). Estoy rastreando relaciones (A está relacionado con B, que está relacionado con A a través de C, etc., construyendo así un gran gráfico) de entidades (incluyendo atributos adicionales para esas entidades) y necesito almacenarlas en un DB, y creo que la base de datos de gráficos encajaría perfectamente en esta tarea.ORM con bases de datos de gráficos como Neo4j en Python

Ahora, con DBs similares a sql, utilizo sqlalchemyś ORM para almacenar mis objetos, especialmente debido al hecho de que puedo recuperar objetos de la base de datos y trabajar con ellos en un estilo pythonic (usar sus métodos, etc.).

¿Hay alguna solución de mapeo de objetos para Neo4j u otro Graph-DB, de modo que pueda almacenar y recuperar objetos de pitón en y desde Graph-DB y trabajar con ellos fácilmente?

O escribiría algunas funciones o adaptadores como en la documentación de python sqlite (http://docs.python.org/library/sqlite3.html#letting-your-object-adapt-itself) para recuperar y almacenar objetos ?

+1

Creo que puede haber http://stackoverflow.com/questions/5866635/neo4j-and-django-models que sea interesante aquí? –

Respuesta

5

Hay un par de opciones en Python disponibles en este momento, basadas en las interfaces REST de las bases de datos.

Como mencioné en el enlace @Peter proporcionado, estamos trabajando en neo4django, que actualiza la antigua integración de Neo4j/Django. Es una buena opción si necesita consultas complejas y desea un ORM que también administre la indexación de nodos, o si ya está usando Django. Funciona de manera muy similar al ORM nativo de Django. Encuéntrelo en PyPi o GitHub.

También hay una solución más general llamada Bulbflow que se supone que funciona con cualquier base de datos de gráficos compatible con Blueprints. No lo he usado, pero por lo que he visto se enfoca en el modelado de dominios. Bulbflow ya tiene modelos de relaciones de trabajo, por ejemplo, en los que todavía estamos trabajando, pero no admite consultas complejas (como hacemos nosotros). con Django querysets + uso de índice). También te permite trabajar un poco más cerca del gráfico.

+0

Bulbflow parece bastante agradable, lo echaré un vistazo. ¿Está vinculado a Flask, etc. o puede usarlo "autónomo"? (Creo que sí). Neo4j Django se ve bien, también, pero me gustaría tener una plataforma/independiente del marco o solución independiente (que podría estar vinculada a un marco más adelante). – dorvak

+0

Por lo que entiendo, Bulbflow se puede usar de forma independiente. La respuesta de @ versae parece estar de acuerdo. Y como siempre estoy vendiendo, a pesar del nombre, neo4django también tiene algunas dependencias de código en Django pero no requiere el uso del framework actual :) –

+0

La respuesta ya no es relevante: neo4django y bulbflow están abandonados Un OGM más reciente (Object-Graph-Mapper) es neomodel, y django-neomodel si está usando Django. – Pawamoy

6

Tal vez podría echar un vistazo en Bulbflow, que permite crear modelos en Django, Frasco o Pirámide. Sin embargo, funciona en un REST client en lugar del python-binding proporcionado por Neo4j, por lo que tal vez no sea tan rápido como el enlace nativo.

9

Enchufe desvergonzado ... allí es también mi propio ORM que también puede querer a la comprobación: https://github.com/robinedwards/neomodel

Está construido en la cima de py2neo, utilizando Cypher y llamadas a la API de descanso bajo el capó, es decir sin la dependencia de Gremlin.

+0

Nota: neomodel ya no está construido encima de py2neo, sino en el controlador neo4j oficial. – Pawamoy

Cuestiones relacionadas