0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

图文结合带你搞懂GreatSQL体系架构

OSC开源社区 来源:OSC开源社区 2023-07-07 15:50 次阅读

很多小伙伴使用了GreatSQL,但是对GreatSQL的底层原理还不是很了解,今天就带大家一起揭开GreatSQL体系架构的神秘面纱!

首先来回顾一张经典的体系架构图:

aedab816-1bf1-11ee-962d-dac502259ad0.png

图1_GreatSQL5.7 版本体系架构图

由此可以发现,GreatSQL5.7 由以下几部分组成

  • 连接池组件
  • 系统管理和控制工具
  • SQL接口组件
  • 查询解析器
  • 查询优化器
  • 缓存组件
  • 可插拔存储引擎
  • 系统和日志文件

GreatSQL数据库区别于其他数据库的一个特点就是其可插拔的表存储引擎,特别需要注意的是,存储引擎是基于表的,而不是数据库

然而,经典同时也意味着这幅图已经相当陈旧了。在GreatSQL8.0 及更高版本中,查询缓存这一功能已经被移除。

af01b60a-1bf1-11ee-962d-dac502259ad0.png

图2_GreatSQL8.0 版本体系架构图

总体来说,GreatSQL8.0 可以分为连接层、服务层、存储引擎层

一、连接层(Client Connectors)

连接层又名为客户端连接器(Client Connectors)作用是提供与GreatSQL服务器建立的支持。

客户端通过TCP/IP协议与GreatSQL服务器建立连接,每个连接对应一个线程。连接管理还包括了连接池技术,以复用已经建立好的连接,减少重复建立连接的开销。

而且几乎支持所有主流的服务端编程技术,主要完成一些类似于连接处理、授权认证、及相关的安全方案。

会对从 TCP 传输过来的账号密码做身份认证、权限获取

  • 用户名或密码不对,会收到Access denied for user错误,客户端程序结束执行

例如:

$mysql-uroot-p
ERROR1045(28000):Accessdeniedforuser'root'@'localhost'(usingpassword:NO)
  • 用户名密码认证通过,会从权限表查出账号拥有的权限与连接关联,之后的权限判断逻辑,都将依赖于此时读到的权限

二、服务层(GreatSQL Server)

服务层是GreatSQL Server的核心,主要包含连接器、分析器、优化器、执行器等,涵盖 GreatSQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

Ⅰ.SQL Interface: SQL接口

接收用户的SQL命令,并且返回用户需要查询的结果。比如SELECT … FROM就是调用SQL Interface,GreatSQL支持DML、DDL、存储过程、视图、触发器、自定义函数等多种SQL语言接口

同时还支持NoSQL,NoSQL泛指非关系型数据库和数据存储。随着互联网平台的规模飞速发展,传统的关系型数据库已经越来越不能满足需求。从5.6版本开始,GreatSQL就开始支持简单的NoSQL存储功能。GreatSQL8.0 版本对这一功能做了优化,以更灵活的方式实现NoSQL功能,不再依赖模式(schema)。

Ⅱ.Parser: 解析器

在解析器中对 SQL 语句进行语法分析、语义分析。将 SQL 语句分解成数据结构,并将这个结构传递到后续步骤,以后 SQL 语句的传递和处理就是基于这个结构的,并且判断你输入的这个 SQL 语句是否满足 GreatSQL 语法。

Ⅲ.Optimizer: 查询优化器

在开始执行之前,还要先经过优化器的处理。

SQL语句在语法解析之后、查询之前会使用查询优化器确定 SQL 语句的执行路径,生成一个执行计划,可以使用EXPLAIN命令查看执行计划。

这个执行计划表明应该使用哪些索引进行查询(全表检索还是使用索引检索),表之间的连接顺序如何,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户。

例如下面的 JOIN 语句:

SELECT*FROMtb1JOINtb2USING(ID)WHEREtb1.a=1andtb2.a=2;

