0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

圖文結(jié)合帶你搞懂GreatSQL體系架構(gòu)

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-07-07 15:50 ? 次閱讀

很多小伙伴使用了GreatSQL,但是對(duì)GreatSQL的底層原理還不是很了解,今天就帶大家一起揭開GreatSQL體系架構(gòu)的神秘面紗!

首先來回顧一張經(jīng)典的體系架構(gòu)圖:

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

圖1_GreatSQL5.7 版本體系架構(gòu)圖

由此可以發(fā)現(xiàn),GreatSQL5.7 由以下幾部分組成

  • 連接池組件
  • 系統(tǒng)管理和控制工具
  • SQL接口組件
  • 查詢解析器
  • 查詢優(yōu)化器
  • 緩存組件
  • 可插拔存儲(chǔ)引擎
  • 系統(tǒng)和日志文件

GreatSQL數(shù)據(jù)庫區(qū)別于其他數(shù)據(jù)庫的一個(gè)特點(diǎn)就是其可插拔的表存儲(chǔ)引擎,特別需要注意的是,存儲(chǔ)引擎是基于表的,而不是數(shù)據(jù)庫。

然而,經(jīng)典同時(shí)也意味著這幅圖已經(jīng)相當(dāng)陳舊了。在GreatSQL8.0 及更高版本中,查詢緩存這一功能已經(jīng)被移除。

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

圖2_GreatSQL8.0 版本體系架構(gòu)圖

總體來說,GreatSQL8.0 可以分為連接層、服務(wù)層、存儲(chǔ)引擎層。

一、連接層(Client Connectors)

連接層又名為客戶端連接器(Client Connectors)作用是提供與GreatSQL服務(wù)器建立的支持。

客戶端通過TCP/IP協(xié)議與GreatSQL服務(wù)器建立連接,每個(gè)連接對(duì)應(yīng)一個(gè)線程。連接管理還包括了連接池技術(shù),以復(fù)用已經(jīng)建立好的連接,減少重復(fù)建立連接的開銷。

而且?guī)缀踔С炙兄髁鞯姆?wù)端編程技術(shù),主要完成一些類似于連接處理、授權(quán)認(rèn)證、及相關(guān)的安全方案。

會(huì)對(duì)從 TCP 傳輸過來的賬號(hào)密碼做身份認(rèn)證、權(quán)限獲取

  • 用戶名或密碼不對(duì),會(huì)收到Access denied for user錯(cuò)誤,客戶端程序結(jié)束執(zhí)行

例如:

$mysql-uroot-p
ERROR1045(28000):Accessdeniedforuser'root'@'localhost'(usingpassword:NO)
  • 用戶名密碼認(rèn)證通過,會(huì)從權(quán)限表查出賬號(hào)擁有的權(quán)限與連接關(guān)聯(lián),之后的權(quán)限判斷邏輯,都將依賴于此時(shí)讀到的權(quán)限

二、服務(wù)層(GreatSQL Server)

服務(wù)層是GreatSQL Server的核心,主要包含連接器、分析器、優(yōu)化器、執(zhí)行器等,涵蓋 GreatSQL 的大多數(shù)核心服務(wù)功能,以及所有的內(nèi)置函數(shù)(如日期、時(shí)間、數(shù)學(xué)和加密函數(shù)等),所有跨存儲(chǔ)引擎的功能都在這一層實(shí)現(xiàn),比如存儲(chǔ)過程、觸發(fā)器、視圖等。

Ⅰ.SQL Interface: SQL接口

接收用戶的SQL命令,并且返回用戶需要查詢的結(jié)果。比如SELECT … FROM就是調(diào)用SQL Interface,GreatSQL支持DML、DDL、存儲(chǔ)過程、視圖、觸發(fā)器、自定義函數(shù)等多種SQL語言接口

