讓拆庫拆表見鬼去吧!MySQL擴充套件新玩法
序:隨著資料量的激增,單機資料庫存不下了,怎麼辦?這幾乎是所有網際網路公司都會遇到的問題。在過去,一直沒有一個優雅的解決方案從根本上解決傳統關係型資料庫擴充套件性問題,而通常的做法是業務層要把程式碼改個遍,如果業務上已經用了MySQL,沒有辦法,只能去拆庫拆表,動中介軟體,而這個過程對DBA是痛苦的,就算不死也要脫層皮。
最近,一款國人主導開發的開源資料庫專案在國內外混的風生水起,不僅在GitHub上被推到了Go Trending的頭條,並且累積 Star 數已近 10000。而在國內,它在被技術愛好者模仿DB-Engine製作出的國產資料庫排行榜中,位居第二,它就是開源分散式關係型資料庫TiDB。
本期訪談嘉賓:
PingCAP聯合創始人兼CTO黃東旭。熱愛畫畫,美劇,搖滾樂,但更愛寫程式碼的狂熱開源愛好者,知名開源軟體作者,代表作品分散式 Redis 快取方案Codis,以及分散式關係型資料庫 TiDB。
與黃東旭的會面一波三折,因為各自時間原因及突發事件,最終採訪約定在了PingCAP駐地,東昇科技園晚上19點。其實,因為DTCC大會的關係,雖然很早,我就與作為大會嘉賓的他互添了微信,但與他真正見面,這卻是頭一次。
夜幕下的園區少了些許喧囂,清靜了許多。剛走進入PingCAP公司的大門,我一眼就看到了橫躺在地下襬弄手中平板電腦的他,身為CTO,他似乎並不太在自己的形象,反而和員工打成一片。長髮、T恤、牛仔褲,與微信中的照片一模一樣,似乎任何時候,他都是這副打扮,識別率非常高。
PingCAP公司並不大,工位也不多,雖然已經是晚上7點早該下班了,但還有些工位上依然還有人在辦公,臉上還洋溢著笑容,絲毫看不出加班的鬱悶與不爽,有的小聲交談,有的敲擊鍵盤,有的在撥打電話訂餐,似乎在家中辦公那樣輕鬆自在,一股非常純粹濃郁的工程師文化向我撲面而來。
黃東旭告訴我,公司目前大概有50多人,其中八成是工程師,並有三分之一的同事是分散在祖國各地,公司在北京、上海、廣州均有辦公室。作為崇尚開源精神的公司,上班不需要打卡,並允許員工在家辦公,遠端辦公,氛圍自由而開放。兩個小時的採訪過程中,愛寫程式技術出身的他,在談到資料庫技術時,眼中充滿了狂熱的光芒。
TiDB誕生源自MySQL擴充套件的切膚之痛
事實上,無論是在前東家微軟、網易,還是豌豆莢,黃東旭一直都在從事與基礎軟體領域相關的工作,如分散式儲存和分散式系統,在這個過程中他敏銳的觀察到,傳統關係型資料庫擴充套件性痛點,而這源自經常拆庫拆表的他,有著切膚之痛。
隨著資料量的激增,單機資料庫存不下了,怎麼辦?這幾乎是所有網際網路公司都會遇到的問題。但在過去,一直沒有一個優雅的解決方案從根本上解決傳統關係型資料庫擴充套件性問題,通常的做法是業務層要把程式碼改個遍,如果業務上已經用了MySQL,沒有辦法,只能去拆庫拆表,動中介軟體,而這個過程對DBA是痛苦的,就算不死也要脫層皮。既然沒有優雅的解決方案,那為什麼我們不做一個?黃東旭反問自己。創業的動機由此而生, 並與另外兩個創始人劉奇、崔秋一拍即合, PingCAP的TiDB 在此基礎上誕生了。
TiDB最初的靈感來自於Google Spanner/F1論文, 有了理論基礎,想法很快就落地成產品,並取名TiDB,Ti是元素週期表中的一種元素,高階金屬材料,既輕又結實。在黃東旭看來,Ti能充分體現資料庫很多特點,而且還很輕,不像Hadoop那樣重。
TiDB與MySQL完全相容,MySQL應用無需修改便可直接執行。支援包括傳統 RDBMS 和 NoSQL 的特性,可以隨著資料增長而無縫水平擴充套件,只需要透過增加更多的機器來滿足業務增長需求,應用層可以不用關心儲存的容量和吞吐。用他的話說就是“會自生長”。
TiDB火爆開源社群,定位決定高度!
技術出身的黃東旭,同時也具備產業判斷的視野和格局。中國不缺好的工程師,中國人一樣可以做出世界一流的產品。而其中的關鍵,在於切入方向的選擇,而不是工程師的問題。他認為,眼光,一定要放眼全球。而最觸動我的一句話:“定位,決定了你能達到的高度,當在這個領域已經有了很多非常強壯的競爭對手,而且成為了一個事實標準,你是很難搬倒對方的,先入為主,先得天下為王。”
大資料時代到來,隨著資料量爆發式的增長,資料庫這層的基礎設施卻並沒有跟上,這給了PingCAP一個很好的機會。分散式資料庫技術由於其優良的線性橫向擴充套件能力和良好的故障隔離性,近幾年也受到了普遍關注。市場上不僅出現了很多新興的分散式資料庫引擎,老牌的資料庫也在分散式技術上投入重兵,加緊部署。但這些分散式解決方案都是商業的,並且這一領域還沒有形成一個事實的標準,除了積累外,這是PingCAP切入這一領域的主要理由,更為關鍵的是,優雅的開源分散式關係型資料庫解決方案目前一個都沒有,這在黃東旭看來就是填補空白的機會。
而他與他的團隊堅信,TiDB具備成為一個事實標準的潛質,其次是這個方向的使用者足夠多。他直言不諱道,MySQL的使用者理論上都會是其客戶,這個天花板足夠高,市場足夠大。
開源才是基礎軟體出路
選擇開源這條路,並不是趕時髦也不是一時衝動,黃東旭有著自己的理解和洞察,在談到為何TiDB會選擇開源這種方式時,他說。基礎軟體領域閉源並不是最好的選擇,如果是閉源的,需要鋪很大的銷售團隊,去讓客戶瞭解你。開源能讓客戶更容易瞭解你,更多地touch到你的使用者,並在生產環境中去磨練你的產品。他特別強調,開源並不是等於免費,開源只是讓使用者能快速的瞭解我們的產品。
TiDB能成為GitHub上的明星專案,似乎在黃東旭意料之中,較為淡然,之所以能在國內國外取得好的反響,他認為,不僅是TiDB本身理論比較新,解決了企業及廣大傳統關係型資料庫擴充套件的痛點,更為關鍵的是,PingCAP是在認真的做這件事情。
在談到應用案例時,黃東旭說,目前,已經有上市遊戲公司在大規模的採用TiDB來作為其遊戲端儲存和大資料分析的平臺,在金融行業,如徵信方面,也有客戶大資料平臺跑在TiDB上。但他並沒有透露具體客戶名稱。
獨家揭秘,TiDB今年2大重要更新!
在談到TiDB今年計劃和重大更新時,黃東旭透露,大的功能特性主要有2個:
一、TiDB將會深度對接Spark SQL,Spark SQL可以說是目前網際網路資料實時分析標準方案,深度對接後,使用者就可以用Spark SQL在TiDB上做資料的查詢,這並不是把資料簡單的倒騰到Spark裡面,而是在儲存引擎上,讓Spark SQL把它的執行計劃推下來,然後做分散式計算,這的好處在於,一份儲存,多個可插拔查詢引擎(TiDB / Spark SQL),既可以用TiDB這邊MySQL協議查詢,同時可以用Spark作分析,增強了TiDB在OLAP上分析場景上的能力。
二、新增文件型資料的使用介面支援,MySQL在5.7.12的xplugin裡面的document store,類似MongoDB訪問MySQL,不需要建表,類似Schema特性,TiDB也將新增了類似的支援。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70018962/viewspace-2901933/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Git 倉庫拆拆拆Git
- 分散式資料庫拆表拆庫的常用策略分散式資料庫
- C 擴充套件庫 – mysql API套件MySqlAPI
- 單隊玩法擴充套件多隊套件
- 擴充套件表套件
- 讓面試中的Ajax、跨域和前端演算法見鬼去吧面試跨域前端演算法
- 第36期:MySQL 原生水平拆表MySql
- Webpack 之常見見招拆招Web
- webpack4之splitchunksPlugin拆拆拆--專案實踐WebPlugin
- 擴充套件表空間套件
- 瘋狂拆拆樂:玩法簡單易於上手的卡牌小遊戲如何做到策略多樣?遊戲
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- 表空間自動擴充套件 AUTOALLOCATE 的擴充套件規律套件
- MySQL InnoDB的索引擴充套件MySql索引套件
- php mysql擴充套件安裝PHPMySql套件
- MySql 擴充套件儲存引擎MySql套件儲存引擎
- PHP 擴充套件 Mysql 與 MysqliPHP套件MySql
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- DLR 的擴充套件庫 Dynamitey套件MIT
- 高效擴充套件工具讓 VS Code 如虎添翼套件
- MySQL - 擴充套件性 2 擴充套件策略:氪金氪腦任君選MySql套件
- INFORMIX表的預設初始擴充套件、下一個擴充套件資料塊以及一個表允許的最大擴充套件數。ORM套件
- 表單驗證使用擴充套件套件
- 讓前端也能填充資料庫的 Reach Seeder 擴充套件前端資料庫套件
- mysql空間擴充套件 VS PostGISMySql套件
- 資料庫擴充套件表設計過程記錄資料庫套件
- MySQL資料庫對GROUP BY子句的功能擴充套件(2)MySql資料庫套件
- MySQL資料庫對GROUP BY子句的功能擴充套件(1)MySql資料庫套件
- .Net core Worker Service 擴充套件庫套件
- php mysqli擴充套件庫的使用PHPMySql套件
- .Net3.5新特性-擴充套件方法套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 雜湊表擴充套件—點陣圖套件
- 報表開發之擴充套件GROUP BY套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件