Database CouchBase视图获取多个范围

Database CouchBase视图获取多个范围,database,couchbase,couchbase-view,Database,Couchbase,Couchbase View,我正在为一个应用程序评估CouchBase,并试图找出一些关于视图范围查询的信息。我知道我可以对单个关键点、多个关键点或一个范围进行视图获取。我可以为多个范围进行get吗?i、 e.我想用查看键0-10、50-100、5238-81902检索项目。我可能同时需要100个不同的范围,因此必须向数据库发出100个请求似乎是很大的开销。据我所知,在couchbase中,无法实现用一个视图从多个范围获取值。Couchbase N1QL中可能有(或将在将来实现)一些功能,但我没有使用它 回答你的问题100

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

据我所知,在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运行Couchbase堆栈(略有不同),我们的SDK没有内存/线程问题,而且我们已经非常努力地推动了它。你可以在这里读到@DavidPfeffer,很久以前我用错了Couchbase C#SDK:我为每个web请求创建了一个Couchbase客户端实例。即使如此,瓶颈仍然是Windows可以拥有的最大连接数,而不是内存。所以我认为,如果您以正确的方式使用SDK,它不会有太大的开销。正如我之前所说的,您也可以尝试第二种方法,这将把请求数减少到2,但在过滤结果时会增加客户端的CPU时间和内存使用。可能是如果你有很多范围和安静的应用程序和couchbase之间的大网络延迟,第二种方法会更好。