我正在考虑一个将存储客户数据的应用程序。鉴于存储桶在 CouchBase 中的工作方式,所有客户数据都将位于一个存储桶中。看来我有两个选择:
通过为每条记录分配一个字段来指示其所属的客户,从而在视图中实现多租户。
通过在作为客户 ID 的每个键上添加一个因素来实现它。
不过,似乎因为我将使用视图,所以我真的想同时做这两个。在第 2 种情况下,我需要在记录中包含数据,以便可以对其进行索引(或者我可以在映射阶段提取部分键并在客户上建立索引),并且在选项 1 中,我想要它是检索数据时检查的关键部分,以确保我不会发送错误的客户数据。
问题是,这是一项服务,多个客户将进行交互,有时一个客户会创建一些数据,而另一个客户会在第一个客户请求时查看它。但是,在每条记录上放置一个 ACL,列出所有有权查看它的人,至少可以说是有问题的。
我敢打赌,有一种通用的方法或设计模式可以回答这个问题,并且希望能得到一些最佳实践的指导。
如果索引同时对特定的相关数据和客户 ID 进行索引,我还担心性能......大量不同的客户可能会使索引效率低得多。(但也许不是。)