0

我正在實現一個文件系統。每個文件夾都有一個ACL,它基本上只是一個允許讀/寫文件夾的用戶標識列表。我想通過將ACL從上層文件夾複製到下層文件夾來實現這一點 - 我想要繼承權限,但我不想在讀取時查看它們。我將文件夾之間的關係存儲爲子文件夾中超級文件夾的引用。在appengine HRD上的實體之間的一致的繼承屬性

操作的以下順序的話,是很難與HRD解決:在數據存儲區作爲文件夾A的子文件夾,其已經存在

  1. 穿戴文件夾B中。
  2. 變化A.權限

的問題是,當我在第2步改變A上的權限,我需要查找所有A的孩子,所以我可以應用權限的改變他們也是如此。不幸的是,這意味着一個查詢,所以B可能不會顯示在該查詢中。 B可能會錯過權限更改!

到目前爲止我唯一想到的解決方案是雙向存儲「子文件夾」關係:A引用了所有子文件夾,B引用了其超文件夾。然後我可以使用跨組事務同時更新A和B,並且在步驟2中不需要查詢。無論如何,這可能會更好,因爲直接獲取可以輕鬆緩存,不需要索引掃描等。

任何人有任何其他想法?我不喜歡這個解決方案的冗餘存儲需求,也不需要XG交易。

回答

1

數據存儲區中唯一的事務性和強一致性單元是實體組。所以,如果你想讓B的讀者知道有事務保證的A的變化,A和B需要在同一個組中。這聽起來像是你試圖避免這種方法的缺點(爭用,每個組的寫入速度),所以我們需要找到一個可接受的折衷方案。

例如,如果A和B實體在同一個組中是不可接受的,但是對於這種類型的元數據的實例生活在同一個組中是可以接受的(例如,如果它很少被更新)並且與原始實體分開(如果實體和此元數據的XG更新正常),則可以保持數據獨立和類似。

如果你有一個數據結構,可以快速識別所有B的層次祖先,可以確定B及其祖先的聚合元數據屬性時,執行所有祖先的異步讀取。您可以通過存儲實體的完整路徑來進行管理。這涉及到更多的數據存儲區操作(路徑長度的量級),但沒有更多的要求時,你會得到保留此數據歸一化。

相關問題