2011-12-02 21 views
13

グラフデータベース(fe.Neo4j)を使用したORMの解決策(または必要性)があるのは不思議です。私は関係を追跡しています(AはCなどに関連するBに関連しており、したがって大きなグラフを構成します)。それらのエンティティの追加の属性も含めて、それらをDBに格納する必要があります。グラフデータベースはこの作業に完全に適合します。PythonでNeo4jのようなグラフデータベースを使用したORM

今、sqlのようなDBを使用すると、私はdbからオブジェクトを取得し、pythonicスタイルでそれらのメソッドなどを使用して作業できるため、オブジェクトを格納するためにsqlalchemy¶ORMを使用します。

Neo4jやその他のGraph-DB用のオブジェクトマッピングソリューションはありますか?私はPythonオブジェクトをGraph-DBとの間で保存したり取得したりすることができます。

または、pythonのsqliteドキュメント(http://docs.python.org/library/sqlite3.html#letting-your-object-adapt-itself)のようないくつかの関数やアダプタを記述してオブジェクトを取得して保存しますか?

+1

ここで興味深いhttp://stackoverflow.com/questions/5866635/neo4j-and-django-modelsがあると思いますか? –

答えて

5

現在、データベースのRESTインターフェイスに基づいてPythonにいくつかの選択肢があります。

@Peterのリンクに記載されているように、私たちは古いNeo4j/Djangoの統合を更新するneo4djangoに取り組んでいます。複雑なクエリが必要な場合や、ノードの索引付けを管理するORMが必要な場合、またはDjangoをすでに使用している場合は、良い選択です。これはネイティブのDjango ORMと非常によく似ています。 PyPiまたはGitHubで検索してください。

Blueprintsでサポートされているグラフデータベースで動作すると思われるより一般的な解決策があります。Bulbflowがあります。私はそれを使用していませんが、私が見てきたことから、ドメインモデリングに焦点を当てています。例えば、Bulbflowはすでに働いている関係モデルを持っていますが、複雑なクエリをあまりサポートしていませんDjangoクエリーセット+インデックス使用)。また、グラフの近くで作業することもできます。

+0

電球がかなりいいようですが、私はそれを見ています。それはフラスコなどに縛られているのですか、それとも "スタンドアロン"で使うことができますか? Neo4j Djangoもうまく見えますが、私はplattform/framework-independentまたはstandalone-solution(後でフレームワークにバインドされる可能性があります)を持っているのが好きです。 – dorvak

+0

私が知っているからBulbflowはスタンドアロンで使用できます。 @ versaeの答えは同意しているようだ。 私はいつも販売しているので、名前にもかかわらずneo4django-それはDjangoにいくつかのコード依存関係がありますが、実際のフレームワークを使う必要はありません:) –

+0

答えはもう重要ではありません:neo4djangoとbulbflow放棄されました。最近のOGM(Object-Graph-Mapper)はネオモデルであり、Djangoを使用している場合はdjango-neomodelです。 – Pawamoy

6

おそらく​​を見て、Django、Flask、Pyramidでモデルを作成することができます。しかし、それはNeo4jによって提供されるpython-bindingの代わりにREST client以上で動作します。したがって、おそらくネイティブバインディングほど高速ではありません。

9

恥知らずなプラグイン...あなたはまた、チェックアウトすることをお勧めします私自身のORMもありません:https://github.com/robinedwards/neomodel

それはCYPHERとボンネットの下に残りのAPI呼び出しを使用して、py2neoの上に構築されています、すなわちグレムリンには依存性が。

+0

注:neomodelはもうpy2neoの上に構築されていませんが、公式のneo4jドライバ上に構築されています。 – Pawamoy

関連する問題