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

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

  • 一个语法树(AST:abstract syntax tree)模块,用于解析查询语句
  • 一个解析模块,将BSON的查询条件解析成AST
  • 一个完全重写的查询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版本试玩。【下载】

相关代码都在github上面:

  • AST Root
  • Parser Root

来源:blog.mongodb.org/NoSQLFan

转载于:https://www.cnblogs.com/shihao/archive/2013/05/30/3108411.html

MongoDB 2.5 版本将提供新的查询引擎相关推荐

  1. Jeecg Boot 2.3 里程碑版本发布,支持微服务和单体自由切换、提供新行编辑表格JVXETable

    项目介绍 JeecgBoot是一款基于代码生成器的低代码平台,开源界"小普元"超越传统商业级平台!采用前后端分离架构:SpringBoot 2.x,Ant Design&V ...

  2. 全球独家 | 赋予企业级开源无限可能,阿里云首发云数据库MongoDB 4.2版本

    阿里云MongoDB 4.2版提供分布式事务.通配符索引.字段级加密等一系列重磅新功能,让云上用户可以第一时间体验最新版本,构建更高效.更灵活的应用. 作为全球领先的通用数据库平台,MongoDB是世 ...

  3. 常年“盘踞”数据库前五的 MongoDB,在中国有哪些新动向?

    整理 | 夕颜 受访者 | MongoDB首席客户官Richard Kreuter MongoDB北亚区副总裁苏玉龙 出品 | CSDN(ID:CSDNnews) 作为一个通用性的开源分布式文档型数据 ...

  4. Spring Cloud微服务版本灰度发布新神器

    项目地址:https://github.com/Nepxion/Discovery 强烈建议stra.fork该项目,该项目可以作为学习改造Spring Cloud组件的案例项目. Nepxion D ...

  5. deepin驱动精灵_深度用户展望Deepin 15.11或Deepin 16版本应该有的新功能

    以下是深度操作系统用户展望Deepin 15.11或Deepin 16版本应该有的新功能,你可以使用Deepin 15.10版本,新系统发布后可以升级上去,参考深度操作系统Deepin 15.10下载 ...

  6. 新书上市 | Vue 3.0 核心源码解析,这本书给Vue学习提供新方法

    Vue.js 作为一款极简的 MVVM 框架,因其轻量.易上手,得到了众多开发者的喜爱. 自从 2014 年 Vue 诞生以来,这个框架设计的初衷,尤大说只是为了设计一个让自己用起来舒服的框架,随着受 ...

  7. 和信锐智陶建辉:用无线互联网提供新消息传输机制

    和信锐智科技有限公司创始人陶建辉 和信锐智科技有限公司创始人陶建辉与主持人 新浪科技讯 11月2日下午消息,2009年互联网大会于11月2日-3日在北京召开,新浪网作为官方指定首席合作伙伴对大会进行全 ...

  8. JAVA 17版本介绍(二)新特性介绍

    文章目录 1.随着always-strict 浮点语义的恢复 2.增强型伪随机数生成器 3.新的 macOS 渲染管线 4.macOS/AArch64 端口 5.弃用 Applet API 6.JDK ...

  9. 多宝平台将不再为XP提供新的安全升级、非安全修补程序、免费或付费辅助支持

    多宝平台给用户推送Windows更新补丁将不再出现在XP用户的电脑上,这个失去保护的"老兵"已彻底被多宝平台抛弃. 史上最受欢迎的桌面操作系统WindowsXP在服役13年后终于要 ...

最新文章

  1. js获取本周、本月、本季、本年的第一天
  2. QT自定义饼图的外观
  3. css div撑满窗口高度_如何使用CSS将div的高度设置为窗口的100%?
  4. 小写大写转换_小写到大写转换器JavaScript工具| 网络应用项目
  5. (70)Verilog HDL测试激励:复位激励2
  6. android 加载json停顿,java – 在Android上解析~1 MB JSON非常慢
  7. 2.2 决策树原理与算法——python实战
  8. 算法导论PDF原文算法分享
  9. DWM1000模块简介
  10. 我没有时间 I Don't Have Time?
  11. 利用Python计算农历日期
  12. RequestHead详解
  13. 安卓手机格式化怎么弄_一加6/7/7Pro怎么从氢OS安卓10降级安卓9系统-完美降级教程...
  14. EndNote X9使用教程
  15. 项目经理进阶:如何做好一个领导者
  16. 计算机网络——BGP协议
  17. 2021前端面试及答案---(全部涉及比较全)
  18. Java中计算1--n的累加和
  19. effector - 必应词典
  20. 二进制差分码规则_一篇文章弄明白Node.js与二进制数据流

热门文章

  1. 整数转化成字符串; 字符串转换为整数
  2. 谱聚类算法(Spectral Clustering)优化与扩展
  3. c++语言生成一个随机数,C/C++怎么生成“真正的”随机数
  4. vue在微信里面的兼容问题_微信H5页面兼容性问题分析及解决方法
  5. hbase 读写调优_hbase优化操作与建议
  6. Mallet Java【Windows下配置】(解决Ant安装可能会失败的解决方案)
  7. 第十九讲 拉普拉斯变换引入
  8. Python 面向对象 —— super 的使用(Python 2.x vs Python 3.x)
  9. SCTF 2015 pwn试题分析
  10. eclipse 高效快捷键大全