Neo4j節點/關係ID是一種動態性質,從我在閱讀文檔和各種在線文章後可以知道的信息,它們可以重複使用。Neo4j OGM如何可靠地在節點/關係上工作?
因此,例如,比方說,我有一個操作O1上(x)
操作,其具有100的ID的另一種操作O2可以刪除(x)
並創建(y)
(O1而被阻止,例如,由於一個I/O操作),巧合的是,(y)
也可能會變成有一個節點ID爲100.當O1恢復執行,並試圖修改節點推測爲(x)
(但現在實際上(y)
,但O1不能說,因爲它已經相同的節點ID),我們會爲該節點提供各種不良數據。
在與一定數量的OGMs(都是用PHP編寫的,儘管我懷疑其他語言也會應用OGMs)一起工作時,我能看到的是他們都依賴於ID,這可能會如上所述,往往會產生危險的後果。
Neo4j OGM如何處理這些情況?或者,上述案例「足夠稀少」(例如兩個UUID發生碰撞的概率相同),以免引起關注?
如何檢索沒有UUID的節點? (例如,那些可能已經從web界面創建而沒有uuid屬性的頁面) – user2064000
您可以爲'Model.find_by_neo_id'做一件事,但通常您要確保那裏有一個UUID。我們有一個遷移,可以找到沒有UUID的節點並添加它們,這樣有幫助。另外,Ruby的'SecureRandom.uuid'基於RFC 4122,所以如果你在那裏創建節點,那麼應該有其他語言的實現 –
(還有'Model.find_by(neo_id:123)','Model.find_by(other_property: value)','Model.where(prop:value)'等等) –