MongoDB 2.5 版本将提供新的查询引擎
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 版本将提供新的查询引擎相关推荐
- Jeecg Boot 2.3 里程碑版本发布,支持微服务和单体自由切换、提供新行编辑表格JVXETable
项目介绍 JeecgBoot是一款基于代码生成器的低代码平台,开源界"小普元"超越传统商业级平台!采用前后端分离架构:SpringBoot 2.x,Ant Design&V ...
- 全球独家 | 赋予企业级开源无限可能,阿里云首发云数据库MongoDB 4.2版本
阿里云MongoDB 4.2版提供分布式事务.通配符索引.字段级加密等一系列重磅新功能,让云上用户可以第一时间体验最新版本,构建更高效.更灵活的应用. 作为全球领先的通用数据库平台,MongoDB是世 ...
- 常年“盘踞”数据库前五的 MongoDB,在中国有哪些新动向?
整理 | 夕颜 受访者 | MongoDB首席客户官Richard Kreuter MongoDB北亚区副总裁苏玉龙 出品 | CSDN(ID:CSDNnews) 作为一个通用性的开源分布式文档型数据 ...
- Spring Cloud微服务版本灰度发布新神器
项目地址:https://github.com/Nepxion/Discovery 强烈建议stra.fork该项目,该项目可以作为学习改造Spring Cloud组件的案例项目. Nepxion D ...
- deepin驱动精灵_深度用户展望Deepin 15.11或Deepin 16版本应该有的新功能
以下是深度操作系统用户展望Deepin 15.11或Deepin 16版本应该有的新功能,你可以使用Deepin 15.10版本,新系统发布后可以升级上去,参考深度操作系统Deepin 15.10下载 ...
- 新书上市 | Vue 3.0 核心源码解析,这本书给Vue学习提供新方法
Vue.js 作为一款极简的 MVVM 框架,因其轻量.易上手,得到了众多开发者的喜爱. 自从 2014 年 Vue 诞生以来,这个框架设计的初衷,尤大说只是为了设计一个让自己用起来舒服的框架,随着受 ...
- 和信锐智陶建辉:用无线互联网提供新消息传输机制
和信锐智科技有限公司创始人陶建辉 和信锐智科技有限公司创始人陶建辉与主持人 新浪科技讯 11月2日下午消息,2009年互联网大会于11月2日-3日在北京召开,新浪网作为官方指定首席合作伙伴对大会进行全 ...
- JAVA 17版本介绍(二)新特性介绍
文章目录 1.随着always-strict 浮点语义的恢复 2.增强型伪随机数生成器 3.新的 macOS 渲染管线 4.macOS/AArch64 端口 5.弃用 Applet API 6.JDK ...
- 多宝平台将不再为XP提供新的安全升级、非安全修补程序、免费或付费辅助支持
多宝平台给用户推送Windows更新补丁将不再出现在XP用户的电脑上,这个失去保护的"老兵"已彻底被多宝平台抛弃. 史上最受欢迎的桌面操作系统WindowsXP在服役13年后终于要 ...
最新文章
- js获取本周、本月、本季、本年的第一天
- QT自定义饼图的外观
- css div撑满窗口高度_如何使用CSS将div的高度设置为窗口的100%?
- 小写大写转换_小写到大写转换器JavaScript工具| 网络应用项目
- (70)Verilog HDL测试激励:复位激励2
- android 加载json停顿,java – 在Android上解析~1 MB JSON非常慢
- 2.2 决策树原理与算法——python实战
- 算法导论PDF原文算法分享
- DWM1000模块简介
- 我没有时间 I Don't Have Time?
- 利用Python计算农历日期
- RequestHead详解
- 安卓手机格式化怎么弄_一加6/7/7Pro怎么从氢OS安卓10降级安卓9系统-完美降级教程...
- EndNote X9使用教程
- 项目经理进阶:如何做好一个领导者
- 计算机网络——BGP协议
- 2021前端面试及答案---(全部涉及比较全)
- Java中计算1--n的累加和
- effector - 必应词典
- 二进制差分码规则_一篇文章弄明白Node.js与二进制数据流
热门文章
- 整数转化成字符串; 字符串转换为整数
- 谱聚类算法(Spectral Clustering)优化与扩展
- c++语言生成一个随机数,C/C++怎么生成“真正的”随机数
- vue在微信里面的兼容问题_微信H5页面兼容性问题分析及解决方法
- hbase 读写调优_hbase优化操作与建议
- Mallet Java【Windows下配置】(解决Ant安装可能会失败的解决方案)
- 第十九讲 拉普拉斯变换引入
- Python 面向对象 —— super 的使用(Python 2.x vs Python 3.x)
- SCTF 2015 pwn试题分析
- eclipse 高效快捷键大全