2017-04-19 75 views
1

在我的公司中,我們使用IBM Domino十多年。我們使用它來構建具有複製支持的離線應用程序。它運行良好,但我們需要使用IBM Notes客戶端來允許此功能,並且它不適用於移動設備(當然,除了Windows筆記本電腦外)。PouchDB + CouchDB適用於具有權限管理的離線公司應用程序(IBM Domino替換)

我正在尋找其他解決方案來構建離線優先和多支持(Web)應用程序。我認爲CouchDB + PouchDB是最好的解決方案。但要替換Domino,我必須更換授權功能。

Domino在數據庫ACL(管理器,設計器,作者,書寫器,閱讀器等)中擁有許多權限級別。 對於每個文檔,我們可以添加一個閱讀器和一個作者字段,它限制誰可以寫和讀文檔。

例如,我們將Domino與我們的CRM一起使用,員工可以讀取(並寫入)他的客戶以及在公司層次結構中低於他的員工的客戶。他還可以查看其地理區域的客戶(不寫)。

要在Domino中做到這一點,我們計算(每晚)在每個客戶文檔中的讀者和作者字段。我如何在CouchDB中實現這樣的功能?可能嗎?

我讀到許多可能性:

解決上述問題的最佳解決方案是什麼?

+0

你說得對,我在上面指出我的問題。 – Dorian

+0

大大改進。謝謝! – Flimzy

回答

3

Apache CouchDB不具有每個文檔的權限。儘管您可以使用已過濾的複製來僅複製一部分數據,但您不應該依靠過濾的複製作爲訪問管理的一種形式。目前,您唯一真正可行的選擇是採用單用戶數據庫方式。你這裏有幾個選項:

  • 使用couch_peruser configuration option中的Apache CouchDB的2.0,這將創建在_users數據庫中創建每個用戶數據庫,並給予讀取和寫入自己的數據庫用戶權限。
  • 滾動你自己的計劃,基本上做同樣的事情。
  • 使用Cloudant Envoy它允許您將每個用戶一個數據庫的錯覺提供給複製目標(如PouchDB),同時將所有這些數據實際存儲在一個數據庫中。查看Cloudant Envoy應用程序的身份驗證,Part IPart II,瞭解有關如何使用Cloudant Envoy的更多詳細信息。
  • 使用Hoodie。 Hoodie是Offline First應用程序的完整後端,它利用服務器上的Apache CouchDB和客戶端上的PouchDB。連帽衫提供用於管理用戶,持久數據,同步數據和其他一些功能的API。
相關問題