定南網(wǎng)站建設(shè)/站長工具seo
什么是TiDB
TiDB 是一個(gè)分布式 NewSQL 數(shù)據(jù)庫,它支持水平彈性擴(kuò)展、ACID 事務(wù)、標(biāo)準(zhǔn) SQL、MySQL 語法和 MySQL 協(xié)議,具有數(shù)據(jù)強(qiáng)一致的高可用特性,是一個(gè)不僅適合 OLTP 場景還適合 OLAP 場景的混合數(shù)據(jù)庫。
TiDB 是 PingCAP 公司自主設(shè)計(jì)、研發(fā)的開源分布式關(guān)系型數(shù)據(jù)庫,是一款同時(shí)支持在線事務(wù)處理與在線分析處理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式數(shù)據(jù)庫產(chǎn)品,具備水平擴(kuò)容或者縮容、金融級高可用、實(shí)時(shí) HTAP、云原生的分布式數(shù)據(jù)庫、兼容 MySQL 5.7 協(xié)議和 MySQL 生態(tài)等重要特性。目標(biāo)是為用戶提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案。TiDB 適合高可用、強(qiáng)一致要求較高、數(shù)據(jù)規(guī)模較大等各種應(yīng)用場景。
在詳細(xì)了解TiDB之前,我們需要了解什么是NewSQL。
什么是NewSQL
數(shù)據(jù)庫發(fā)展至今已經(jīng)有3代了:
- SQL,傳統(tǒng)關(guān)系型數(shù)據(jù)庫,例如 MySQL、Oracle
- NoSQL,例如 MongoDB,Redis
- NewSQL
傳統(tǒng)SQL的問題
互聯(lián)網(wǎng)在本世紀(jì)初開始迅速發(fā)展,互聯(lián)網(wǎng)應(yīng)用的用戶規(guī)模、數(shù)據(jù)量都越來越大,并且要求7X24小時(shí)在線。
傳統(tǒng)關(guān)系型數(shù)據(jù)庫在這種環(huán)境下成為了瓶頸,通常有2種解決方法:
-
升級服務(wù)器硬件
雖然能夠提升性能,依然存在硬件瓶頸,且成本大。 -
數(shù)據(jù)分片
使用分布式集群結(jié)構(gòu)
對單點(diǎn)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)分片,存放到由廉價(jià)機(jī)器組成的分布式的集群里,可擴(kuò)展性更好了,但也帶來了新的麻煩。
以前在一個(gè)庫里的數(shù)據(jù),現(xiàn)在跨了多個(gè)庫,應(yīng)用系統(tǒng)不能自己去多個(gè)庫中操作,需要使用數(shù)據(jù)庫分片中間件。
分片中間件做簡單的數(shù)據(jù)操作時(shí)還好,但涉及到跨庫join、跨庫事務(wù)時(shí)就很頭疼了,很多人干脆自己在業(yè)務(wù)層處理,復(fù)雜度較高。
NoSQL的問題
后來 NoSQL 出現(xiàn)了,放棄了傳統(tǒng)SQL的強(qiáng)事務(wù)保證和關(guān)系模型,重點(diǎn)放在數(shù)據(jù)庫的高可用性和可擴(kuò)展性。
優(yōu)點(diǎn)
- 高可用性和可擴(kuò)展性,自動(dòng)分區(qū),輕松擴(kuò)展
- 不保證強(qiáng)一致性,性能大幅提升
- 沒有關(guān)系模型的限制,極其靈活
缺點(diǎn)
- 不保證強(qiáng)一致性,對于普通應(yīng)用沒問題,但還是有不少像金融一樣的企業(yè)級應(yīng)用有強(qiáng)一致性的需求。
- 不支持 SQL 語句,兼容性是個(gè)大問題,不同的 NoSQL 數(shù)據(jù)庫都有自己的 api 操作數(shù)據(jù),比較復(fù)雜。
NewSQL
NewSQL 提供了與 NoSQL 相同的可擴(kuò)展性,而且仍基于關(guān)系模型,還保留了極其成熟的 SQL 作為查詢語言,保證了ACID事務(wù)特性。
簡單來講,NewSQL 就是在傳統(tǒng)關(guān)系型數(shù)據(jù)庫上集成了 NoSQL 強(qiáng)大的可擴(kuò)展性。
傳統(tǒng)的SQL架構(gòu)設(shè)計(jì)基因中是沒有分布式的,而 NewSQL 生于云時(shí)代,天生就是分布式架構(gòu)。
NewSQL的主要特性:
- SQL 支持,支持復(fù)雜查詢和大數(shù)據(jù)分析。
- 支持 ACID 事務(wù),支持隔離級別。
- 彈性伸縮,擴(kuò)容縮容對于業(yè)務(wù)層完全透明。
- 高可用,自動(dòng)容災(zāi)。
三種SQL的對比
Old SQL | NoSQL | NewSQL | |
---|---|---|---|
關(guān)系模型 | √ | × | √ |
SQL語句 | √ | × | √ |
ACID | √ | × | √ |
水平擴(kuò)展 | × | √ | √ |
大數(shù)據(jù) | × | √ | √ |
無結(jié)構(gòu)化 | × | √ | × |
TiDB由來
著名的開源分布式緩存服務(wù) Codis 的作者,PingCAP聯(lián)合創(chuàng)始人& CTO ,資深 infrastructure 工程師的黃東旭,擅長分布式存儲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),開源狂熱分子的技術(shù)大神級別人物。即使在互聯(lián)網(wǎng)如此繁榮的今天,在數(shù)據(jù)庫這片邊界模糊且不確定地帶,他還在努力尋找確定性的實(shí)踐方向。
直到 2012 年底,他看到 Google 發(fā)布的兩篇論文,如同棱鏡般,折射出他自己內(nèi)心微爍的光彩。這兩篇論文描述了 Google 內(nèi)部使用的一個(gè)海量關(guān)系型數(shù)據(jù)庫 F1/Spanner ,解決了關(guān)系型數(shù)據(jù)庫、彈性擴(kuò)展以及全球分布的問題,并在生產(chǎn)中大規(guī)模使用?!叭绻@個(gè)能實(shí)現(xiàn),對數(shù)據(jù)存儲領(lǐng)域來說將是顛覆性的”,黃東旭為完美方案的出現(xiàn)而興奮, PingCAP 的 TiDB 在此基礎(chǔ)上誕生了。
TiDB社區(qū)版和企業(yè)版
TiDB分為社區(qū)版以及企業(yè)版,企業(yè)版收費(fèi)提供服務(wù)以及安全性的支持
TIDB核心特性
水平彈性擴(kuò)展
通過簡單地增加新節(jié)點(diǎn)即可實(shí)現(xiàn) TiDB 的水平擴(kuò)展,按需擴(kuò)展吞吐或存儲,輕松應(yīng)對高并發(fā)、海量數(shù)據(jù)場景
得益于 TiDB 存儲計(jì)算分離的架構(gòu)的設(shè)計(jì),可按需對計(jì)算、存儲分別進(jìn)行在線擴(kuò)容或者縮容,擴(kuò)容或者縮容過程中對應(yīng)用運(yùn)維人員透明。
分布式事務(wù)支持
TiDB 100% 支持標(biāo)準(zhǔn)的 ACID 事務(wù)
金融級高可用
相比于傳統(tǒng)主從 (M-S) 復(fù)制方案,基于 Raft 的多數(shù)派選舉協(xié)議可以提供金融級的 100% 數(shù)據(jù)強(qiáng)一致性保證,且在不丟失大多數(shù)副本的前提下,可以實(shí)現(xiàn)故障的自動(dòng)恢復(fù) (auto-failover),無需人工介入
數(shù)據(jù)采用多副本存儲,數(shù)據(jù)副本通過 Multi-Raft 協(xié)議同步事務(wù)日志,多數(shù)派寫入成功事務(wù)才能提交,確保數(shù)據(jù)強(qiáng)一致性且少數(shù)副本發(fā)生故障時(shí)不影響數(shù)據(jù)的可用性。可按需配置副本地理位置、副本數(shù)量等策略滿足不同容災(zāi)級別的要求。
實(shí)時(shí) HTAP
TiDB 作為典型的 OLTP 數(shù)據(jù)庫,同時(shí)兼具強(qiáng)大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP
解決方案,一份存儲同時(shí)處理 OLTP & OLAP 無需傳統(tǒng)繁瑣的 ETL 過程
OLTP&OLAP
- OLTP(Online Transactional Processing) 即聯(lián)機(jī)事務(wù)處理,OLTP 是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的主要應(yīng)用,主要是基本的、日常的事務(wù)處理,記錄即時(shí)的增、刪、改、查,比如在銀行存取一筆款,就是一個(gè)事務(wù)交易。
聯(lián)機(jī)事務(wù)處理是事務(wù)性非常高的系統(tǒng),一般都是高可用的在線系統(tǒng),以小的事務(wù)以及小的查詢?yōu)橹?#xff0c;評估其系統(tǒng)的時(shí)候,一般看其每秒執(zhí)行的Transaction以及Execute SQL的數(shù)量。在這樣的系統(tǒng)中,單個(gè)數(shù)據(jù)庫每秒處理的Transaction往往超過幾百個(gè),或者是幾千個(gè),Select 語句的執(zhí)行量每秒幾千甚至幾萬個(gè)。典型的OLTP系統(tǒng)有電子商務(wù)系統(tǒng)、銀行、證券等,如美國eBay的業(yè)務(wù)數(shù)據(jù)庫,就是很典型的OLTP數(shù)據(jù)庫。 - OLAP(Online Analytical Processing) 即聯(lián)機(jī)分析處理,是數(shù)據(jù)倉庫的核心部心,支持復(fù)雜的分析操作,側(cè)重決策支持,并且提供直觀易懂的查詢結(jié)果。典型的應(yīng)用就是復(fù)雜的動(dòng)態(tài)報(bào)表系統(tǒng)在這樣的系統(tǒng)中,語句的執(zhí)行量不是考核標(biāo)準(zhǔn),因?yàn)橐粭l語句的執(zhí)行時(shí)間可能會非常長,讀取的數(shù)據(jù)也非常多。所以,在這樣的系統(tǒng)中,考核的標(biāo)準(zhǔn)往往是磁盤子系統(tǒng)的吞吐量(帶寬),如能達(dá)到多少M(fèi)B/s的流量。
提供行存儲引擎 TiKV、列存儲引擎 TiFlash 兩款存儲引擎,TiFlash 通過 Multi-Raft Learner 協(xié)議實(shí)時(shí)從 TiKV 復(fù)制數(shù)據(jù),確保行存儲引擎 TiKV 和列存儲引擎 TiFlash 之間的數(shù)據(jù)強(qiáng)一致。TiKV、TiFlash 可按需部署在不同的機(jī)器,解決 HTAP 資源隔離的問題。
云原生的分布式數(shù)據(jù)庫
TiDB 是為云而設(shè)計(jì)的數(shù)據(jù)庫,同 Kubernetes 深度耦合,支持公有云、私有云和混合云,使部署、配置和維護(hù)變得十分簡單。TiDB 的設(shè)計(jì)目標(biāo)是 100% 的 OLTP 場景和 80% 的 OLAP 場景,更復(fù)雜的 OLAP 分析可以通過 TiSpark 項(xiàng)目來完成。 TiDB 對業(yè)務(wù)沒有任何侵入性,能優(yōu)雅的替換傳統(tǒng)的數(shù)據(jù)庫中間件、數(shù)據(jù)庫分庫分表等 Sharding 方案。同時(shí)它也讓開發(fā)運(yùn)維人員不用關(guān)注數(shù)據(jù)庫 Scale 的細(xì)節(jié)問題,專注于業(yè)務(wù)開發(fā),極大的提升研發(fā)的生產(chǎn)力。
高度兼容 MySQL
兼容 MySQL 5.7 協(xié)議、MySQL 常用的功能、MySQL 生態(tài),應(yīng)用無需或者修改少量代碼即可從 MySQL 遷移到 TiDB。
提供豐富的數(shù)據(jù)遷移工具幫助應(yīng)用便捷完成數(shù)據(jù)遷移,大多數(shù)情況下,無需修改代碼即可從 MySQL 輕松遷移至 TiDB,分庫分表后的 MySQL 集群亦可通過 TiDB 工具進(jìn)行實(shí)時(shí)遷移。