SequoiaDB为何能100%兼容MySQL语法和协议

背景

近期笔者在做技术分享交流时,聊到 SequoiaDB 数据库提供了多种数据类型的实例服务,支持结构化 SQL 实例,包括:MySQL 实例、PostgreSQL 实例、SparkSQL 实例;还支持非结构化实例,如:S3对象存储,Posix文件系统以及 JSON 对象实例。而且根据官方的介绍,100% 兼容 MySQL、PostgreSQL、SparkSQL 语法和协议。这让笔者十分感兴趣,想探一探其庐山真面目。

MySQL 逻辑架构

SequoiaDB 提供的 MySQL 实例能够实现 100% 兼容 MySQL 语法和协议,其背后的原理,还需要从MySQL 的逻辑架构中找,MySQL 逻辑架构如下图所示。

在这里插入图片描述

MySQL 逻辑架构整体上可简单地抽象为三层:通信服务层、核心服务层、存储引擎层层。

最上层是 MySQL 通信服务层,主要负责请求连接处理、授权认证、安全等等。

第二层是 MySQL 的核心服务层。绝大多数 MySQL 核心服务功能都在这一层,包括:查询解析、分析、优化、缓存、所有的内置函数等。所有跨存储引擎的功能也都在这一层,存储过程、触发器、视图等。

第三层是存储引擎层,主要负责 MySQL 数据的存储和读取。存储引擎层提供一系列的 底层 API,用于执行如“开启一个事务”、“保存一行记录”或者“根据主键读取一行记录”等操作。上层的核心服务通过 底层API 与存储引擎进行通信。同时这些底层 API 也屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程完全透明。存储引擎不需要去关注如何解析 SQL,也不需要关注如何与其他存储引擎进行通信,只需要简单地响应上层核心服务的请求即可。

讲完 MySQL 的逻辑架构,相信大多数读者大致清楚 SequoiaDB 提供的 MySQL 实例能够实现 100% 兼容 MySQL 协议和语法的庐山真面目了。SequoiaDB 数据库提供 MySQL 实例并没有对原生 MySQL 的通信服务层、核心服务层做任何的代码修改,只是利用存储引擎层提供底层 API 与 MySQL 进行对接,实现上层 MySQL 核心服务从 SequoiaDB 存储引擎中读取和存储数据。

总结

MySQL 自身采用了分层的架构,上层的核心服务层通过底层 API 与存储引擎进行通信,使得 MySQL 天然支持多种存储引擎。SequoiaDB 利用 MySQL 提供的底层 API 实现与 MySQL 核心服务进行对接,成为 MySQL 众多存储引擎中的一员。同时对于原生 MySQL 的通信服务层、核心服务层,SequoiaDB 没有做任何的代码修改,100%兼容 MySQL 协议与语法,运行在原生 MySQL 的应用服务可以无缝地迁移至 SequoiaDB 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codejianhongxie

你的鼓励与肯定是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值