Couchbase:使用存储桶同步视图

时间:2012-07-18 12:29:43

标签: nosql couchdb couchbase

我有一个问题,你的沙发基地专业人士:是否可以将一个文件子集(例如视图中的文档)与另一个桶同步?

那么其他存储桶文件总是“主”存储桶的直接子集? 如果是这样,那在性能方面是不是很昂贵?或者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,因为它更能处理频繁更改的过滤器?

3 个答案:

答案 0 :(得分:2)

一般来说,对于大多数型号而言,您实际上并不需要存储桶“子集”,您是否有特殊原因要尝试这样做以及为什么要将数据分解?您还可以查询视图,或者查看视图上的视图,您可以根据需要进行进一步映射/过滤的单独视图(即,与视图上的视图执行相同的工作)。

答案 1 :(得分:1)

我们正致力于Elastic Search集成。对你的用例来说可能更好

答案 2 :(得分:0)

我认为您要做的是在原始存储桶上写一个视图,然后将该视图中的键/值复制为新存储桶中的文档。

编写一个自动化框架来管理它应该不难,这样你就可以近乎实时地保持派生数据的最新状态。