同時(shí)還支持NoSQL,NoSQL泛指非關(guān)系型數(shù)據(jù)庫和數(shù)據(jù)存儲(chǔ)。隨著互聯(lián)網(wǎng)平臺(tái)的規(guī)模飛速發(fā)展,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)越來越不能滿足需求。從5.6版本開始,GreatSQL就開始支持簡單的NoSQL存儲(chǔ)功能。GreatSQL8.0 版本對(duì)這一功能做了優(yōu)化,以更靈活的方式實(shí)現(xiàn)NoSQL功能,不再依賴模式(schema)。

Ⅱ.Parser: 解析器

在解析器中對(duì) SQL 語句進(jìn)行語法分析、語義分析。將 SQL 語句分解成數(shù)據(jù)結(jié)構(gòu),并將這個(gè)結(jié)構(gòu)傳遞到后續(xù)步驟,以后 SQL 語句的傳遞和處理就是基于這個(gè)結(jié)構(gòu)的,并且判斷你輸入的這個(gè) SQL 語句是否滿足 GreatSQL 語法。

Ⅲ.Optimizer: 查詢優(yōu)化器

在開始執(zhí)行之前,還要先經(jīng)過優(yōu)化器的處理。

SQL語句在語法解析之后、查詢之前會(huì)使用查詢優(yōu)化器確定 SQL 語句的執(zhí)行路徑,生成一個(gè)執(zhí)行計(jì)劃,可以使用EXPLAIN命令查看執(zhí)行計(jì)劃。

這個(gè)執(zhí)行計(jì)劃表明應(yīng)該使用哪些索引進(jìn)行查詢(全表檢索還是使用索引檢索),表之間的連接順序如何,最后會(huì)按照?qǐng)?zhí)行計(jì)劃中的步驟調(diào)用存儲(chǔ)引擎提供的方法來真正的執(zhí)行查詢,并將查詢結(jié)果返回給用戶。

例如下面的 JOIN 語句:

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

那就有兩種方法可以選擇:

  • 第一種,先取表 tb1 里 a=1 的記錄的ID值,再根據(jù) ID 關(guān)聯(lián)表 tb2 ,然后再判斷 tb2 里面 a 的值是否等于 2

  • 第二種,先取表 tb2 里面的 a=2 記錄的 ID 值,在根據(jù) ID 值關(guān)聯(lián) tb1 ,再判斷 tb1 里面 a 的值是否等于 10

執(zhí)行的結(jié)果肯定是一致的,但是效率就大不相同了,所以我們要選擇用小的數(shù)據(jù)集去驅(qū)動(dòng)大的數(shù)據(jù)集,也就是小表驅(qū)動(dòng)大表。

Ⅳ.Caches & Buffers:查詢緩存組件

GreatSQL 內(nèi)部維持著一些 CacheBuffer,比如 Query Cache 用來緩存一條 SELECT 語句的執(zhí)行結(jié)果,如果能夠在其中找到對(duì)應(yīng)的查詢結(jié)果,那么就不必再進(jìn)行查詢解析、優(yōu)化和執(zhí)行的整個(gè)過程了,直接將結(jié)果反饋給客戶端。

但是在 GreatSQL 8.0 版本及以上中刪除了查詢緩存功能,因?yàn)椴樵兙彺姹仨氁獌蓷lSQL語句完全一模一樣,否則是不能觸發(fā)查詢緩存,非常的雞肋~

三、引擎層(Storage Engines)

Ⅰ.存儲(chǔ)引擎層

真正的負(fù)責(zé)了 GreatSQL 中數(shù)據(jù)的存儲(chǔ)和提取,對(duì)物理服務(wù)器級(jí)別維護(hù)的底層數(shù)據(jù)執(zhí)行操作,服務(wù)器通過API與存儲(chǔ)引擎進(jìn)行通信。

存儲(chǔ)引擎的優(yōu)勢在于,各式各樣的存儲(chǔ)引擎都具備獨(dú)特的特性,從而能夠針對(duì)特定的應(yīng)用需求建立不同存儲(chǔ)引擎表。

GreatSQL 支持的存儲(chǔ)引擎如下:

