新數據庫時代,DBA 發展之路該如何選擇

語言: CN / TW / HK

近些年,數據庫在技術領域已發展成熟,諸多類別趨於細分,煥發新的活力。眾多新生數據庫誕生並以迅猛之勢打開市場,同時很多數據庫也以開源開放的形式佈局國內外市場。

對於全新階段的數據庫時代,一些新型數據庫對 DBA 在產品學習和業務場景體驗上 面臨新的挑戰,到底未來 該如何選新數據庫產品,DBA 的發展該如何選擇?

《對話 ACE》第二期活動便以“新數據庫時代,DBA 發展之路該如何選擇”為背景,邀請到 OceanBase 解決方案部總經理師文匯,dbaplus 社羣聯合發起人、競技世界資深 DBA、Oracle ACE 楊建榮,共同探索 “DBA 未來發展之路” 以此推動國產數據庫技術、人才及生態建設的發展。 (* 戳下方視頻看完整精彩回放~ 

直播乾貨滿滿

沒時間看視頻沒關係!

小編對直播的內容也進行了彙總分享

歡迎大家閲讀、收藏!

OceanBase 解決方案部總經理 師文匯

Q

您認為 DBA 更應該參與哪方面的工作(比如內核開發,調優,交付等)?

A

師文匯: 大概分幾個羣體。 對於 剛畢業的學生 ,鼓勵大家多做內核或者技術相關的開發工作,會有好的技術沉澱。數據庫其實是處在整個業務的最核心的環節,既能做深層次技術的積累,也可以將技術和業務更好地結合。無論學習內核,還是學習業務,對 DBA 都是有非常大的幫助和成長。

對於一些 資深的 DBA ,建議大家多瞭解行業或業務知識。比如説金融、運營商領域,如何使用數據庫,在業務場景下的核心痛點。對於 DBA 的發展,可以去做對外的商業化解決方案類,也可以架構師方面的工作。

數據庫開發方向,前期可以瞭解一些常見的開源數據庫,比如 OceanBase,其實是很好地學習數據庫的入手項目。可以基於其社區版做一些開放的 project,通過這樣一些實踐,快速的進入到社區一起交流學習。

對於 傳統數據庫的開發者 ,例如 MySQL 或者 PostgreSQL,如果投入到 OceanBase 分佈式的學習,天然是有很多優勢,比如在事務上的理解。OceanBase 是一個分佈式關係數據庫,通過學習,在分佈式、一致性協議等領域,是能夠幫助大家快速成長去完成自我提升的。大家如果願意動手花時間去學習和實踐,比如簡單的一些代碼修改和編譯,通過這些實踐,會有新的收穫。

Q

大家都在談內卷和躺平,關於這兩方面,能否給 DBA 們一些建議?

A

師文匯: 我同時也在負責螞蟻數據庫和存儲團隊,我覺得一方面從業務角度看,很多事情可以去做甚至可以做到更好。 比如説單 TB 存儲成本,每天在螞蟻都有上千 G 的這種業務需要發佈,我們如何能做到效率更高。 當你去仔細學習業務或者去理解系統的時候,總是能發現還有很多問題可以去完善。

什麼是內卷,以前大家經常説,做事情要去打破邊界,相互補位,其實從這個角度去做事情,就是真正的為了一個共同的目標,在大家都能接受的合理空間,去做一些跨領域或者跨邊界的事情。這樣的話可能對自己包括最終的業務結果都有很大的幫助。

另一個方面,對於自身成長來説,我覺得是不能躺平的。大家可以看到,整個社會和業務發展有多迅速。在 2014 年的時候,沒有這麼多的分佈式數據庫和國產數據庫,但是在過去的幾年裏,不光從數據庫,TP 或 AP,包括計算、算法,AI 領域,其實都湧現了很多新的技術和產品。這個時代其實在用很快的速度前進,我們必須保證自己的成長和競爭力。

Q

面對不同類型的 DBA 發展方向(顧問、技術支持、運維)未來如何正確選擇?

A

師文匯: 我覺得 DBA 是一個非常有競爭力的職業或者角色。我認識的很多 DBA 都去做創業了,而且發展都很好。那麼這些人是如何發展的這麼好?因為他非常懂業務和數據庫,面向最終的用户,瞭解用户的明確需求。所以能夠去幫助用户做一些設計,沉澱,行為,想法。還有的 DBA 選擇去做商業化解決方案或者交付,同樣可以做的很好,因為他們可以協助業務把解決方案幫助到例如傳統銀行核心系統的遷移的項目上。

對於 DBA 這個角色,下游是基礎技術,上游是業務,中間是數據。所以這個角色其實是有能力成為任何一個類型的人才。當你把基礎技術做紮實積累後,在職業上的選擇是非常多的。DBA 想成長應該做什麼,學習業務和技術,又要懂數據。最終的發展方向取決於自己想去做什麼,然後做好這些方向的積累。

dbaplus社羣聯合發起人 楊建榮

Q

國產數據庫的迅猛發展,產品眾多,對於 DBA,應該如何選擇才有利於個人職業發展?

A

楊建榮: 國產數據庫其實在行業內會打一些標籤,目前有幾個類別。

第一類是學院派數據庫,比如達夢,人大金倉等,偏軍工等傳統行業,相對應用比較廣泛。

第二類是互聯網派數據庫。基於互聯網場景的技術沉澱,比如 OceanBase、PolarDB、TDSQL 等,有互聯網原生的業務場景,能夠快速地孵化,有更多的技術沉澱。

第三類是創業派數據庫。比如像 TIDB、偶數等 NewSQL。創始人有海歸背景的技術專家去推動這樣的一些事情。

第四類是企業派數據庫。比如華為 GaussDB、中興的 GoldDB 等等。這些企業之前就有一些大量的客户羣體。然後在客户羣體內能去孵化和把產品推到整個產品線。所以國產數據庫近幾年,會比以前的流行度和佈局度更有落地性。

Github 上有一句話,就是説技術在某種程度上也有國界,或者説從做 DBA、做技術的角度來説,需要有一個護城河的概念,因為有技術壁壘,需要去提前規劃考慮。

Q

DBA 要做什麼才能做到像您這麼優秀,類似 ACE 這樣的身份?

A

楊建榮: 第一個就是 知識的積累。 好記性不如爛筆頭。我最早做 DBA 的時候是跨國企業,會有大量的數據庫問題,Oracle 這個方向,每天會集中處理很多異常、報警、報錯這種問題,相對來説很具體。但是會碰到一個困惑,雖然花很多時間解決了問題,但是最終解決的過程沒有經過思考,只是把問題解決了而已。所以在這個過程中,我發現可以在問題處理的過程沉澱下來,沉澱成一個比較流暢的記錄。在各類問題處理的過程中,會把潛在的因素都能夠很好地結合起來。

第二個就是 筆記的標準 。有利於知識積累,一方面節省自己的時間,另一方面就是讓過程更流暢。把整個操作的過程能夠通過類似博客文章的形式推送下來。

第三個 場景化應用 。很多知識點是碎片化的,不成體系的。這裏建議梳理成知識樹或知識體系。通過梳理的過程,會發現一些潛在因素。

第四個就是 有針對性的分享 。比如説所在公司比較小缺乏更多的場景。這種其實可以換一種思路,就是去幫別人解決問題,通過社區平台,甚至可以通過自己的博客等方式去幫助別人去解決問題。這個過程中,對個人的成長和收穫來説,是非常大的。

分享其實是先利己後利人的一個過程。一開始是為了方便自己,當積累一定量之後,對別人也有很大的幫助。之後在某些問題上會有一些共鳴,或者提供給別人一些幫助後,會有一種莫名的成就感等等。所以我覺得 ACE 這樣的頭銜或者身份,其實不是一個最核心的。是對於自己成長過程的一個標記。而且 ACE 的衡量的一個重要指標,就是對於整個技術社區的貢獻度。

Q

國內的 DBA 應該如何正確面對開源?

A

楊建榮: 我會分為三個視角。 第一個視角是對於像 OceanBase 這樣的國產數據庫廠商,包括技術貢獻者。 國內在早期形成的一種技術氛圍,就是沉默的大多數。 大家可能拿來去用一些數據庫,但是很難得到一些更有效的反饋。

所以近些年來會有比較大的變化。在數據庫的開源,包括在開源支持的態度上,從原來的被動接受或者拿來主義的模式到現在會去從各個角度去貢獻自己一些力量。這個維度從文檔 bug 或者社區協作上,都會有不同程度的體現。

開源重在生態的建設。生態建設是需要一定的時間,而且在質量上是不能打折扣的。另一方面原來聊開源可能就是免費開源,相對來説是比較中肯或者理想的一個狀態。但是現在去聊開源,他需要去做長期的準備,技術棧規劃。整個技術棧對於開源來説,會從原來完全開放的一種狀態,轉為一種就是長期規劃的過程。第三點是現在的公有云,對於 DBA 的發展方向也會有比較大的衝擊。因為公有云的本質是資源的池化,是一個去服務化的過程。對於很多企業隨着規模的發展,很多是需要私有云,或者説在性能、架構、對業務的服務支持上,需要有一些更有針對性的支持。

所以私有云方向上,我的建議是預留 60% 到 70% 比較成熟穩定的開源技術棧。預留 30% 到 40%,去做前瞻技術棧的規劃。在這個過程中,需要有深入的技術沉澱,對業務來説更平滑。但是公有云的方向,可能相對是更泛化的一個過程。因為基於公有云的雲原生數據庫,對於傳統數據庫方向上都會有一些挑戰。

我對開源的規劃是 28 原則,就是大部分的數據庫的選型或者使用,基於 RDS 為主基礎上,在業務成長相對來説比較成熟穩定的,或者有一些增長,跨域訪問等或更長久的規劃上,可能 20% 的比例去考慮雲原生數據庫。

Q

DBA 如何通過開源數據庫產品享受這一波紅利?

A

楊建榮: 我覺得可以提煉三點。

第一點是通過開源數據庫,包括分佈式數據庫。在某種微觀程度上,在面向高可用的難題上是能夠迎刃而解。或者説是一種輔助,包括在微觀數據庫方向上,其實會有一些 HA 的工具等等。但是在原生分佈式數據庫中,這種問題可能就不復存在了。在這個方向上,會提高服務的高可用能力。

第二點是選擇開源數據庫更多是數據庫的開源共存狀態,本質上會做很多場景的互補。比如剛才提到的,比如在 AP 領域,原來是做 TP 的方向上,可能在 AP 上需要做流轉或額外的一些流程。但是現在可能是做了一體化的方式,會有一種 HTAP 的場景。對於業務來説,相對來説會更容易更適配去接觸業務的迭代速度。

在這個方向上舉個例子,原來數據庫去做複雜的查詢,字段也非常多,可能在 MySQL5.7 有時候就有一些複雜的查詢,可能需要 30 分鐘。MySQL8.0 可能一分鐘就能成功。但使用 HTAP 的方案,發現可能只需要 1-2 秒就可以解決。所以通過這種方式在使用開源數據庫產品對很多研發同學來説,和使用的 MySQL 時一樣沒有太大的技術壁壘。所以在接觸的過程中,也會逐步信任和沉澱成為深度的客户。

第三點是開源數據庫產品的質量是有保證的。但是產品用得好不好,或者在用的過程中如何去更持續更有效的迭代。在社區包括反饋機制上,能夠去更好地形成一個閉環。

包括很多類似 OceanBase 的開源數據庫產品,不只是開發出了一個數據庫場景,讓大家去使用,實際是逐漸形成社區生態,在生態之下,可以讓整個的數據庫產品,包括功能、易用性、體驗上。用户都會提出不同角度的想法。所以對於開源數據庫的產品使用來説,無論是對於研發人員,包括開發數據庫內核的技術人員,是一個互補雙贏的狀態。

Q

DBA 在面臨業務變化的時候,如何快速實現技術和業務的轉型?

A

楊建榮: 第一個層面屬於未雨綢繆或長期規劃的過程。很多情況下,數據庫方案亟待解決的時候,再去想方案的話相對來説是一個延遲或者拖後的狀態。這樣就形成了惡性循環。在這種場景下,需要提前做一些未雨綢繆的事情。包括技術棧,以及提前和研發去溝通業務痛點,或潛在瓶頸。在這個過程中,可能方案 A 可以滿足。但是方案 A 在臨時可用的狀態下,會去沉澱方案 B,儘可能完成平滑替代的狀態,進而實現業務快速轉型,應對變化。

另外一個層面是大部分時候是基於業務場景需求去做一些設計和改進。然後業務場景的很多變化,也是逐漸演進的過程,所以在前期去接觸方案的時候,在一個特定的時間,肯定不是最好的方案。但是通過全盤考慮後,能夠在此基礎上去完善一個更合適的方案。

線上答疑解惑環節

Q

分佈式數據庫未來會全面取代傳統關係型數據庫嗎?分佈式數據庫未來形態會是HTAP嗎?

A

師文匯: 我的個人觀點是比較深信這件事的,目前阿里、螞蟻的核心繫統,包括網商銀行,海外的部分銀行和支付機構,OceanBase 已經賦能很多這樣的企業。 商業 化以後,目前數百+不同行業的客户,都選擇用分佈數據庫徹底取代傳統的關係數據庫,讓企業更加可控。 所以從案例實踐上,我認為分佈式數據庫是可以取代關係型數據庫的。

分佈式數據庫是誕生在互聯網和移動互聯網這個時代的,天生有後發優勢。針對這個方面做了很多設計,分佈式數據庫的未來形態會是 HTAP,舉一個例子,比如營銷系統,通常會圈定一些人羣,然後去思考這羣人是不是能夠產出更好的廣吿 ROI,於是就去做這樣一個實驗。傳統的數據庫可能要做ETL導數據,申請代理權限等這些會消耗掉很多時間,但 HTAP 數據庫,它其實是可以在這個數據上直接去做挖掘或者分析。就如創始人陽振坤老師分享一篇文章裏説的一樣,分佈式數據庫就像電動車特斯拉,代表着未來的發展趨勢,而 HTAP 是對數據庫整個行業的成本控制、效率提升,會有非常大的改觀。

Q

面對未來的各式各樣的新型數據庫,應該從哪幾個方面入手瞭解呢?

A

楊建榮: 新型數據庫的發展方向是基於大數據的 4V 背景,包括數據規模大、數據變化快、數據種類雜、數據價值密度低等等。在這個背景下,新型數據庫是一個相對新穎的技術體系。對於數據庫規模大,關聯的是分佈式數據庫管理系統等,比較有代表的如 OceanBase,Spanner,MongoDB 等等,都屬於這種新型數據庫的領域;數據變化比較快,在這個方向上提煉出來數據庫的一個分支,就是流數據庫管理系統,如 Aurora 等;另外兩個維度會小眾一點,或者説它的潛力和價值可能是待挖掘的一個狀態。如根據數據的種類會延伸出來兩個分支,一個分支是圖數據庫,比如 New4J,另外一個是這個時空數據庫 OceanRT,DITA 等;最後一個就是數據的價值密度比較低的背景,提出了眾包數據庫,相對來説更學術,或者還是在探索的階段,這個方向像 CDB、Qurk 等等,相對偏學術或者説待孵化的階段。

Q

DBA的職業發展方面,對於不會編程的DBA,是否應該花費精力選擇一種編程語言去學習呢?對於DBA轉型數據庫產品研發有哪些看法?

A

楊建榮: 我把兩個問題合起來回答一下。第一個問題是不會編程的DBA 他是否應該去學習一個編程語言?我的強烈建議是需要去學習的。

DBA 從職業發展上來説,可以分為五個維度:高可用的架構的能力、分佈式架構的能力、數據模型優化的能力、服務化建設的能力、資源規劃和治理的能力。

通過以上幾個維度,我覺得對於 DBA 來説,如果不會編程,就需要在業務或者某些方向上需要有一些積累,至少得有一個方向是更擅長的。學編程語言對於 DBA 的職業發展上來講屬於服務化建設的能力。

因為服務化建設的能力,從研發到業務是一個直接能感受到的高效和專業的一種方式。所以需要去學習一種編程語言。另外一個視角就是當你學習一種編程語言的時候,你會從研發的視角去思考這個問題,而不是單純的從運維 DBA 的角度去單一的思考問題,從而更容易抓到這個問題的本質。

第二個問題是轉型數據庫產品研發,更偏向數據庫服務化的建設能力,需要去考慮一個點,就是説對數據庫的這個方向上真正的技術理想或者説技術興趣點是否認可?如果只是單純的做數據庫產品研發,我覺得可能它是一個偏頗的方向。另外一個就是在業務上有很深的積累或者數據庫的支持方向上有很多的想法,再去轉型做數據庫的產品研發是比較順利的。因為產品研發只是 DBA 領域中的一個分支,更多取決於自己的興趣點。 

Q

普通中小型企業經過一段發展之後,數據庫已經有非常大的慣性了。現階段企業和個人怎麼轉型國產化呢?

A

師文匯: 對於個人來説的話,學習是自己的事情,即使公司沒有用這個數據庫,你其實還是可以去學習的。對於企業來説的話,企業是會有很多的研發慣性,習慣用了一種東西以後,可能很難擺脱去切換到另外一種產品,尤其是數據庫這種核心系統,相當於一輛車的發動機,可能更不容易。

但是我覺得從 DBA 或者是企業的視角可以去考慮幾個問題。

第一個是説如果想換成國產數據庫,有沒有比較低的代價?假設我們用的是 Oracle 模式,那是不是有一些國產數據庫它能比較好地去兼容 Oracle,同時又能給我們帶來一些便捷。

第二個可以從降本增效相關的一些角度去考慮。是不是可以引入一種分佈式數據庫去解決成本效率的問題做一些嘗試。很多企業都在考量 ROI,很多的新型的數據庫在這方面做得都比較好,可以考慮做一些演進的嘗試。圍繞 8020 原則,守好主要的關口,找一些邊緣的業務做創新,當真的能夠嚐到技術紅利以後,然後再去考慮公司的整體方向去採納一種新型數據庫。

《對話 ACE》第二期通過兩位老師對 DBA 職業發展,如何更好將業務和技術相結合,包括對國產數據庫和開源數據庫的認知和選型,都給出了精彩的觀點。

未來 OceanBase 將持續開展《對話 ACE》活動,敬請關注。

* 彩蛋: 點擊文末 “閲讀原文” ,參與有獎調研問卷,將有機會獲得 OceanBase CTO 親筆簽名的《大規模分佈式存儲系統 原理解析與架構實戰》圖書一本~

* 往期獲獎公佈(請及時在後台留言與小編取得聯繫哦):

第一期公眾號調研問卷獲獎:少安  手機尾號 7796

第二期直播調研 問卷獲獎: 陳義亮  手機尾號 7794