2011-06-08 38 views
2

我剛開始發現Neo4j的世界,偶然發現了一個問題,我有問題需要掌握。Neo4j服務器鎖定數據庫。爲什麼?

我安裝了Neo4j並通過bin/neo4j start啓動了它。

在接下來的步驟中,我編寫了一個ruby腳本,在安裝jruby和neo4j gem後創建新節點。一切都好,直到這裏。

如何開始在這裏描述下: http://wiki.neo4j.org/content/Getting_Started_With_Ruby

我的問題:當服務器已經啓動,我嘗試創建節點,Neo4j的響應,該數據庫被鎖定。當我停止服務器時,節點被創建。

我習慣了關係數據庫,所以我不理解這種行爲。

當我通過Neo4j Webadmin工具(http://localhost:7474/webadmin)檢查服務器信息時,ReadOnly標誌設置爲false。

在我看來,Neo4j方法可能不同於關係型數據庫,這意味着服務器可能會稍微有其他目的,然後數據庫服務器。

感謝您的任何意見, 托比亞斯

回答

3

JRuby的綁定將開始它自己的Neo4j的情況下,這意味着你最終將有兩個數據庫實例試圖使用相同的文件。

該方法有所不同,但關係數據庫也使用它,例如Apache Derby。和Neo4j一樣,您可以將它嵌入到應用程序中(這就是JRuby綁定在您的案例中所做的),也可以將其作爲獨立服務器運行。

所以,只是不要自己啓動服務器,應該解決問題。

+0

感謝您的回答。那麼,只要事務或腳本正在運行,這個Neo4j實例是否只存在? – auralbee 2011-06-08 11:25:47

+2

只要腳本正在運行。因此,對於真正的使用,應該從應用程序中的某個地方啓動它,以保持它的運行,因爲啓動和關閉數據庫服務器是非常昂貴的操作。 – nawroth 2011-06-08 11:39:46

+2

你使用Neo4j服務器的是什麼?如果你只是想從ruby與graphdb交互,你不必讓服務器運行。只有當你想通過REST將你的graphdb公開給其他客戶端時,你實際上需要服務器。 – 2011-06-08 13:03:38