2012-10-03 40 views
2

我有一個像層級類別的樹,我需要保存在數據庫中。我使用了MPTT(嵌套集)來保存這些數據。同時由多個用戶編輯樹?

問題是此類別需要由多個用戶編輯,有時需要同時編輯。

如何保持結構的完整性,而不會對用戶施加太多限制?

鑑於MPTT的性質,當改變結構中的元素時,它也影響其他元素(改變左/右值)。

例如,用戶A刪除Node1,用戶B在Node1下添加Leaf1。這應該給用戶B一個錯誤,即Node1不再存在,但我相信這隻會給用戶B造成混淆......

是否存在針對此問題的任何實際解決方案?

回答

0

這與其他多用戶交易系統有什麼不同?

將用戶操作包含在事務中,以便所有參與的表將被鎖定。然後,根據當前數據驗證輸入並執行更新。

+0

是的,但是對MPTT樹的任何修改都會更改整個結構(左/右值),因此如果100個用戶將新樹添加到樹中,則只有1個會成功,99個不會... – feketegy

3

您正在尋找的是樂觀的併發性。這意味着,您允許用戶開始編輯記錄,但在應用更改之前,您會檢查記錄是否處於用戶開始編輯時的相同狀態。

其他情況是鎖定所有可能受編輯影響的記錄,但它會限制用戶進行任何更改。