黄东旭解析 TiDB 的核心优势
801
2023-04-28
*** 2.5版本将提供新的查询引擎
*** 2.5.0 (开发版本)中,包含了一个新的查询引擎实现。查询引擎主要的工作是通过查询条件,查询到匹配的数据。当然,这其中包括对索引的使用。现有的查询引擎在***发布的4年以来基本没有进行什么变更。它***的问题是缺乏扩展性,也没有查询优化的功能(我们知道,***的查询优化实际上是通过试错的方式来做的)。
在2.5.0版本中,查询引擎被完全重写,它包括三个独立的部分:
一个语法树(AST:abstract syntax tree)模块,用于解析查询语句一个解析模块,将BSON的查询条件解析成AST一个完全重写的查询API层,其功能和现有的查询模块类似
本次改动主要是为后续的查询优化工作铺路,其中很重要的一个功能点,就是索引交集的实现。比如你的查询条件是 {a:5, b:6} ,而这时候你分别有a和b两个字段的独立索引。在现在的查询引擎下,***只能使用其中一个索引。比如找出所有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 RootParser Root
来源:blog.mongodb.org
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。