使用Couchbase查看整理

时间:2014-01-24 01:06:54

标签: collation couchbase

我们正在使用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天我不能在冰淇淋和温度之间做任何关联。 第一次查找发生,因为这是两个键对齐的时候。在温度查找之前的那一天,我失去了冰淇淋的净效果 发生。我想知道你们中是否有人遇到类似的问题,如果你知道某种模式或解决方案,以免失去这些数字。

1 个答案:

答案 0 :(得分:2)

首先,欢迎来到StackOverflow,谢谢你提出了一个很好的问题。

我了解您所遇到的具体问题,但我不明白的是您的数据规模 - 所以请原谅我,如果我看起来正走在错误的道路上,我将提出建议。我们可以根据您的具体需求来回答这个问题。

首先,您发现CB在其查询中不支持联接。我建议如果正确使用CB,这不是一个真正的问题。 Couchbase如何用于过滤数据的概念模型如下:

  1. 创建尽可能精确的CB视图
  2. 使用视图
  3. 从CB中尽可能精确地选择记录
  4. 在发送到应用程序的其余部分之前,根据需要对数据访问层中的记录进行精细过滤(也执行任何连接)。
  5. 从你的描述中,听起来好像你试图对CB视图查询过于聪明。我建议采取两种行动方案之一:

    1. 使用第二个视图查询手动查找所需的值。
    2. 查找超出您需要的记录,然后进行精细过滤(上面的步骤3)。