继续读了SDB的代码,重点还是内核的代码。从客户端–查询优化—查询执行的过程来描述一下查询的过程。希望可以搞清楚2个问题:
[list=1]
[*]SDB能做什么查询?
[*]搞清楚SDB是怎么做查询的?
[/list]第一个问题的答案是:
[list=1]
[*]理论上,SDB能做mongoDB能做的所有查询,SDB还支持SQL(我指的是SDB内建的支持,不是通过PG支持的查询)
[*]实际上,我没有一个一个去测,SDB看起来mongoDB类的查询基本上完成了;SQL的支持还更像一个玩具。至于说我怎么得到这个结论的,请看下面的分析吧。
[/list]至于第二个问题的答案请看下文:
[list]
[*]第1部分是技术感言&&吐槽
[*]第2部分是客户端接口。
[*]第3部分是Json查询分析。
[*]第4部分是SQL查询分析。
[*]最后闲扯一下SDB和mongoDB的对比。
[/list]注意:
[list=1]
[*]本文涉及到查询解析/优化/执行都是指的是单机版本或者分布式条件下数据节点。基本不涉及CoodNode上的解析部分。
[*]内容以我感兴趣&&能看懂为主,受限于我的水平/工作经历/对某数据库的怨念,不保证内容的正确性,也不保证是系统的精华部分,更不代表SDB官方(他们一毛钱都没给我)。
[*]文中提到的mongoDB是2.6.1版本。
[*]虽然SDB支持事务,但是本文不涉及事务相关的内容。
[/list]
考虑到排版问题,详细内容见附件