我剛剛開始與neo4j評估它是否會成爲推薦引擎的良好底層數據庫。我想知道在讀寫操作期間是否有關於實體獲得的鎖的文檔。neo4j鎖定交易
E.g.如果節點N分別通過關係R1和R2與節點N1和N2相關,如果正在創建或修改關係R1,那麼使用N,N1,N2或R2(可能是關係創建/修改或遍歷)的任何操作遇到塊?直覺上,我猜測不是,因爲它只有R1被寫入,並且這是唯一應該被鎖定的實體。不過,我想這也取決於底層的實現,特別是因爲爲每一個關係都提供了雙向遍歷(也許N和N1會被鎖定?)。如果有人能夠指出我的一些官方文檔,這將是非常棒的。
如果確實發生了這種鎖定,我可以想到解決問題的一種方法是將每個節點解析爲每個關係目的的子節點,每個節點都連接到根實體。 (說用戶是社交用戶,用戶是產品用戶等)
我想這將允許更小數目每個節點的關係,根節點的分辨率爲重寫入和讀取重的孩子,並允許快速檢索某些子圖。我可以看到的唯一缺點是節點和關係的總數增加n次(我的db大小相對較小,n = 4,所以我沒有這個問題)。任何關於這些結論是否正確的意見,如果有的話,如果它們有助於提高性能並減少鎖的數量,將不勝感激。
我不太確定起始和結束節點是否被鎖定,但似乎不應該,請參閱http://docs.neo4j.org/chunked/snapshot/transactions-locking.html –
感謝您的鏈接..我看到我在尋找點沒有。 3在那個頁面上。 – user1925093
不錯,很高興能夠提供幫助。隨意博客關於您的設置! –