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