2

我們正在使用Spring Security ACL基礎結構與App Engine數據存儲相結合。我們不使用底層的Datastore API,而是使用Objectify框架來訪問Datatstore。我們需要將Spring Security ACL模型(適用於RDBMS)轉換爲更適合於無模式面向對象數據存儲的模型。到目前爲止,我們已經結束了下面描述的兩個實體。App Engine數據存儲上的Spring Security ACL

的Acl

  • ID:龍
  • domainObject的:關鍵(祖先/父)
  • 條目:名單<將AclEntry >(嵌入式)
  • 業主:字符串

將AclEntry

  • SID:字符串
  • 主要:布爾
  • 掩模:整數
  • 給予:

幾乎ACL正在由已知的domainObject(未由ACL ID)檢索每次布爾並且因此我們決定使用域對象作爲給定ACL的祖先,以便我們可以使用祖先查詢(強一致性)並獲取對於ACL至關重要的最新數據。事情是這樣的一個模型 對於「什麼[實體]具有給定用戶(sid)訪問權限」這樣的查詢是不夠的。「其中[實體]可以是任何可用的實體,如項目,組,...

有沒有人在NoSQL數據庫上運行Spring Security ACL,特別是在App Engine數據存儲上有一些經驗?任何暗示將不勝感激。

回答

0

你可能會認爲我的答案一開始就沒有了,但是你的問題超出了Spring Security的範圍:你需要改變你的數據方法。

如果您使用的是「NO SQL」數據存儲,那麼可以讓您的應用擴展,而不是圍繞數據構建應用。

您需要根據您的使用情況爲您的實體建模,而不是將它們緊密地放在爲RDBMS構建的框架中。 這是性能恕我直言的權衡。

如果你不願意交易性能結構,這可能意味着你的應用程序更適合谷歌雲SQL :)

我可能是錯的:告訴我們更多關於你的使用情況?這就是你將如何獲得有用的建議與「NoSQL」數據庫。