我有一个问题要问沙发库专业人士:是否可以将文档子集(例如视图中的文档)与其他存储桶同步?
这样其他存储桶文档始终是“主”存储桶的直接子集吗?如果是这样,就性能而言,这不是很昂贵吗?还是 couchbase 有什么功能可以只创建文档的深层链接而不是复制它?
或者:是否可以在视图上编写视图?
先感谢您!
- - 编辑 - -
假设我想要两组(桶)文档 S1 和 S2。S2 是 S1 的子集。每个集合都包含相同的视图 V1、V2 和 V3,因为我希望能够使用相同的逻辑/接口查询它们中的任何一个。在我的情况下,集合 S2 是按用户/公司/商店/任何东西构建的,在生产中应该有大约 1000 个子集 S2 - 为了保持抽象,我们称它们为 S2a S2b 和 S2c。
包含在任何子集中的文档的选择由过滤实例(例如视图)完成。我们将这些过滤实例称为 F1,用于过滤 S1 到 S2,因此称为 F1a、F1b 和 F1c。
因此,根据我对 couchbase 的实际了解,这导致了以下设计/视图架构:我有三个“基本”视图来显示 V1、V2 和 V3,并且要实现 S2a、S2b 和 S2c,我必须创建设计视图 S2aV1 、S2aV2、S2aV3、S2bV1、S2bV2 等(9 次浏览)。
有人可能会说“明智地选择你的键,你可以避免子视图”,但在我看来,这并不容易,因为以下情况:在最坏的情况下,过滤器参数每分钟都在变化,并且包含许多 WHERE IN 约束,这可能(以我的实际观点)无法有效地处理查询 k/v 列表。
这导致了以下想法和我最初提出的问题。如果我在任何子集(由过滤器定义)中使用相同的视图,是否应该建立一个帮助我处理复杂过滤的实体?例如,在生成视图输出时在运行时调用的函数?这可能看起来像 /design/view?filter=F1 或类似的东西。
或者你有其他解决这个问题的想法吗?或者我应该使用 SQL,因为它更能处理频繁变化的过滤器?