2014-03-25 35 views
3

我正在评估一个应用程序的CouchBase,并试图找出有关视图范围查询的内容。我知道我可以为单个键,多个键或范围做一个视图。我可以做多个范围吗?即我想用查看键0-10,50-100,5238-81902检索项目。我可能同时需要100个不同的范围,所以不得不向数据库发出100个请求似乎是一个很大的开销。CouchBase视图获取多个范围

回答

2

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

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

此外还有另一种方式: 1.确定范围的最小值和最大值 2.查询视图,将只返回文档ID和一个值,该值的范围(它会根据你的例子是0..81902)基于,没有包括所有文档的结果。 3.根据您的范围(0-10,50-100,5238-81902) ,在上一步的结果的客户端过滤器阵列上,然后使用getMulti和留在数组中的文档ID。

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

+0

好的答案,如果你真的很担心打Couchbase很多(这不是问题),你总是可以将范围结果缓存到他们自己的密钥/文档中。 – scalabilitysolved

+0

我不太关心Couchbase的实际点击率,更关心如此多请求的开销。 (即内存,线程等)我从C#做这个,Couchbase SDK不是异步的,所以我会绑定线程。 –

+0

我不会太担心,我们在生产中使用Java运行一个couchbase堆栈(稍有不同),并且我们已经没有SDK的内存/线程问题,再加上我们推动它非常困难。你可以在这里阅读http://scalabilitysolved.com/build-a-kick-ass-couchbase-stack-for-under-1000/ – scalabilitysolved