日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB 2.5 版本将提供新的查询引擎

發布時間:2025/4/9 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 版本将提供新的查询引擎的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。