歡迎光臨
每天分享高質量文章

【大講堂講師專訪】張甦:資料庫選型需因地制宜,MongoDB與MySQL絕非替代

雲和恩墨大講堂每週都會邀請業內外大咖進行一小時的線上主題分享,本期我們邀請到了恩墨學院張甦老師,帶來題為《MongoDB經典案例分析》的分享,敬請期待。

在開課前,大講堂有幸採訪了張老師,瞭解他的技術成長之道。

 

張甦

張甦,資料庫專家,51CTO專家博主,曾就職於某大型電商平臺,汽車類網站網等大型網際網路公司。10年網際網路線上處理及培訓經驗,專註於MySQL資料庫,對MongoDB、Redis等NoSQL資料庫有深入研究,著有《MySQL王者晉級之路》、《MongoDB運維實戰》。

 


 

在訪談過程中我們發現,張甦不是想象中嚴謹的講師或是悶騷的技術男,更像一個大男孩兒,他叫自己甦哥Sugar,他說要做個快樂做技術的網紅。多年的工作並沒有打消他對技術的熱忱,他對自己未知的領域仍然充滿好奇,對於和夥伴們一起踏上新旅程仍舊充滿期待。

從一個普通的MySQL運維DBA精通多種資料庫的培訓講師、開源產品總監、技術圖書作者……接下來就讓我們一起來瞭解一下這個大男孩兒與他的技術之路吧:

自己

Character

 

從MySQL運維DBA出發

成功轉型的路上我做了什麼

Q:請先和大家介紹一下您,以及您感興趣的技術是?

Answer:很感謝恩墨大講堂邀請我來給大家分享一個技術主題。我收到邀請那一刻,相當開心和興奮。因為我本人特別愛講、愛寫、更愛快樂地做技術,而且勵志要成為IT界的網紅(因為本來長得也很帥),希望能夠把做技術的這股子快樂勁兒傳遞給大家。

下麵先跟大家詳細聊聊我自己,我叫張甦(su,第一聲),好多人不認識這個甦字,經常把它分開讀,以至於從小到大,伴隨著叫我名字的聲音裡都是張更生(那些人簡直太沒文化哈)。我的網名叫sugar,意為糖,就是希望今後分享的文章和課程,都可以甜到各位老鐵們,相當要有溫度的那種。

而立之年的我,在北京西城區一個衚衕裡長大,愛國、創新、包容、厚德是我們大北京的精神。凡事兒必須得做到有裡兒有面兒。在這裡,我藉此機會,發表下我的聲音:歡迎五湖四海的兄弟們,來北京,來雲和恩墨找張老師學習技術,來的都是客,北京歡迎大家。

從小我特別喜歡足球,夢想長大之後成為北京國安足球隊的一員,能夠馳騁在北京工人體育場,為北京國安隊效力。壓根兒從來就沒有想過今後會從事技術類資料相關的工作,因為我更喜歡和人打交道。

直到大學畢業,我的計算機導師推薦我學習Linux,從事資料庫相關的工作,DBA(資料庫工程師)這個職業才第一次出現在我的視野裡。於是一畢業就很順利地做了MySQL DBA(MySQL是一款開源資料庫,在DB engine中排名第二,在開源資料庫中排名第一)。由於當時資料庫知識太淺薄,在剛開始時真是度日如年,極其痛苦,曾多次想要放棄,但心裡總認為我做的這份工作是高科技,一定要堅持下來,讓別人羨慕我:)。

經歷一番波折平緩度過適應期之後,2014年又接觸了一款資料庫叫MongoDB(目前DB engine排名中位列第五,NoSQL中排名第一)。從此這兩款資料庫我就一起並駕齊驅一起學習到至今。

張甦在MongoDB年會上進行主題演講

我很瞭解我自己,我是孔雀型性格,非常善長演講和表現自己。我認為何為“技術”?技,就是我們所學習到該領域的知識;術,就是要把自己所學習到的知識也好,經驗也罷,傳播出去,讓更多的人瞭解學習它,這才是真正意義上的開源精神。正因為這樣,我之後毫不猶豫地開啟了自己的資料培訓教育之路。

從之前的DB Leader,突然變成了同學們口中的張老師。一口一個張老師,張老師的叫著,哎喲剛開始還真不適應!從小我就煩老師,幼小的心靈被傷害了多次,嚴格而又不苟言笑的標簽是他們的專屬。既然身份有所改變,又承擔著開源資料庫產品總監的工作,就要盡職盡責、盡善盡美地完善好產品教學工作,讓更多的兄弟和同學們瞭解開源資料庫,瞭解大資料。如果我非要有個人設的話,那就是陽光帥氣,熱愛演講,熱愛技術傳播的佈道師。喜歡快樂地做技術,把技術更加生活化的傳播出去。

 