那就有两种方法可以选择:

  • 第一种,先取表 tb1 里 a=1 的记录的ID值,再根据 ID 关联表 tb2 ,然后再判断 tb2 里面 a 的值是否等于 2

  • 第二种,先取表 tb2 里面的 a=2 记录的 ID 值,在根据 ID 值关联 tb1 ,再判断 tb1 里面 a 的值是否等于 10

执行的结果肯定是一致的,但是效率就大不相同了,所以我们要选择用小的数据集去驱动大的数据集,也就是小表驱动大表

Ⅳ.Caches & Buffers:查询缓存组件

GreatSQL 内部维持着一些 CacheBuffer,比如 Query Cache 用来缓存一条 SELECT 语句的执行结果,如果能够在其中找到对应的查询结果,那么就不必再进行查询解析、优化和执行的整个过程了,直接将结果反馈给客户端。

但是在 GreatSQL 8.0 版本及以上中删除了查询缓存功能,因为查询缓存必须要两条SQL语句完全一模一样,否则是不能触发查询缓存,非常的鸡肋~

三、引擎层(Storage Engines)

Ⅰ.存储引擎层

真正的负责了 GreatSQL 中数据的存储和提取,对物理服务器级别维护的底层数据执行操作,服务器通过API与存储引擎进行通信

存储引擎的优势在于,各式各样的存储引擎都具备独特的特性,从而能够针对特定的应用需求建立不同存储引擎表。

GreatSQL 支持的存储引擎如下:

greatsql>SHOWENGINES;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
|Engine引擎名称|Support支持情况|Comment引擎的说明|Transactions事务支持|XA分布式事务支持|Savepoints保存点|
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
|FEDERATED|NO|FederatedMySQLstorageengine|NULL|NULL|NULL|
|PERFORMANCE_SCHEMA|YES|PerformanceSchema|NO|NO|NO|
|InnoDB|DEFAULT|Percona-XtraDB,Supportstransactions,row-levellocking,andforeignkeys|YES|YES|YES|
|MEMORY|YES|Hashbased,storedinmemory,usefulfortemporarytables|NO|NO|NO|
|MyISAM|YES|MyISAMstorageengine|NO|NO|NO|
|MRG_MYISAM|YES|CollectionofidenticalMyISAMtables|NO|NO|NO|
|BLACKHOLE|YES|/dev/nullstorageengine(anythingyouwritetoitdisappears)|NO|NO|NO|
|CSV|YES|CSVstorageengine|NO|NO|NO|
|ARCHIVE|YES|Archivestorageengine|NO|NO|NO|
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
9rowsinset(0.00sec)

得益于 GreatSQL 数据库的开源特性,用户得以依据存储引擎接口自行编写个性化的存储引擎。当对某一种存储引擎的性能或功能存有疑虑时,可通过优化代码实现所需特性,这正展示了开源所赋予我们的便捷与力量。

Ⅱ.存储层

所有的数据,数据库、表的定义,表的每一行的内容,索引,都是存在 文件系统上,以文件的方式存在的,并完成与存储引擎的交互。当然有些存储引擎比如InnoDB,也支持不使用文件系统直接管理裸设备,但现代文件系统的实现使得这样做没有必要了。在文件系统之下,可以使用本地磁盘,可以使用DAS、NAS、SAN等各种存储系统。

总结

所以可以把 GreatSQL 的架构图简化如下:

af1c25da-1bf1-11ee-962d-dac502259ad0.png

要把架构图牢牢记住,对于以后深入理解 GreatSQL 数据库会有极大帮助!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9184

    浏览量

    85489
  • SQL
    SQL
    +关注

    关注

    1

    文章

    764

    浏览量

    44156
  • 数据库
    +关注

    关注

    7

    文章

    3807

    浏览量

    64434