greatsql>SHOWENGINES;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
|Engine引擎名稱|Support支持情況|Comment引擎的說明|Transactions事務(wù)支持|XA分布式事務(wù)支持|Savepoints保存點(diǎn)|
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
|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 數(shù)據(jù)庫的開源特性,用戶得以依據(jù)存儲(chǔ)引擎接口自行編寫個(gè)性化的存儲(chǔ)引擎。當(dāng)對(duì)某一種存儲(chǔ)引擎的性能或功能存有疑慮時(shí),可通過優(yōu)化代碼實(shí)現(xiàn)所需特性,這正展示了開源所賦予我們的便捷與力量。

Ⅱ.存儲(chǔ)層

所有的數(shù)據(jù),數(shù)據(jù)庫、表的定義,表的每一行的內(nèi)容,索引,都是存在 文件系統(tǒng)上,以文件的方式存在的,并完成與存儲(chǔ)引擎的交互。當(dāng)然有些存儲(chǔ)引擎比如InnoDB,也支持不使用文件系統(tǒng)直接管理裸設(shè)備,但現(xiàn)代文件系統(tǒng)的實(shí)現(xiàn)使得這樣做沒有必要了。在文件系統(tǒng)之下,可以使用本地磁盤,可以使用DAS、NAS、SAN等各種存儲(chǔ)系統(tǒng)。

總結(jié)

所以可以把 GreatSQL 的架構(gòu)圖簡化如下:

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

要把架構(gòu)圖牢牢記住,對(duì)于以后深入理解 GreatSQL 數(shù)據(jù)庫會(huì)有極大幫助!


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8701

    瀏覽量

    84546
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    750

    瀏覽量

    43900
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3712

    瀏覽量

    64025

原文標(biāo)題:圖文結(jié)合帶你搞懂GreatSQL體系架構(gòu)

