2013-02-14 70 views
8

我用Neo4j(和Postgres一起)構建一個Django應用程序,我發現這個Django集成被稱爲neo4django,我想知道是否有可能只使用neo4restclient,比如,會有什麼缺點不使用Neo4django?是否僅使用neo4-rest-client,給我更多的靈活性? 當我使用Neo4Django創建模型時,似乎在建模圖形數據庫和關係數據庫之間沒有區別。我錯過了什麼?Django和Neo4j沒有Neo4Django

謝謝!

回答

9

您可以絕對與Neo4j的休息客戶端或py2neo勇往直前,不使用neo4django。以同樣的方式,你可以使用你想使用Django,任何REST客戶端,任何時候任何其他數據庫驅動程序等

什麼會你輸了?模型DSL,內置查詢(例如,Person.objects.filter(name="Mohamed")),內置索引以及Lucene,Gremlin和Cypher。有些事情會更容易 - 就像在節點上設置任意屬性一樣 - 但您需要了解更多關於Neo4j如何工作的信息。

你也會失去一些Django提供的與neo4django一起工作的快捷方式,比如get_object_or_404()和一些基於類的查詢。

你會得到什麼?對數據庫有絕對的權力,並且更容易調整數據庫性能。雖然neo4django不像Python領域中的一些傳統ORM那麼好,但權衡vs易用性的權衡是相似的。

這就是說,這兩個可以工作在一起 - 你可以從neo4django下降到底層REST客戶端節點和關係隨時隨地。只需使用model_instance.node從模型中獲取底層的Neo4j休息客戶端節點對象,並from neo4django.db import connection拿到包裹的Neo4j休息客戶端GraphDatabase

您是否失去了一些東西:neo4django寫入重新使用一個強大的開發界面 - Django的ORM-所以應該感到類似於Postgres的寫作模式。我以前寫過bit about that odd feeling。我認爲這個問題的一部分可能是lib沒有突出顯示圖形術語,新的圖形感興趣的開發人員期望 - 例如遍歷和模式匹配 - 而是在Django查詢服裝中使用這些技術。

我喜歡你的想法,或知道任何你想要的庫做的,它是不是做:)祝你好運!

+1

非常感謝您的詳細和明確的迴應馬特!我不清楚我可以同時使用neo4j-rest-client和neo4django與model_instance.node。這聽起來很棒。我注意到的一件事是查詢有點慢。另外,我只想使用Neo4j的身份驗證,而不是使用Postgres(或另一個關係數據庫),所以也許我會將自己構建爲一個單獨的可重用Django應用程序。你認爲它值得嗎?我的意思是,我很樂意使用'userena',但是我會爲一個用戶提供三種模型(Django的模型,Userena的模型和neo4django的) – 2013-02-15 08:31:42

+1

嗯,對你來說什麼樣的查詢太慢?有一個很好的機會,我可以做一些關於它:) 我正在努力解決方案auth在Neo4j以及。我真的很喜歡''contrib.auth''的替代品,它可以與Django 1.5的可交換用戶模型一起工作,並將所有內容保留在圖中。不過,我仍然不確定什麼時候可以做好準備。 – 2013-02-16 14:50:06

+0

像MyModel.objects.filter(username =「mo」)這樣簡單的操作比我以前的操作要慢。關於auth,那正是我想要的,取代'contrib.auth'。我現在使用'django-userena'來處理所有認證,登錄,配置文件編輯和所有事情,但我相信這是一個混亂的解決方案。任何機會,我可以貢獻給auth應用程序,因爲我打算建立解決方案嗎?;) – 2013-02-16 15:26:02