前段時(shí)間,我和TiDB的總設(shè)計(jì)師黃東旭連了個(gè)麥,聊了聊數(shù)據(jù)庫的發(fā)展趨勢(shì),這中間,收獲頗多。
下面是的一個(gè)總結(jié),希望能給你一些啟發(fā)。
1、有人問,MySQL和TiDB的區(qū)別是什么。簡單來說,這不是一個(gè)時(shí)代的東西,數(shù)據(jù)庫的發(fā)展,大概有三個(gè)階段:
-
第一個(gè)階段的的代表是以閉源Oracle、開源MySQL為代表的關(guān)系型數(shù)據(jù)庫;
-
第二個(gè)階段是以HBase、MongoDB為代表的NoSQL數(shù)據(jù)庫;
-
第三個(gè)階段是以Google 的F1和Spanner、阿里的OceanBase 和 PingCAP 的 TiDB為代表的NewSQL。
2、NoSQL 只是互聯(lián)網(wǎng)公司在面對(duì)大并發(fā)量的新業(yè)務(wù)時(shí)的過度狀態(tài)。2008年左右吧,互聯(lián)網(wǎng)公司在數(shù)據(jù)存儲(chǔ)方面有三個(gè)挑戰(zhàn):
-
第一,數(shù)據(jù)量比之前多了很多倍;
-
第二,并發(fā)量上來了;
-
第三,非結(jié)構(gòu)化數(shù)據(jù)開始多起來了。
同時(shí),大家又發(fā)現(xiàn)MySQL一些影響性能的特性,他們可能用不上,所以這就催生了NoSQL數(shù)據(jù)庫的誕生。3、但你要知道,NoSQL 基本都不支持跨行事務(wù)。比如你要做一個(gè)轉(zhuǎn)賬的功能,實(shí)現(xiàn)難度就很大。這也是為什么NoSQL 并沒有在傳統(tǒng)公司普及的關(guān)鍵原因之一。但為啥互聯(lián)網(wǎng)公司能普及呢?因?yàn)樗麄兊墓こ處焾F(tuán)隊(duì)比較強(qiáng),NoSQL丟掉的特性用某些工具也能搞定。4、倒回去看,在支持事務(wù),以及SQL的前提下,傳統(tǒng)關(guān)系型數(shù)據(jù)庫的擴(kuò)展方案基本只有業(yè)務(wù)層分庫分表和中間件等過渡方案。后來以 Google 為代表的互聯(lián)網(wǎng)公司開始探索將關(guān)系型數(shù)據(jù)庫和分布式存儲(chǔ)技術(shù)結(jié)合,發(fā)展出一種新型的分布式關(guān)系型數(shù)據(jù)庫,代表作品就是 Google F1 和 Google Spanner。也就是NewSQL。5、從性能上說,PostgreSQL肯定比MySQL更好。但是為什么MySQL更火呢?前MySQL的產(chǎn)品經(jīng)理說,原因之一就是因?yàn)镸ySQL的用戶體驗(yàn)更好,比如,MySQL的安裝步驟,就是比PostgreSQL少一步。所以,東旭說,很多人覺得我性能比你好,比你快1s,但是你用戶體驗(yàn)不好,這樣的優(yōu)勢(shì)就會(huì)被抵消。得用做互聯(lián)網(wǎng)產(chǎn)品的思維來做開源產(chǎn)品。6、怎么理解CAP定理?CAP中,C代表一致性,A代表可用性,P代表分區(qū)容忍,分區(qū)容忍翻譯的不好,你就直接理解為數(shù)據(jù)分片就OK了。閉上眼睛,你想想,永遠(yuǎn)的A不可能實(shí)現(xiàn),A就像永動(dòng)機(jī)一樣,理論存在,所以A追求的是HA(高可用)。而我們是可以追求100%的C和P的。CAP定理的發(fā)明人Eric Brewe曾經(jīng)承認(rèn)CAP是一個(gè)容易誤導(dǎo)人的而且過于簡化的模型。在2000年,CAP的意義在于讓大家開始討論關(guān)于分布式系統(tǒng)的取舍。但CAP并不是一個(gè)精確的理論,他僅僅用于指方向。7、基于云的企業(yè)數(shù)據(jù)平臺(tái)Snowflake很值得研究,東旭認(rèn)為Snowflake才是真正的云原生技術(shù),甚至,他一度覺得,不能被私有部署的技術(shù)才是真正的云原生技術(shù)(僅僅代表個(gè)人觀點(diǎn))。如果你對(duì)云技術(shù)的未來感興趣,建議可以研究下硅谷企服新貴Snowflake。8、云的出現(xiàn),將 IaaS 的基礎(chǔ)能力變成了軟件可復(fù)用的單元,我可以在云上按需租用算力和服務(wù)。云原生的數(shù)據(jù)庫就是基于這樣的場景設(shè)計(jì)出來的,所以東旭說“不能被私有化部署”。9、如果說Snowflake是趨勢(shì)的話,那他基本代表了幾個(gè)關(guān)鍵詞。第一,彈性計(jì)算,基于云的能力設(shè)計(jì)你的軟件。第二,存儲(chǔ)計(jì)算分離。第三,基于實(shí)際消耗量的定價(jià)方式。10、推薦三本書,《UNIX編程藝術(shù)》《克萊因壺》《隨機(jī)漫步的傻瓜》。
-
第一本是技術(shù)書,東旭說現(xiàn)在他做TiDB的時(shí)候,更能深切感覺到UNIX的大神們的編程智慧;
-
第二本是本科幻小說,單純就是很有意思;
-
第三本是幫你辯證性思考,多視角看問題;
如果你對(duì)數(shù)據(jù)庫的趨勢(shì)感興趣,8月18日(周三)晚上8點(diǎn),我會(huì)連麥字節(jié)跳動(dòng)數(shù)據(jù)庫技術(shù)負(fù)責(zé)人張雷,和他聊聊這些年數(shù)據(jù)庫的技術(shù)趨勢(shì)。點(diǎn)擊下方的「預(yù)約」按鈕,就可以直接預(yù)約啦,直播是在微信的視頻號(hào)。“丘吉爾說,你能看到多遠(yuǎn)的過去,就能看到多遠(yuǎn)的未來?!蔽覀儠?huì)聊到數(shù)據(jù)庫的發(fā)展歷史,以讓你理解數(shù)據(jù)庫這一路的迭代。