Q:您生命中有沒有稱得上是決定性的時刻,也就是使您走上技術這條路的事情?

A:其實我一直覺得有一句話特別有道理,碌碌無為等於死。

剛開始決定要做技術這行的時候,就是覺得這個行業是高科技,說起來特別牛,能夠被人羨慕,還能掙很多錢,有錢買房、買車、娶媳婦(沒車沒房在北京,您就別結婚了,丈母孃不同意)並能讓父母過上好日子。知識改天命運,技術成就夢想。因為我家庭不算富裕,父母從小把我養大,供我上學。男人必須得拼搏一把,回饋社會可能太大,至少要對得起父母對你的期望。所以談不上什麼決定性時刻,沒想太多空虛的東西,或者沒有那麼多遠大的抱負,就是為了家庭,有一股子向前,不認輸的勁兒頭。

 

Q:您認為是什麼使您深深地投入這個領域?

A:是這樣,你別管從事什麼職業,只要真正的對它感興趣,喜歡它或者愛它,你都能靜下心來,全心身投入,興趣太重要了。

有好多兄弟們,平時和我聊天說:“我真的對技術沒興趣,每天干的都不是自己喜歡的工作,但迫於生活的壓力,為了有個穩定收入只好繼續忍下去。”我想這個可能是很多同學們的心裡所想。包括我自己都有。我承認在技術這個領域裡,絕大多數時候是比較枯燥乏味的,但我們要善於調解自己,認清自己,發現自己身上的優點。於我來說,特別不喜歡某類技術文章或者書籍中那些過於概念性的話術,看完之後,真的是一點興趣都沒有,絕對不會再看它第二眼(最後就當廢品賣了)。其實技術源於生活,伴隨在我們身邊的事物太多了。為什麼不能把複雜變為簡單呢?大家感興趣可以去看我在51CTO部落格(https://blog.51cto.com/sumongodb)上面看一下我的文章風格,我希望可以把技術這個枯燥的物體更加生活化,讓更多的人接受它,讓我們的技術領域更寬廣。但你只有興趣和想法還不行,貴在堅持,日復一日,每天都要充電學習新的知識,培養自己敏銳的嗅覺能力,對於新生技術要有自己的獨家的判斷能力。總結幾個關鍵詞就是興趣、發現、信念、執著和夢想。

 

Q:回顧您多年來的經歷,您最驕傲的事情是什麼?

A:近10年的技術工作及後期的教育培訓之路,最讓自己覺得驕傲的可能就是在2018年,一年內出版了自己的兩本技術類圖書。分別是《MySQL王者晉級之路》和《MongoDB運維實戰》。一本是帶你入門到MySQL資料庫領域中,另一本是拓展你資料庫的視野,學習NoSQL的相關內容。我希望把自己多年的教學和實戰經驗分享給大家,讓更多的初學者獲益,今後有機會還會出版更多的技術書籍。

Q:能否回顧一下自己的職業之路,談一談畢業後這些年在工作中的收穫和體驗。

A:其實仔細想想,這些年在工作中,除了收穫技術知識之外,還結實了圈中眾多德高望重的前輩(畢竟我還這麼年輕,都是我叔叔級別的了)。在我的MySQL之路中,周彥偉(我偉哥)對我有知遇之恩。蓋國強總、侯聖文哥在工作中,經常會用一個過來人的心態指出我的不足。如果我一個人在黑暗中行走,他們就是我的那束光,幫我照亮未來的路。

我的朋友們經常跟我說,張甦你選擇了一條發展前景很好的路,選擇比努力重要!其實我並不這麼認為,選擇是固然重要,但如果沒有努力的付出,你連選擇的機會都沒有。我也想告訴各位兄弟們,當我們埋頭苦幹研究技術的時候,不妨帶著一種走出去的想法,多參加一些技術大會,多結交一些圈中的前輩,從他們身上所學習到經驗和技術觀點,是你從書本上永遠得不到的知識財富。

觀點

Viewpoint

資料庫選型需因地制宜

MongoDB與MySQL絕非替代

 

Q:此前,關於NoSQL和SQL之爭非常激烈,而您一直對二者保持著非常高的關註,能否分享您對二者的理解,以及隨著大資料和雲端計算發展現在的情況是怎樣的?

A:其實所謂NoSQL和SQL之爭都是針對不同的應用場景炒起來的。

經常也會有同學問到我:“張老師,MongoDB 4.0已經GA,而且支援多檔案的事務處理了。那是不是就可以替代MySQL了?”根本不存在誰會替代誰,只是每個資料庫有它自己最合適的適用範圍罷了。

下麵我簡單聊聊對於這個之爭的理解,先說說NoSQL,它的全名叫Not Only SQL。這個概念在早期提出。在2009年相對較熱的NoSQL指的是非關係資料庫,而我們平時使用的都是關係資料庫。就像我們常用的Oracle、MySQL、SQL Server,這些資料庫一般用於儲存重要資訊,並且在處理普通業務時沒有問題。然而,隨著Internet的快速發展,傳統的關係資料庫無法應對超大規模、大流量和高併發,之後NoSQL才逐漸發展起來。

  • 從儲存結構上來看

關係資料庫(SQL)對應於結構化資料。資料表預先定義結構(列定義),結構描述資料的形式和內容,這對資料建模至關重要。雖然預定義結構帶來了可靠性和穩定性,但修改這些資料更加困難。NoSQL資料庫基於動態結構,使用和非結構化資料。由於NoSQL資料庫是動態結構,因此可以輕鬆適應資料型別和結構的變化。

  • 從儲存擴充套件角度出發(這可能是兩者之間最大的區別)

關係資料庫是垂直擴充套件,這意味著要提高處理能力,需要使用速度更快的計算機。由於資料儲存在關係表中,因此操作中的效能瓶頸可能涉及多個表,需要透過提高計算機效能來剋服。雖然有很大的擴充套件空間,但最終會達到縱向擴張的上限。 NoSQL資料庫被擴充套件,其儲存自然分佈,可以透過向資源池新增更多常見資料庫伺服器來共享負載,MongoDB與MySQL絕非替代。

 

Q:目前NoSQL資料庫中具有很高流行度是MongoDB,相較於其他的NoSQL有什麼特別之處?

A:其實在NoSQL中與MongoDB可以對比的就是Redis和MemCache了。相比於這兩者MongoDB有以下優勢:

  1. 具有更高的寫入負載,MongoDB具有更高的插入速度;

  2. 處理大型單表時,資料表太大時很容易拆分表;

  3. 高可用性,設定M-S不僅方便而且速度非常快,MongoDB還可以快速實現具有、安全性和自動化的節點(資料中心)故障轉移;

  4. 快速查詢,MongoDB支援2D空間索引,如管道,因此您可以快速準確地從指定位置獲取資料。 MongoDB會在啟動後將資料庫中的資料作為檔案載入到記憶體中。如果記憶體資源非常豐富,這將大大提高資料庫的查詢速度;

  5. 非結構化資料突發,增加列數可能會在某些情況下鎖定整個資料庫,或者增加負載並導致效能下降。由於MongoDB的資料結構樣式較弱,新增新欄位不會影響舊表。整個過程將非常快。

Q:可否簡單分享一下MongoDB的適用場景?目前有哪些經典的案例?

A:這個在我本期的分享《MongoDB經典案例分析》會具體講解。

 

Q:而您此前也寫了《MySQL王者晉級之路》一書,MySQL和MongoDB您更偏愛哪一個?可否詳細談一下這兩個資料的優缺點及區別。

A:這個問題問得相當有水平。2019年1月我在參加深圳MongoDB年終總結大會上說過,手心手背都是肉,我把這兩個資料庫當做我的兩個“兒子”一樣看待。只是MySQL比MongoDB先出生了一段時間,是個大哥哥而已。對誰都沒有偏愛,一碗水端平。因為在我最孤獨、最寂寞的時候,是它們給我帶來了最簡單的快樂。誰也不能抨擊它們的不好,要不作為家長的我,可不乾啊哈哈!

其實我覺得做技術就踏實做,沒必要說哪種資料庫不好,只是它的特點可能不適合你現有公司的使用場景而已。

 

 

瞭解MySQL資料庫:

MySQL資料庫特點:

同理來瞭解MongoDB及其特點:

MongoDB特點介紹:

MySQL使用得改寫率已經接近100%。從大型BAT,電商平臺,遊戲公司,甚至諸多傳統行業也無不例外都在往MySQL資料庫方向靠攏,達到逐漸壟斷的趨勢。對於MongoDB 的應用也已經滲透到各個領域,比如遊戲、物流、電商、內容管理、社交、物聯網、影片直播等。

  1. 遊戲領域:遊戲場景,使用 MongoDB 儲存遊戲使用者資訊,使用者的裝備、積分等直接以內嵌檔案的形式儲存,方便查詢、更新。

  2. 物流場景:使用MongoDB儲存訂單資訊,訂單狀態在運送過程中會不斷更新,以MongoDB內嵌陣列的形式來儲存,一次查詢就能將訂單所有的變更讀取出來。

  3. 社交場景:使用MongoDB儲存使用者資訊,以及使用者發表的朋友圈資訊,透過地理位置索引實現附近的人、地點等功能

  4. 物聯網場景:使用MongoDB儲存所有接入的智慧裝置資訊,以及裝置彙報的日誌資訊,並對這些資訊進行多維度的分析。

 

社群

 community

不忘初心

快樂乃堅持的動力源泉

 

Q:您在技術社群裡也是非常的活躍,在51CTO部落格上有多篇10W+的文章,對於技術人寫部落格這件事怎麼看?以及您有什麼心得和體會可分享?

A:這個問題,我覺得我太有發言權了。因為我的初心就是快樂地做技術,既然要快樂,就要各個方面都要快樂。

首先是讓大家從我的文章感受到快樂,所以很多文章中的靈感源自於遊戲、電視劇。如這篇文章《青銅到王者,快速提升你 MySQL 資料庫的段位!》就是出於我對王者榮耀這款遊戲的鐘愛以及情懷,《沒有宮廷內鬥,資料庫界的延禧攻略》是我特別喜歡看宮劇,延禧攻略電視劇中的勾心鬥角,希望在現實技術圈子裡,是不存在的。其實能有很多篇10w+的文章要先感謝51CTO這個非常好的技術平臺;其次就是讀者和兄弟們的厚愛,不斷訪問造就的結果。

Q:據悉,您也是MongoDB中文社群核心成員之一,在忙碌的工作裡,您是如何參與到社群工作的?

A:作為MongoDB中文社群的成員,也做了非常多的志願者工作,包括社群裡的技術分享和相關的活動支援。2019年的標的是希望能有更多的人瞭解MongoDB,更多的企業使用MongoDB,和社群裡的同仁們齊心協力,攜手一起維護MongoDB良好的生態環境。

不管自己的工作有多忙,心中對於MongoDB的那份愛,那份父親對於“兒子”的愛,再累再忙,也心甘情願。

MongoDB年會合影

Q:你對剛從事資料庫行業的新人以及想從事這行的人有什麼建議?

A:既然你誠心誠意地問了,那我就誠意誠意地給剛入行的兄弟們一些建議。我認為我們不管從事什麼行業,都要有一顆永不服輸的心和一顆永遠學習、堅持、進取的心,才能不被行業淘汰。尤其是我們這些做技術的老鐵們,技術更新換代之快始料未及。舉個例子來說,有同學跟我說,老師我們公司MySQL5.7還沒上呢,MySQL版本已經出到8.0了,我這速度趕不上啊。而且對於傳統運維DBA,我們必須把技術知識點打得更牢實一些,更精更專一些,因為相比於懂開發的DBA,我們毫無優勢可言。

我們也要有開源精神,MySQL、MongoDB、PG,包括TiDB我們都可以學習起來,這樣可以讓自己在這個行業更具優勢,讓自己立於不敗之地。18年有一部電影,觸及到了我的靈魂深處——《我不是藥神》。這部電影裡面那個患病的老奶奶對警察哀求說到:“能不能別抓那個藥販子,你沒得過病嗎,誰沒得過病啊,我們只能活著。”我們快樂地活在這個世上就要有意義的活著,不能浪費時間,活著做什麼呢?來和張老師學習各類資料庫的技術吧!付出就有回報,讓知識改變命運,資料成就未來。

 


 

以上是一個想做網紅的小甜哥——張甦的故事。想瞭解更多?敬請關註今晚的雲和恩墨大講堂(點選“閱讀原文”立即報名參與),Sugar帶你進入NoSQL的世界!

想要參加雲和恩墨大講堂分享並獲得採訪機會的請聯絡:陳一寧(yining.chen@enmotech.com),亦可以新增小助手微信:Enmoedu05,備註姓名+公司+職位+大講堂申請進入萬人DBA社群。

贊(0)

分享創造快樂