Самый чистый способ сделать ORM для neo4j + sql в колбе python? Одна модель по 2 базам данных

Как я могу создать одну модель, которая взаимодействует с двумя базами данных в Flask, где одна, скажем, sqlite, а другая конкретно neo4j?

Я хотел бы иметь логин и пароль в традиционной базе данных и хранить другую графическую информацию в neo4j. Мне сказали, что neo4j плох для вещей, которые требуют больших обходов графа. Возможно, я ошибаюсь, нуждаясь в этом, но у меня есть случай, когда я хотел бы сказать что-то вроде... "return a dict(person.x,person.y,person.z) from all nodes where type==person", а затем передать это в представление моей индексной страницы.

Я видел связанные вопросы об ORM с neo4j: ORM с базами данных Graph как Neo4j в Python

... и это о нескольких БД в Flask: http://packages.python.org/Flask-SQLAlchemy/binds.html

В частности, я вижу, что это принимает форму моего оператора create, записывающего соединение sqlite db, а затем записывающего ключ оттуда в дополнительную реляционную информацию в neo4j.


person Mittenchops    schedule 08.11.2012    source источник


Ответы (3)


Недавно я выпустил модуль OGM (Object-Graph Mapping) для py2neo (http://book.py2neo.org/en/latest/ogm.html). Это может помочь с тем, что вы пытаетесь сделать.

В противном случае вы также можете посмотреть на neomodel (https://github.com/robinedwards/neomodel). Он написан для Django, но его можно использовать и во Flask.

person Nigel Small    schedule 08.05.2013

Я не знаю о смешанных моделях бэкенда, но я думаю, что в зависимости от количества ваших пользователей вы также можете использовать neo4j для своих пользователей. Если вы поместите пользовательские узлы в индекс, вы сможете получить всех пользователей без поиска в графе.

Если вы обнаружите, что это на самом деле является узким местом, перенос его на разделенное хранилище не должен быть слишком сложным.

person Thomas Fenzl    schedule 08.05.2013

Не так сложно адаптировать драйвер neo4j и py2neo для использования, например. Фласк-Вход. Я использовал py2neo для этого и работал хорошо, но теперь перешел на драйвер neo4j. Недостатком является то, что мне не удалось заставить его работать, например, с SQLalchemy и т. Д. Использование двойного серверного решения не проблема, в более раннем проекте я использовал SQLalchemy с SQLite3 и PostgreSQL, Neo4j и Redis вместе. Используя это, я не обнаружил никаких проблем, кроме некоторых проблем с дизайном.

person Peter    schedule 21.03.2017