当前位置:  NOSQL>mongodb

MongoDB 2.5新查询引擎简介

 
    发布时间:2013-7-9  


    本文导语:  MongoDB 2.5.0开发版已经发布一段时间了,包含了一个新的查询引擎实现。查询引擎主要的工作是通过查询条件,查询到匹配的数据。当然,这其中包括对索引的使用。现有的查询引擎在MongoDB发布的4年以来基本没有进行...

    MongoDB 2.5.0开发版已经发布一段时间了,包含了一个新的查询引擎实现。查询引擎主要的工作是通过查询条件,查询到匹配数据。当然,这其中包括对索引的使用。现有的查询引擎在MongoDB发布的4年以来基本没有进行什么变更。它最大的问题是缺乏扩展性,也没有查询优化的功能(我们知道,MongoDB的查询优化实际上是通过试错的方式来做的)。

在2.5.0版本中,查询引擎被完全重写,它包括三个独立的部分:

1.一个语法树(ASTabstract syntax tree)模块,用于解析查询语句

2.一个解析模块,将BSON的查询条件解析成AST

3.一个完全重写的查询API层,其功能和现有的查询模块类似

   本次改动主要是为后续的查询优化工作铺路,其中很重要的一个功能点,就是索引交集的实现。比如你的查询条件是 {a:5, b:6} ,而这时候你分别有a和b两个字段的独立索引。在现在的查询引擎下,MongoDB只能使用其中一个索引。比如找出所有a的值为5的记录,再逐条遍历,查询出b为6的值。(或者反过来查b的索引,再遍历出a为5的值)。索引交集功能则可以在现有的情况下,通过对a,b两个独立的索引求交集,直接获取到a=5,b=6的记录(目前的稳定版中,需要建一个联合索引才能实现)。除了普通索引外,这一功能还会扩展地理位置索引,全文索引上。(比如获取所有在3.5公里以内,符合xxx条件的人)

另外利用新的查询引擎,还可以实现一些更高级的查询,比如查询出 a == b + c 的记录。以后你可以这样写:

{ a : { $sum : [ “$b” , “$c” ] } })

   这样的功能对新的查询引擎来说很容易实现。

   新的查询引擎目前已经重写完成并且可以测试了。如果你有兴趣测试测试,可以下载最新的2.5.0版本试玩。


  • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:MongoDB 2.5新查询引擎简介
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3