我们正在使用couchbase作为我们的nosql商店并且喜欢它的功能。 然而,我们正在创建一个与创建关联的问题 通过视图整理。这可以被认为类似于连接操作。 虽然我们的数据集是保密的,但我用这个模型说明了这个问题。
数据量相当大,因此无法在内存中处理。让我们说我们有关于冰淇淋,邮政编码和当天平均温度的数据。 一种类型的文档包含冰淇淋映射的邮政编码 另一个具有以特定拉链出售的冰淇淋的交易数据。 问题是能够确定在给定的一天的温度下销售的一组顶级冰淇淋。
我们处理这个语料库以发出两个输出,一个是温度映射的邮政编码,另一个是 代表邮政编码的冰淇淋销售。 :
Key Value
[zip1] temp1
[zip1,ice_cream1] 1
[zip2,ice_cream2] 1
这里的视图整理是一种在ice_cream促销,拉链和平均温度即连接之间建立关联的机制。
我们有一个约束,即当第一次看到拉链时,温度查找只在24小时内发生一次,这是有效的 平均温度用于当天。例如,查找发生在1月1日中午12点,下次查找不会发生到1月2日中午12点。 但是,第一次查找中接受的平均温度仅对1月1日有效,而第2次查找仅在1月2日有效 包括当天上半场。 现在,当我想用相关的时间组件进行相同的查询时,事情会变得复杂,具体地说是关联a的平均温度 当天在那个拉链上出售的冰淇淋。当那天的平均温度为70°F时,出售x香草冰淇淋
Key Value
[y,m,d,zip1] temp1
[y,m,d,zip2,ice_cream2 ] 1
[y,m,d2,zip1,ice_cream1] 1
这对查询有一个有趣的影响,比如我查询过去1天我不能在冰淇淋和温度之间做任何关联。 第一次查找发生,因为这是两个键对齐的时候。在温度查找之前的那一天,我失去了冰淇淋的净效果 发生。我想知道你们中是否有人遇到类似的问题,如果你知道某种模式或解决方案,以免失去这些数字。
答案 0 :(得分:2)
首先,欢迎来到StackOverflow,谢谢你提出了一个很好的问题。
我了解您所遇到的具体问题,但我不明白的是您的数据规模 - 所以请原谅我,如果我看起来正走在错误的道路上,我将提出建议。我们可以根据您的具体需求来回答这个问题。
首先,您发现CB在其查询中不支持联接。我建议如果正确使用CB,这不是一个真正的问题。 Couchbase如何用于过滤数据的概念模型如下:
从你的描述中,听起来好像你试图对CB视图查询过于聪明。我建议采取两种行动方案之一: