文档是否按密钥顺序存储在Couchbase中?换句话说,它们是否允许高效的查询,以检索所有密钥在某个范围内的文档?特别是,我需要知道这是否适用于Couchbase lite。
发布于 2015-02-08 19:00:00
查询效率与添加到服务器的视图的构造有关。
Couchbase/Couchbase Lite仅在这些视图中存储程序员指定和生成的索引。当Couchbase重新平衡时,它会在节点之间移动文档,因此似乎无法保证或保持键顺序的一致性。
(很少有数据库/数据存储可以保证磁盘上的文档或行排序,因为索引提供的功能更便宜。)
Couchbase文档检索是通过视图中的map/views查询执行的:
视图根据定义的格式和结构对数据创建索引。视图由从Couchbase中的对象中提取的特定字段和信息组成。视图为您的信息创建索引,以便对数据进行搜索和选择操作。
来源:视图介绍
视图是通过迭代Couchbase桶中的每个文档并输出指定的信息来创建的。生成的索引存储以供以后使用,并在访问视图时使用存储的新数据进行更新。这一过程是渐进的,因此对业绩的持续影响很小。在现有的大型数据集上创建新视图可能需要很长时间,但对数据的更新非常迅速。
来源:视图基础

来源
最后,关于将SQL转换为映射/减少的部分可能会有所帮助:
通常,对于每个WHERE子句,您需要在生成的视图的键中包含相应的字段,然后使用键、键或startkey / endkey组合来指示要选择的数据。
总之,Couchbase视图不断更新其索引,以确保最佳的查询性能。Couchbase Lite类似于查询,但是服务器的机制略有不同:
查询时会根据需要更新视图索引。因此,在文档更改后,下一个对视图的查询将导致对文档的新内容调用该视图的map函数,更新视图索引。(但请记住,您不应该编写任何假设何时调用map函数的代码。) 如何改进视图索引:您可以控制的主要事情是映射函数的性能,无论运行多长时间和分配多少对象。尝试分析您的应用程序时,视图是索引,看看是否花了很多时间在地图功能;如果是,优化它。看看你是否可以短路映射函数,如果文档不是一种会产生任何行的类型,就提前放弃。还可以查看是否可以发出更少的数据。(如果要以值的形式释放整个文档,请不要。)
来自Couchbase Lite - View
https://stackoverflow.com/questions/28397652
复制相似问题