2010-11-04 69 views
2

目前,我正在評估CouchDB新項目的過程。將CouchDB中的資源訪問權限限制爲2個用戶

該項目的關鍵約束是強大的隱私。需要有兩個用戶可讀的資源。

一個用例可能類似於在Twitter直接信息(DMS)的東西。另一個用例是User/SuperUser訪問級別。

我目前還沒有關於如何解決這幾樣不是建立一個數據庫,只有這些用戶是accessable其他使用CouchDB問題的任何想法。我想知道如何構建視圖來彙總來自多個數據庫的數據?

你對我有什麼提示/建議嗎?

回答

3

我問這個問題上CouchDB的郵件列表幾次,沒有得到回答。

有一些事情,couchdb丟失。

其中之一是文件級別的安全性,其將:

  • 僅允許特定用戶查看文檔
  • 過濾器視圖中的索引上的用戶級權限的基礎文件

我不認爲目前的couchdb實現有權限考慮解決方案。

一個解決方案是使用像Lucene的外部索引工具,並與標籤的用戶權限您的文檔,然後發出帶有用戶權限定義Lucene的查詢,以獲得該文檔。這也意味着你的服務器上的額外負載(lucene需要一個JVM)以及數據可用的額外延遲(lucene索引時間...)

至於多個數據庫解決方案,有語言框架這些實現根本不允許使用多於一個數據庫(例如,用於Ruby的couch_potato)。

有幾個數據庫也意味着你有幾個複製過程,如果你的數據庫可被複制。

此外,這意味着將爲每個數據庫更新視圖。在某些情況下,這樣做會更好,然後在單個數據庫中有大量的視圖索引,但這也意味着不同的用戶可能沒有及時獲取單一信息源(即有些視圖會更新視圖,其他則不會)。所以你不能保證數據對所有用戶都是一致的。

因此,除非在沙發核心中爲了管理文檔級授權而實現某些內容,否則CouchDB似乎不適合用於管理具有隱私約束的數據。

+2

文檔級權限充滿了問題。以下是CouchDB維基上的一個頁面,解釋了爲什麼,包括底部的鏈接以討論CouchDB開發人員郵件列表中的問題:http://wiki.apache.org/couchdb/PerDocumentAuthorization – 2010-11-21 07:49:00

1

還有一堆的細節丟失你正在試圖完成什麼,什麼數據的模樣,所以很難作出具體的建議。您可能能夠爲每個用戶創建一個數據庫並將項目複製到每個用戶數據庫中(對於您描述的DM使用案例)。每個用戶只能訪問他們自己的數據庫,然後你可以有一個可以訪問所有數據庫的管理員用戶。如果您需要稍後更新這些記錄,將它們複製到多個數據庫可能不是一個好主意,然後您可能會考慮是否要在與存儲不同的級別上控制權限。

對於從多個數據庫彙總的數據,我建議看着休息室和bigcouch意見,其中採取不同的方法。

http://tilgovi.github.com/couchdb-lounge/ http://support.cloudant.com/faqs/views/chained-mapreduce-views