網(wǎng)站設(shè)計(jì)怎么收費(fèi)免費(fèi)企業(yè)網(wǎng)站模板源碼
1. 什么是newsql
? ? ? ?NewSQL 是對(duì)各種新的可擴(kuò)展/高性能數(shù)據(jù)庫的簡稱,這類數(shù)據(jù)庫不僅具有NoSQL對(duì)海量數(shù)據(jù)的存儲(chǔ)管理能力,還保持了傳統(tǒng)數(shù)據(jù)庫支持ACID和SQL等特性。
? ? ? ?NewSQL是指這樣一類新式的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),針對(duì)OLTP(讀-寫)工作負(fù)載,追求提供和NoSQL系統(tǒng)相同的擴(kuò)展性能,且仍然保持ACID和SQL等特性(scalable and ACID and (relational and/or sql -access))。
? ? ? NewSQL比較流量的幾種:cockroachDB,tidb,yugabyteDB等 這些都是參考了google spanner論文的開源實(shí)現(xiàn)。
2.TiDB介紹
? ? TiDB是一個(gè)開源的NewSQL數(shù)據(jù)庫,支持HTAP(Hybrid Transactional and Analytical Processing),既支持事務(wù)型操作,也支持?jǐn)?shù)據(jù)分析。同時(shí)TiDB和MySQL的大多數(shù)協(xié)議都是兼容的。支持水平擴(kuò)展,強(qiáng)一致性和高可用。
? ? ?TiDB的目標(biāo)是提供一個(gè)一站式數(shù)據(jù)庫解決方案。包括OLTP(Online Transactional Processing), OLAP (Online Analytical Processing), and HTAP services。TiDB 適合高可用、強(qiáng)一致要求較高、數(shù)據(jù)規(guī)模較大等各種應(yīng)用場(chǎng)景。
3. TiDB的應(yīng)用場(chǎng)景
? ? ? ?TiDB 的應(yīng)用場(chǎng)景是典型的 OLTP 場(chǎng)景,它的設(shè)計(jì)目標(biāo)是 100% 的 OLTP 場(chǎng)景和 80% 的 OLAP 場(chǎng)景,同時(shí)還提供 TiSpark 項(xiàng)目以完成更復(fù)雜的 OLAP 分析。
? ? ?替代 MySQL
? ? ? ?傳統(tǒng)的 MySQL 數(shù)據(jù)庫在數(shù)據(jù)量急速增長后,使用分庫分表的技術(shù)來對(duì)數(shù)據(jù)庫進(jìn)行擴(kuò)展,在分布式數(shù)據(jù)庫系統(tǒng)中也是使用分片技術(shù),但是這些技術(shù)不管在維護(hù)成本或開發(fā)成本上都很高。
? ? ? 而 TiDB 提供了一個(gè)可彈性的橫向擴(kuò)展的分布式數(shù)據(jù)庫,并且具有高可用性,它兼容 MySQL 協(xié)議和絕大多數(shù)的 MySQL 語法,在通常情況下,用戶無須修改代碼就可以將 MySQL 無縫遷移到 TiDB。
? ? ?替代 NoSQL 數(shù)據(jù)庫
? ? ?NoSQL 數(shù)據(jù)庫擁有彈性的伸縮能力,具有實(shí)時(shí)并發(fā)寫入能力,但是 NoSQL 數(shù)據(jù)庫不支持 SQL,也不支持事務(wù)的 ACID 特性,NoSQL 無法滿足某些強(qiáng)一致性的場(chǎng)景下的需求。
? ? ?TiDB 具備 SQL 所有的特性,同時(shí)滿足數(shù)據(jù)的在線擴(kuò)展。在線旅行網(wǎng)站“去哪兒”目前使用了幾個(gè) TiDB 集群來替代 MySQL 和 HBase,如機(jī)票離線集群、金融支付集群等。
? ? ?集群用來存儲(chǔ)支付信息表和訂單信息表,這些信息嚴(yán)格支持事務(wù) ACID 特性,因此可以將原來存儲(chǔ)于 MySQL 中的數(shù)據(jù)同步到 TiDB 中,然后,運(yùn)營或開發(fā)人員可以在 TiDB 上進(jìn)行 merge 單表查詢或 OLAP 分析。
? ? 實(shí)時(shí)數(shù)據(jù)倉庫
? ? ?目前企業(yè)大多數(shù)的數(shù)據(jù)分析場(chǎng)景的解決方案都是圍繞著 Hadoop 生態(tài)系統(tǒng)展開的,包括 HDFS、Hive、Spark 等。但是單純使用 Hadoop 已經(jīng)無法滿足一些實(shí)時(shí)的 OLTP 和復(fù)雜的 OLAP 需求。
? ? ? ?隨著 TiDB 的子項(xiàng)目 TiSpark 的發(fā)布,可以在擁有關(guān)系數(shù)據(jù)庫的事務(wù)寫入能力同時(shí)進(jìn)行復(fù)雜的分析。
4. TiDB架構(gòu)
? ? ? ?在內(nèi)核設(shè)計(jì)上,TiDB 分布式數(shù)據(jù)庫將整體架構(gòu)拆分成了多個(gè)模塊,各模塊之間互相通信,組成完整的 TiDB 系統(tǒng)。對(duì)應(yīng)的架構(gòu)圖如下:
TiDB Server:SQL 層,對(duì)外暴露 MySQL 協(xié)議的連接 endpoint,負(fù)責(zé)接受客戶端的連接,執(zhí)行 SQL 解析和優(yōu)化,最終生成分布式執(zhí)行計(jì)劃。TiDB 層本身是無狀態(tài)的,實(shí)踐中可以啟動(dòng)多個(gè) TiDB 實(shí)例,通過負(fù)載均衡組件(如 LVS、HAProxy 或 F5)對(duì)外提供統(tǒng)一的接入地址,客戶端的連接可以均勻地分?jǐn)傇诙鄠€(gè) TiDB 實(shí)例上以達(dá)到負(fù)載均衡的效果。TiDB Server 本身并不存儲(chǔ)數(shù)據(jù),只是解析 SQL,將實(shí)際的數(shù)據(jù)讀取請(qǐng)求轉(zhuǎn)發(fā)給底層的存儲(chǔ)節(jié)點(diǎn) TiKV(或 TiFlash)。
PD (Placement Driver) Server:整個(gè) TiDB 集群的元信息管理模塊,負(fù)責(zé)存儲(chǔ)每個(gè) TiKV 節(jié)點(diǎn)實(shí)時(shí)的數(shù)據(jù)分布情況和集群的整體拓?fù)浣Y(jié)構(gòu),提供 TiDB Dashboard 管控界面,并為分布式事務(wù)分配事務(wù) ID。PD 不僅存儲(chǔ)元信息,同時(shí)還會(huì)根據(jù) TiKV 節(jié)點(diǎn)實(shí)時(shí)上報(bào)的數(shù)據(jù)分布狀態(tài),下發(fā)數(shù)據(jù)調(diào)度命令給具體的 TiKV 節(jié)點(diǎn),可以說是整個(gè)集群的“大腦”。此外,PD 本身也是由至少 3 個(gè)節(jié)點(diǎn)構(gòu)成,擁有高可用的能力。建議部署奇數(shù)個(gè) PD 節(jié)點(diǎn)。
存儲(chǔ)節(jié)點(diǎn)
TiKV Server:負(fù)責(zé)存儲(chǔ)數(shù)據(jù),從外部看 TiKV 是一個(gè)分布式的提供事務(wù)的 Key-Value 存儲(chǔ)引擎。存儲(chǔ)數(shù)據(jù)的基本單位是 Region,每個(gè) Region 負(fù)責(zé)存儲(chǔ)一個(gè) Key Range(從 StartKey 到 EndKey 的左閉右開區(qū)間)的數(shù)據(jù),每個(gè) TiKV 節(jié)點(diǎn)會(huì)負(fù)責(zé)多個(gè) Region。TiKV 的 API 在 KV 鍵值對(duì)層面提供對(duì)分布式事務(wù)的原生支持,默認(rèn)提供了 SI (Snapshot Isolation) 的隔離級(jí)別,這也是 TiDB 在 SQL 層面支持分布式事務(wù)的核心。TiDB 的 SQL 層做完 SQL 解析后,會(huì)將 SQL 的執(zhí)行計(jì)劃轉(zhuǎn)換為對(duì) TiKV API 的實(shí)際調(diào)用。所以,數(shù)據(jù)都存儲(chǔ)在 TiKV 中。另外,TiKV 中的數(shù)據(jù)都會(huì)自動(dòng)維護(hù)多副本(默認(rèn)為三副本),天然支持高可用和自動(dòng)故障轉(zhuǎn)移。
TiFlash:TiFlash 是一類特殊的存儲(chǔ)節(jié)點(diǎn)。和普通 TiKV 節(jié)點(diǎn)不一樣的是,在 TiFlash 內(nèi)部,數(shù)據(jù)是以列式的形式進(jìn)行存儲(chǔ),主要的功能是為分析型的場(chǎng)景加速。
?