2013-02-14 6 views
8

私はNeo4j(Postgresと一緒に)を使ってDjangoアプリを構築していますが、このDjangoの統合はneo4djangoと呼ばれていましたが、neo4restclientのみを使用することができるかどうかは不思議でした。 Neo4djangoを使用していないのですか? neo4-rest-clientのみを使用していますが、より柔軟に対応できますか? Neo4Djangoでモデルを作成していたとき、グラフDBとリレーショナルDBのモデリングに違いはないようでした。私は何か不足していますか?Neo4DjangoなしのDjangoとNeo4j

ありがとうございます!

答えて

9

neo4jjangoを使用せずに、neo4j-rest-clientまたはpy2neoに進むことができます。同様に、いつでもDjango、RESTクライアントなどを使用したい他のデータベースドライバを使用することができます。

あなたは何を失いますか?モデルDSL、ビルトインクエリ(例:Person.objects.filter(name="Mohamed"))、組み込みインデックス、Lucene、Gremlin、Cypherの背後にあります。いくつかのことは、ノード上の任意のプロパティを設定する方がはるかに簡単ですが、Neo4jの仕組みについてもっと知る必要があります。

また、get_object_or_404()などのneo4djangoで動作するDjangoが提供するいくつかのショートカットと、クエリセットで動作するクラスベースのビューの一部が失われます。

あなたは何を得ますか? DB上の絶対的なパワーと、DBパフォーマンスの微調整が容易になります。 neo4djangoはPythonの領域では従来のORMほどうまく機能しませんが、容易さとパワーのトレードオフは同じです。

つまり、2人は協力して、neo4djangoから基盤となるRESTクライアントノードと関係にいつでもドロップダウンすることができます。 model_instance.nodeを使用して、基底のneo4j-rest-clientノードオブジェクトをモデルから取得し、from neo4django.db import connectionをラップしたneo4j-rest-client GraphDatabaseから取得してください。

あなたが何か不足しているかどうか:neo4djangoは、強力な開発者インターフェイス(Django ORM)を再利用するために書かれているので、Postgres用のモデルを書くのと同じように感じるはずです。私は過去にbit about that odd feelingと書いています。私は、問題の一部は、ライブラリが新しいグラフ関心のある開発者がトラバースとパターンマッチングを期待するグラフ用語を強調せず、その代わりにDjangoクエリー服にそれらのテクニックをドレスすることであると考えています。

私はあなたの考えを愛していますか、それともそれができないことをライブラリが望むものを知っています:)幸運を祈る!

+1

あなたの精巧で明確な反応に感謝します。私には、model_instance.nodeと同時にneo4j-rest-clientとneo4djangoの両方を使用できることはわかりませんでした。これはすばらしいですね。私が気づいたことの1つは、クエリが少し遅いことです。また、私はPostgres(または別のリレーショナルデータベース)を使用する代わりにNeo4jに対してのみ認証を使用したいので、別の再利用可能なDjangoアプリケーションとして自分自身を構築します。あなたはそれがそれの価値があると思いますか?つまり、私はuserenaを使うのが好きですが、1人のユーザーに対して3つのモデル(Djangoのモデル、Userenaのモデルとneo4djangoのもの)を持っていきます。 –

+1

どのような質問があなたに対して遅すぎますか?私はそれについて何かできることが良いチャンスです:) 私はNeo4jでの認証のためのソリューションにも取り組んでいます。私が本当に気に入っているのは、Django 1.5の交換可能なユーザモデルで動作し、グラフ内のすべてを保持する 'contrib.auth'の代わりのドロップインです。私はまだ準備ができているかどうかは分かっていない。 –

+0

'MyModel.objects.filter(username =" mo ")'のような単純なことは、私が慣れていたものよりも遅いです。 authについて、それは私が目指しているもので、 'contrib.auth'を置き換えています。私は現在、 'django-userena'を使ってすべての認証、ログイン、プロファイル編集を処理していますが、それは面倒な解決策であると確信しています。とにかく私が解決策を構築しようとしていた時、私は認証アプリケーションに貢献することができますか?;) –