注:本文来自 朱明豪 的投稿,转载请注明。
本篇笔记介绍SequoiaDB数据库查询SQL语句的执行过程,以及查询语句执行过程中实例层、协调节点、编码节点、数据节点各自承担的功能。
应用程序或用户想要从数据库查询需要的数据,首先通过api或client端连接数据库,将查询SQL语句发给数据库,数据库解析查询SQL语句,执行完成后将结果返回给应用程序或用户。
MySQL
首先看一下大家熟悉的MySQL数据库。

总体分为两层:MySQL server层和InnoDB等存储引擎层。MySQL server层负责请求处理和数据计算,InnoDB存储引擎层只负责存储数据。
SQL语句的大体执行过程为:client端把查询SQL语句发给MySQL server层,server层负责语法解析、语义解析、生成执行计划、执行SQL语句。
前三个过程单独在server层完成。执行SQL语句时,需要与InnoDB层进行交互,将对应的数据加载到server层的内存中,最终的计算还在MySQL server层实现。
SequoiaDB
RDBMS类型的数据库的SQL语句执行过程都是相似的,通过对MySQL数据库的了解,我们更容易理解SequoiaDB数据库的查询SQL语句执行过程。
根据官方给出的架构图可以看出:

SequoiaDB数据库总体分为实例层和SequoiaDB分布式存储引擎层等两层。和MySQL数据库相比,它使用SequoiaDB分布式存储引擎替代InnoDB。
实例层支持MySQL、PGSQL、SparkSQL等类型的实例,用于语法解析、语义解析、生成执行计划。
SequoiaDB分布式存储引擎层包括协调节点、编目节点、数据节点三部分,用于数据存储和计算。

SequoiaDB数据库的查询SQL语句的执行过程和MySQL大体一致,主要的区别在于执行SQL语句。下面详细介绍SequoiaDB数据库查询SQL语句的执行过程。
1) client通过user、password连接到MySQL实例层,将查询SQL语句发给MySQL实例层;
2) MySQL实例层对SQL语句进行语法解析、语义解析,并生成执行计划;
3) MySQL实例层将执行计划下发至协调节点;
4) 协调节点收到执行计划后,进行解析,并从本地缓存或编目节点获取对应的集合信息;
5) 协调节点将执行计划转发至集合所在的数据节点;
6) 数据节点按照执行计划进行数据查询,并将结果返回给协调节点;
7) 协调节点把结果汇总,传递给MySQL实例层;
8) MySQL实例层过滤后,将结果返回给client。
到此查询语句执行完成。
从查询SQL语句的执行过程中,我们可以看到SequoiaDB执行查询SQL的关键要点:
· MySQL实例层解析SQL,生成执行计划,几乎不参与计算。
· 协调节点承接着与MySQL实例层、编目节点、数据节点的交互。
· 数据节点承担数据计算和数据存储。
相信理解这一机制,会帮助更好的在查询类场景中应用好分布式数据库。