本篇笔记将为大家介绍 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 层实现。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 实例层、编目节点、数据节点的交互。
相信理解这一机制,会帮助大家更好地在查询类场景中应用好分布式数据库。