0

我有一个问题要问沙发库专业人士:是否可以将文档子集(例如视图中的文档)与其他存储桶同步?

这样其他存储桶文档始终是“主”存储桶的直接子集吗?如果是这样,就性能而言,这不是很昂贵吗?还是 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,因为它更能处理频繁变化的过滤器?

4

3 回答 3

2

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

于 2012-07-18T18:02:13.380 回答
1

我们正在研究 Elastic Search 集成。也许更适合您的用例

于 2012-09-11T16:30:45.790 回答
0

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

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

于 2012-07-18T16:13:40.747 回答