【问题标题】:CouchBase view get for multiple rangesCouchBase 视图获取多个范围
【发布时间】:2014-03-25 12:52:28
【问题描述】:

我正在评估 CouchBase 的应用程序,并试图找出有关视图范围查询的一​​些信息。我知道我可以对单个键、多个键或范围进行视图获取。我可以获取多个范围吗?即我想用视图键 0-10、50-100、5238-81902 检索项目。我可能同时需要 100 个不同的范围,因此必须向数据库发出 100 个请求似乎开销很大。

【问题讨论】:

    标签: database couchbase couchbase-view


    【解决方案1】:

    据我所知,在 couchbase 中,没有办法通过一个视图来实现从多个范围中获取值。 Couchbase N1QL 中可能有(或将来会实现)某些功能,但我没有使用它。

    回答您的问题 100 个请求不会是很大的开销。 Couchbase 安静快速,旨在每秒处理大量操作。此外,如果您的视图设计正确,则不会在每次查询时“重新计算”。

    还有另一种方式: 1.确定您的范围的最小值和最大值(根据您的示例,它将是 0..81902) 2. 仅返回文档 ID 和范围所基于的值的查询视图,而不包括结果中的所有文档。 3.根据您的范围(0-10、50-100、5238-81902)在客户端过滤上一步的结果数组 然后将 getMulti 与留在数组中的文档 ID 一起使用。

    我不知道您的数据结构,因此您可以尝试两种方法,测试它们并选择最适合您需求的方法。

    【讨论】:

    • 很好的答案,如果您真的担心经常使用 Couchbase(这不是问题),您可以随时将范围结果缓存到他们自己的键/文档中。
    • 我不太关心 Couchbase 的实际点击量,而更关心这么多请求的开销。 (即内存、线程等)我在 C# 中执行此操作,而 Couchbase SDK 不是异步的,所以我将占用线程。
    • 我不会担心太多,我们在生产环境中使用 Java 运行 coouchbase 堆栈(略有不同),并且 SDK 的内存/线程问题为零,而且我们我非常努力地推动它。你可以在这里阅读它scalabilitysolved.com/…
    • @DavidPfeffer 很久以前,我以错误的方式使用了 Couchbase C# SDK:我为每个 Web 请求创建了 1 个 couchbase 客户端实例。即使这样,瓶颈是 Windows 可以拥有的最大连接数,而不是内存。所以我认为如果你以正确的方式使用 SDK,它不会有太大的开销。另外,正如我之前所说,您也可以尝试第二种方法,这会将请求数减少到 2,但在过滤结果时会增加客户端的 CPU 时间和内存使用量。如果您有很多范围并且在应用程序和 couchbase 之间有很大的网络延迟,那么第二种方法会更好。
    猜你喜欢
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多