TiDB目前最新發布的版本是5.2,主要的特色有下列幾項。
- 使用MySQL5.7的協議以及相關工具
一樣用mysql -uroot -p
就能登入,另外一些常用的外部介面工具如phpmyadmin等也都能兼容。
- 支援前面提到的ACID。
- 採cluster架構,各種server負責各項功能,分工精細(燒錢.....)。
而TiDB的架構主要是從下面三種server組成。
- TiDB:主要負責client端的連結,並且對接收到的SQL語法做解析,最後再將TiKV回傳的查詢結果組合回覆給使用者。
- TiKV:負責儲存數據資料,採分散式的架構,資料會以key-value的型態儲存。
- PD:負責每個TiKV node的資料分布狀態,可以說是整個DB的中樞神經。TiKV會定時回傳資料分布的數據以及目前使用的空間大小,PD會依據這些回傳的數據,將資料平均分配在各台TiKV中。
- TiFlash:與TiKV相同,也是用來儲存數據資料,不同的地方在於資料是採column base儲存。
簡單地描述一下整個資料查詢的流程:使用者發出實踐MySQL protocol的SQL語法給TiDB,TiDB收到後將語法做分析與優化,然後去問PD服務這些request的資料存在哪些TiKV,將語法丟給TiKV做運算,得出結果後再回傳給TiDB然後回覆給使用者。
接下來會依序介紹每個server是怎麼達到這些功能。