文章出處:【微信號(hào):OSC開源社區(qū),微信公眾號(hào):OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    向量中斷能嵌套嗎?請(qǐng)結(jié)合ARM體系進(jìn)行闡述

    向量中斷能嵌套嗎?請(qǐng)結(jié)合ARM體系進(jìn)行闡述各位大神,本人急用,求解答
    發(fā)表于 05-08 09:20

    如何對(duì)ARM+DSP體系架構(gòu)進(jìn)行調(diào)試?

    ARM+DSP系統(tǒng)體系結(jié)構(gòu)是怎樣的?ARM+DSP系統(tǒng)工作流程及特點(diǎn)是什么?如何對(duì)ARM+DSP體系架構(gòu)進(jìn)行調(diào)試?
    發(fā)表于 04-28 06:29

    嵌入式Linux系統(tǒng)體系架構(gòu)

    介紹了嵌入式Linux系統(tǒng)體系架構(gòu),以及每一層開發(fā)人員的開發(fā)流程。
    發(fā)表于 11-05 06:22

    談?wù)勄度胧教幚砥鞯?b class='flag-5'>體系架構(gòu)

    當(dāng)我們談及嵌入式處理器的體系架構(gòu)時(shí),一般都是想到Intel的X86架構(gòu)和ARM公司的ARM架構(gòu)。X86架構(gòu)和ARM
    發(fā)表于 12-15 06:59

    ARM的體系架構(gòu)基本概念

    1.基本概念A(yù)RM的體系架構(gòu)版本:即其所使用的指令集的版本。ARM架構(gòu)支持32位ARM指令集和16位Thumb指令集,后者使代碼存儲(chǔ)空間大大減小并提供一些拓展功能(Jazelle、***、IEM等
    發(fā)表于 01-25 06:14

    同濟(jì)大學(xué)嵌入式體系架構(gòu)

    同濟(jì)大學(xué)嵌入式體系架構(gòu)
    發(fā)表于 02-09 14:09 ?17次下載
    同濟(jì)大學(xué)嵌入式<b class='flag-5'>體系</b><b class='flag-5'>架構(gòu)</b>

    YDT 1654-2007 IPTV承載網(wǎng)絡(luò)體系架構(gòu)

    YDT 1654-2007 IPTV承載網(wǎng)絡(luò)體系架構(gòu)
    發(fā)表于 07-30 15:14 ?24次下載

    自制功放機(jī)詳細(xì)教程 簡單圖文輕松過程

    本文介紹了自制功放機(jī)教程圖解,帶你一步步學(xué)會(huì)這個(gè)方法,詳細(xì)功放機(jī)DIY方法過程,圖文結(jié)合輕松學(xué)會(huì)。有興趣的朋友一起來看看吧!
    的頭像 發(fā)表于 01-19 10:25 ?11.3w次閱讀
    自制功放機(jī)詳細(xì)教程 簡單<b class='flag-5'>圖文</b>輕松過程

    Altera開發(fā)中RF體系架構(gòu)解析

    Altera開發(fā)的RF體系架構(gòu)
    的頭像 發(fā)表于 06-13 15:35 ?3930次閱讀
    Altera開發(fā)中RF<b class='flag-5'>體系</b><b class='flag-5'>架構(gòu)</b>解析

    復(fù)雜裝備的PHM數(shù)據(jù)體系架構(gòu)設(shè)計(jì)方案

    復(fù)雜裝備的PHM數(shù)據(jù)體系架構(gòu)設(shè)計(jì)方案
    發(fā)表于 06-25 16:02 ?7次下載

    軍用Ad Hoc網(wǎng)絡(luò)分層體系架構(gòu)及安全協(xié)議綜述

    軍用Ad Hoc網(wǎng)絡(luò)分層體系架構(gòu)及安全協(xié)議綜述
    發(fā)表于 06-27 14:27 ?8次下載

    GreatSQL面向金融級(jí)應(yīng)用的數(shù)據(jù)庫

    ./oschina_soft/gitee-GreatSQL.zip
    發(fā)表于 06-17 15:00 ?0次下載
    <b class='flag-5'>GreatSQL</b>面向金融級(jí)應(yīng)用的數(shù)據(jù)庫

    88頁P(yáng)PT帶你搞懂集成電路封裝(附下載)

    +,2小時(shí)極速發(fā)貨!買電子元器件,上華秋商城>>>點(diǎn)擊進(jìn)入?戳“閱讀原文”上華秋商城搜索元器件原文標(biāo)題:88頁P(yáng)PT帶你搞懂集成電路封裝(附下載)文章出處:【微信公眾號(hào):華秋商城】歡迎添加關(guān)注!文章轉(zhuǎn)載
    的頭像 發(fā)表于 11-18 20:11 ?764次閱讀
    88頁P(yáng)PT<b class='flag-5'>帶你</b><b class='flag-5'>搞懂</b>集成電路封裝(附下載)

    技術(shù)干貨 | 654頁P(yáng)PT帶你搞懂模擬電子(附下載)

    來源:安徽大學(xué),PPT很長,本文僅展示部分內(nèi)容。如需下載完整PPT,進(jìn)入“華秋商城”公眾號(hào)發(fā)送“模擬電子技術(shù)”即可下載?!緢?bào)告推薦】◇63頁P(yáng)PT帶你搞懂元宇宙(附下載)◇第三代半導(dǎo)體:新能源汽車
    的頭像 發(fā)表于 01-07 14:38 ?776次閱讀
    技術(shù)干貨 | 654頁P(yáng)PT<b class='flag-5'>帶你</b><b class='flag-5'>搞懂</b>模擬電子(附下載)

    【硬核科普】3分鐘帶你搞懂PCB壓合工藝

    銅免費(fèi)檢測:登錄華秋電路官網(wǎng)>進(jìn)入用戶中心>點(diǎn)擊孔銅檢測>一鍵申請(qǐng)。點(diǎn)擊孔銅檢測0元PCB打樣原文標(biāo)題:【硬核科普】3分鐘帶你搞懂PCB壓合工藝文章出處:【微信公
    的頭像 發(fā)表于 08-12 09:31 ?1249次閱讀
    【硬核科普】3分鐘<b class='flag-5'>帶你</b><b class='flag-5'>搞懂</b>PCB壓合工藝