原文标题:图文结合带你搞懂GreatSQL体系架构

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    向量中断能嵌套吗?请结合ARM体系进行阐述

    向量中断能嵌套吗?请结合ARM体系进行阐述各位大神,本人急用,求解答
    发表于 05-08 09:20

    如何对ARM+DSP体系架构进行调试?

    ARM+DSP系统体系结构是怎样的?ARM+DSP系统工作流程及特点是什么?如何对ARM+DSP体系架构进行调试?
    发表于 04-28 06:29

    嵌入式Linux系统体系架构

    介绍了嵌入式Linux系统体系架构,以及每一层开发人员的开发流程。
    发表于 11-05 06:22

    谈谈嵌入式处理器的体系架构

    当我们谈及嵌入式处理器的体系架构时,一般都是想到Intel的X86架构和ARM公司的ARM架构。X86架构和ARM
    发表于 12-15 06:59

    ARM的体系架构基本概念

    1.基本概念ARM的体系架构版本:即其所使用的指令集的版本。ARM架构支持32位ARM指令集和16位Thumb指令集,后者使代码存储空间大大减小并提供一些拓展功能(Jazelle、***、IEM等
    发表于 01-25 06:14

    同济大学嵌入式体系架构

    同济大学嵌入式体系架构
    发表于 02-09 14:09 17次下载
    同济大学嵌入式<b class='flag-5'>体系</b><b class='flag-5'>架构</b>

    YDT 1654-2007 IPTV承载网络体系架构

    YDT 1654-2007 IPTV承载网络体系架构
    发表于 07-30 15:14 24次下载

    自制功放机详细教程 简单图文轻松过程

    本文介绍了自制功放机教程图解,带你一步步学会这个方法,详细功放机DIY方法过程,图文结合轻松学会。有兴趣的朋友一起来看看吧!
    的头像 发表于 01-19 10:25 11.4w次阅读
    自制功放机详细教程 简单<b class='flag-5'>图文</b>轻松过程

    Altera开发中RF体系架构解析

    Altera开发的RF体系架构
    的头像 发表于 06-13 15:35 4009次阅读
    Altera开发中RF<b class='flag-5'>体系</b><b class='flag-5'>架构</b>解析

    复杂装备的PHM数据体系架构设计方案

    复杂装备的PHM数据体系架构设计方案
    发表于 06-25 16:02 7次下载

    军用Ad Hoc网络分层体系架构及安全协议综述

    军用Ad Hoc网络分层体系架构及安全协议综述
    发表于 06-27 14:27 8次下载

    GreatSQL面向金融级应用的数据库

    ./oschina_soft/gitee-GreatSQL.zip
    发表于 06-17 15:00 0次下载
    <b class='flag-5'>GreatSQL</b>面向金融级应用的数据库

    88页PPT带你搞懂集成电路封装(附下载)

    +,2小时极速发货!买电子元器件,上华秋商城>>>点击进入☟戳“阅读原文”上华秋商城搜索元器件原文标题:88页PPT带你搞懂集成电路封装(附下载)文章出处:【微信公众号:华秋商城】欢迎添加关注!文章转载
    的头像 发表于 11-18 20:11 919次阅读
    88页PPT<b class='flag-5'>带你</b><b class='flag-5'>搞懂</b>集成电路封装(附下载)

    技术干货 | 654页PPT带你搞懂模拟电子(附下载)

    来源:安徽大学,PPT很长,本文仅展示部分内容。如需下载完整PPT,进入“华秋商城”公众号发送“模拟电子技术”即可下载。【报告推荐】◇63页PPT带你搞懂元宇宙(附下载)◇第三代半导体:新能源汽车
    的头像 发表于 01-07 14:38 941次阅读
    技术干货 | 654页PPT<b class='flag-5'>带你</b><b class='flag-5'>搞懂</b>模拟电子(附下载)

    【硬核科普】3分钟带你搞懂PCB压合工艺

    铜免费检测:登录华秋电路官网>进入用户中心>点击孔铜检测>一键申请。点击孔铜检测0元PCB打样原文标题:【硬核科普】3分钟带你搞懂PCB压合工艺文章出处:【微信公
    的头像 发表于 08-12 09:31 1439次阅读
    【硬核科普】3分钟<b class='flag-5'>带你</b><b class='flag-5'>搞懂</b>PCB压合工艺