正确构造couchDB应用程序

正确构造couchDB应用程序,couchdb,Couchdb,用例 我想为1个couchdb的多个客户提供服务 每个客户都将拥有自己的数据集(以及子数据的子集-总部作为母公司,每个地点作为子公司) (儿童) 每个客户可以有不同的UI屏幕 在每个客户中,不同的用户可能有不同的UI屏幕 该系统将是一个couchapp,在全球分布,并将使用复制 选项 对于每个客户,将所有页面存储在一个设计文档中,并根据用户类型(权限)提供适当的页面 对于每个客户,将每个页面存储到自己的设计文档中 对于每个客户,将与用户权限级别关联的所有页面存储在一个_设计文档中,以便从不

用例

  • 我想为1个couchdb的多个客户提供服务
  • 每个客户都将拥有自己的数据集(以及子数据的子集-总部作为母公司,每个地点作为子公司) (儿童)
  • 每个客户可以有不同的UI屏幕
  • 在每个客户中,不同的用户可能有不同的UI屏幕
  • 该系统将是一个couchapp,在全球分布,并将使用复制
选项

  • 对于每个客户,将所有页面存储在一个设计文档中,并根据用户类型(权限)提供适当的页面

  • 对于每个客户,将每个页面存储到自己的设计文档中

  • 对于每个客户,将与用户权限级别关联的所有页面存储在一个_设计文档中,以便从不同的_设计文档中为每个用户类型提供服务

另外,我已经读了两本关于couchDB的书,现在还不清楚使用一个设计文档相对于一个普通文档来服务web页面的优势

更新1:
我想我需要给出一个更清楚的例子

A公司在曼谷设有总部,管理和行政(秘书)人员使用该应用程序。这些用户将属于不同的用户组,拥有不同的权限,这将使他们能够访问不同的HMTL文档(或相同的模板文档,但通过js提供不同的内容)。该公司在芭堤雅、普吉岛和昌迈设有办事处。在这些办公室中,每个办公室都有不同的用户类型,他们可以访问应用程序的不同部分,并看到不同版本的HTML屏幕。本地应用程序将基于筛选的复制

此couchDB将为多个公司提供此服务,这些公司的结构与A公司类似,都来自同一个数据库(原因是我们需要能够聚合所有公司的数据,couchDB不能跨多个数据库聚合,因为如果我读得正确,视图是特定于数据库的),每个主公司的HTML页面可能与其他主公司略有不同

所以只关注结构,我最初的想法是做多个设计文档,每个主公司一个。在这些设计文档中,我们存储了该公司的每个HTML页面(可能与其他母公司相同,也可能不同)

有没有更好的方法来组织这个? 当我们有1000家大公司时,你是否看到了规模问题

另外,即使我们不能通过couchDB直接完成解决ACL问题,我们也可以自己完成,所以这不是目前的主要问题

更新2:

因此,经过更多的研究,我看到了如何显示功能(显示)通过使用模板在这方面发挥作用。它并不能完全回答我的问题,因此我想,基于此,我现在也在想,是否有一种情况,您可能希望在设计文档中添加除index.HTML之外的任何其他HTML附件?

对于多个用户的情况,有两种基本解决方案,每个用户都可以看到只有总数据的一个子集

  • 使用中间web层。这与任何其他MySQL/PHP或Rails体系结构类似。CouchDB是一个数据后端。您有自己的用户登录和管理,一切都由您自己完成
  • 使用。这需要一些学习,但是,嘿,你不是自己编写用户和身份验证代码。要为不同的用户创建不同的数据集,每个用户都有自己的数据库,你只复制(使用筛选器)用户可以看到的文档

  • CouchDB直接为来自Internet的所有查询提供服务。它不关心客户端是浏览器(沙发应用程序)、iPhone还是命令行cURL。设计文档根本不影响数据库的读取权限

    设计文档是完全透明和公开的。其中不应包含任何私有内容。例如,它可能包含模板文件,但私有数据位于其他文档中


    数据库几乎可以有任何设计文档,因为机密信息是其他文档,只有部分文档复制到用户的单个数据库。

    A\u设计文档是具有\u视图查询以及其他CouchDB功能的唯一方法。如果没有\u视图查询,您唯一能做的数据API就是获取和更新do文档由_id.对,我知道了,视图将查看所有其他文档以获取数据。因此,不管怎样,我仍然不知道如何为提供给不同用户的网页构建实际的层次结构。如果您有更多问题,请告诉我,我将尝试扩展答案。好的,我计划使用CouchDB security模型,但我一直回到层次结构。我可以创建多个_设计文档,每个文档都有自己的选项集,并且在每个文档中我可以创建多个附件(在我的例子中是HTML页面)。因此,我试图了解如何最好地构建它。\设计文档基本上是一个捆绑的web应用程序,但它们根本不会影响读取权限。要对每个用户拥有不同的权限,请为每个用户创建不同的数据库,然后将他们需要/想要的文档从中心数据库复制到他们的数据库。如果我误解了多个设计文档的事情,也许是你任务的一个更具体的例子?嗯……是的,我想我需要给出一个更清楚的例子,因为所有这些问题我都很熟悉。即使在设计文档级别,我们也有验证文档更新来处理一些问题。当然还有10个或100个许多用户无法扩展到多个数据库。因此,我将重新陈述我最初的问题。