2016-07-05 76 views
0

來自sql背景。當我想根據用戶的某些屬性限制對數據的訪問時,我可以創建一個視圖並將該視圖用作過濾器,以根據視圖中的條件限制用戶看到的數據。這種方法依賴於關係,迄今爲止它已經爲我工作。看看NoSql以及戰略和概念的轉變,我對如何實現這種認識NoSql的本質感到困惑。什麼是NoSql方法來解決這個問題?當用戶只根據用戶類型查詢特定行時?例如,假設管理員可以查看特定組的所有記錄,並且通用用戶只能看到他們的記錄以及組內公開的某些組級別項目,組照片,組消息等。我真的試圖繞過我的腦海,不考慮SQL方法來解決這個問題,但我是NoSQL的新手,所以這一直是一個挑戰。用於向數據行提供授權的NoSql策略​​

回答

0

NoSQL數據庫在許多方面在概念上與關係數據庫不同。一般來說授權和安全並不是他們的主要關注點。但是,他們中的大多數都是在這方面發展起來的,並且他們擁有精細的授權。基本上,它取決於特定的數據庫。

例如,Cassandra在計劃中具有列級權限(https://issues.apache.org/jira/browse/CASSANDRA-12859),HBase具有單元級權限(https://www.cloudera.com/documentation/enterprise/5-8-x/topics/cdh_sg_hbase_authorization.html)。另一方面,MongoDB通常是無模式的,它有不同的(更復雜的)面向文檔的數據模型,這使得很難實現低級訪問控制。另外,MongoDB有意見。

因此,如果您正在使用的DBMS在預期級別上沒有內置授權,則必須在與db進行交互的應用程序內部實現(如果存在多個應用程序,則情況會變得棘手,並且一些使用規則必須建立)。使用非規範化模型是很常見的事情,所以不同的角色/組可以與不同的表/集合進行交互,這些表包含僅包含角色/組可以看到的數據(基本上,它是對RDBMS視圖的模擬)。這種非規範化的方法通常需要更多的空間,並且需要保持副本同步。如果DBMS支持投影,則可以爲不同的角色/組呈現不同角色/組的字段子集(這樣,至少有一些處理是在數據庫端完成的)。

我希望這會有所幫助,儘管這是一個遲到的答案。