【问题标题】:View Collation with Couchbase使用 Couchbase 查看排序规则
【发布时间】:2014-01-24 01:06:53
【问题描述】:

我们正在使用 couchbase 作为我们的 nosql 存储,并且喜欢它的功能。 然而,我们在创建关联时遇到了一个问题 通过视图整理。这可以被认为类似于连接操作。 虽然我们的数据集是机密的,但我正在说明这个模型的问题。

数据量很大,无法在内存中处理。假设我们有关于冰淇淋、邮政编码和当天平均温度的数据。 一种类型的文档包含邮政编码到冰淇淋的映射 另一个有以特定 zip 销售的冰淇淋的交易数据。 问题是能够确定一组在给定一天的温度下销售的顶级冰淇淋。

我们处理这个语料库以发出两个输出,一个是邮政编码到温度映射,另一个是 代表邮政编码中的冰淇淋销售。 :

Key Value
[zip1] temp1
[zip1,ice_cream1] 1
[zip2,ice_cream2]   1

这里的视图排序是一种在冰淇淋销售、拉链和平均温度之间创建关联的机制,即连接。

我们有一个限制,即温度查询在 24 小时内仅在首次看到 zip 时发生一次,这是有效的 当天使用的平均温度。例如,查找发生在 1 月 1 日下午 12:00,下一次查找要到 1 月 2 日下午 12:00 才会发生。 然而,在第一次查找中接受的平均温度仅对 1 月 1 日有效,而在第 2 次查找中仅对 1 月 2 日有效 包括前半天。 现在,当我想对涉及的时间组件进行相同的查询时,事情变得复杂了,具体地关联一个 那天在那个 zip.eg 中出售的冰淇淋。 x 香草冰淇淋在当天平均气温为 70 华氏度时售出

Key Value
[y,m,d,zip1] temp1
[y,m,d,zip2,ice_cream2 ] 1
[y,m,d2,zip1,ice_cream1] 1

这对查询有一个有趣的影响,比如说我查询了过去 1 天,我无法在冰淇淋和温度之间建立任何关联 第一次查找发生,因为那是两个键对齐的时候。净效果是我在温度查询之前失去了那天的冰淇淋数量 发生。我想知道你们中是否有人遇到过类似的问题,以及您是否知道某种模式或解决方案以免丢失这些数据。

【问题讨论】:

    标签: collation couchbase


    【解决方案1】:

    首先,欢迎来到 StackOverflow,感谢您提出的好问题。

    我了解您遇到的具体问题,但我不了解您的数据规模 - 如果我的建议似乎走错了路,请原谅我。我们可以根据您的具体需求来回研究这个答案。

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

    1. 创建尽可能精确的 CB 视图
    2. 使用视图从 CB 中尽可能精确地选择记录
    3. 在发送到应用程序的其余部分之前,根据需要在数据访问层中对记录进行精细过滤(也执行任何连接)。

    根据您的描述,在我看来,您的 CB 视图查询似乎太聪明了。我会建议两种行动方案之一:

    1. 在第二个视图查询发生这种情况时手动查找所需的值。
    2. 查找比您需要的更多的记录,然后进行精细过滤(上面的第 3 步)。

    【讨论】:

    • 感谢@rmayer06 的回答和欢迎,我所做的正是您在#2 中提到的[查找更多记录...],这似乎是一种笨拙的做事方式。数据规模在数亿条记录范围内。由于需要大量此类查找,因此无法每次手动查找。
    猜你喜欢
    • 1970-01-01
    • 2013-05-10
    • 2013-05-04
    • 2020-05-28
    • 2012-06-08
    • 2011-06-28
    • 2017-07-09
    • 2015-09-21
    • 2012-09-11
    相关资源
    最近更新 更多