Couchbase中的文档是否按关键顺序存储?换句话说,它们是否允许有效查询来检索键在一定范围内的所有文档?特别是我需要知道Couchbase lite是否适用。
查询效率与添加到服务器的视图的构造相关。
Couchbase / Couchbase Lite仅在这些视图中存储程序员指定和生成的索引。当Couchbase重新平衡时,它会在节点之间移动文档,因此,要保证或保持键顺序似乎不切实际。
(很少有数据库/数据存储能够保证磁盘上的文档或行顺序,因为索引更便宜地提供了此功能。)
Couchbase文档检索通过视图中的map / reduce查询执行:
视图根据定义的格式和结构在数据上创建索引。该视图由特定字段和从Couchbase中的对象提取的信息组成。视图在您的信息上创建索引,从而可以对数据进行搜索和选择操作。
资料来源:意见介绍
通过遍历Couchbase存储桶中的每个文档并输出指定的信息来创建视图。存储的结果索引供将来使用,并在访问视图时使用存储的新数据进行更新。该过程是渐进式的,因此对性能的持续影响很小。在现有的大型数据集上创建新视图可能需要很长时间才能建立,但是数据更新很快。
来源:Views基础知识
最后,有关将SQL转换为映射/还原的部分可能会有所帮助:
通常,对于每个WHERE子句,您需要在生成的视图的键中包括相应的字段,然后使用键,键或startkey / endkey组合来指示要选择的数据。
总之,Couchbase视图会不断更新其索引以确保最佳查询性能。Couchbase Lite与查询类似,但是服务器的机制略有不同:
查询索引会按需更新。因此,在文档更改之后,对视图的下一个查询将导致在文档的新内容上调用该视图的map函数,从而更新视图索引。(但是请记住,您不应编写任何假设何时调用映射函数的代码。)
如何改善视图索引编制:您可以控制的主要事情是地图函数的性能,包括运行时间和分配的对象数量。尝试在视图建立索引时对应用程序进行性能分析,以查看地图功能是否花费了大量时间;如果是这样,请对其进行优化。看看是否可以使map函数短路,如果文档不是会产生任何行的类型,请尽早放弃。另请查看是否可以发出较少的数据。(如果要作为值发出整个文档,请不要。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句