雲時代下,資料庫的關鍵趨勢與DBA發展之路
伴隨著雲端計算、分散式技術的逐步落地,近十年來資料庫的形態發生了很大變化,各類資料庫不斷湧現,資料庫架構也隨之演進。在雲時代下,企業該如何選型並構建資料庫架構?如何應對業務上雲帶來的資料遷移挑戰?資料庫有何“新解”?DBA的未來發展趨勢如何?
今天為我們解答以上問題的嘉賓,是來自貨拉拉的DBA負責人蔡鵬老師。希望通過彙集蔡鵬的研究成果和實踐經驗,帶大家明確新資料庫時代,DBA的個人發展之路。
蔡鵬
貨拉拉 DBA負責人
前餓了麼、螞蟻金服技術專家,現任貨拉拉資料庫部門負責人。負責貨拉拉全球化業務場景下整體資料庫、訊息佇列、快取、資料庫中介軟體的穩定性建設工作,主持過餓了麼資料庫異地多活建設,對資料庫庫中介軟體、分散式資料庫和自動化運維平臺設計開發有豐富的實踐經驗。
主要觀點
資料庫進步、顛覆傳統DBA、塑造行業
雲資料庫進入百家爭鳴的時代,雲商間的激烈競爭,再加上現實的業務需求,迫切需要促進資料庫技術的進步。近幾年業內湧現出了大量新式資料庫,這些新式資料庫,一方面對傳統關係型資料庫做了大量改進優化(分散式、雲原生等);同時在新硬體能力加持下(我們看到了恐怖的幾百核心CPU、超高容量高效能的儲存),資料庫效能進一步飛躍甚至“效能過剩”。資料庫形態的改變正在深刻的影響整個IT行業,相信新技術下DBA也有新機會。
Q1如何理解:雲時代,要讓研發具備DBA的能力?
個人理解:讓研發具備DBA的能力,本身是“開雲時代的倒車”。因為雲本身,不管是在遮蔽底層基礎設施的穩定性上,還是在自身產品核心的完善建設上,都具有更強的容錯及相容能力,因此雲不僅要提供一個穩定的基礎設施,更是遮蔽了諸多研發過程中的一些複雜性、容錯性,讓研發更加註重對業務自身的建設上。
不管是在雲時代,還是自建時代,研發都需要對資料庫本身做一定程度的理解,比如合理的設計正規化、結構設計、索引設計、SQL寫法等,但是我們也看到雲資料庫越來越智慧化,甚至能對SQL智慧改寫、索引自動優化做到了很高程度的自動化,這進一步削弱了研發對資料庫本身的關注度。
但凡事也有例外,比如資料庫型別越來越多,不同場景可能使用不同類似的資料庫更加具有優勢,過去這種選型由DBA來主導完成。基於雲DB對研發複雜度的遮蔽,研發可以根據自己對雲資料庫產品的理解程度,進行合理的選型,不過這裡面是有潛在的風險的。
比如早期貨拉拉就有類似的實踐:研發自行做了很多資料庫選型,最終導致的結果是服務治理失控,同時也帶來很嚴重的業務風險(比如一條資料既寫MySQL,又寫MongoDB,跟ElasticSearch最後還要刷一份到Redis快取,有吐血的修資料歷史)。因此這部分工作仍舊需要DBA來指導完成,因為DBA在這方面相對而言會有更好的大局觀。
Q2雲時代的DBA職責有什麼轉變?應該提前做些什麼?
職能轉變:
①資料庫的可靠性穩定性在雲能力加持下不在是核心工作比如部分SLA的工作由雲來保障;
②如何科學合理的使用雲能力賦能業務在架構設計方案規劃、節約成本顯得更重要。
提前準備:
①在對雲的理解上:對雲產品進行積極學習,瞭解各家雲的套路玩法;
②個人能力建設上:需要加強複合多元化的能力建設,做到懂資料庫、懂平臺、懂研發、實現DBA到架構師的轉變。
Q3雲時代,企業IT設施呈現集中化、規模化效應,對效率、效能的要求提升,我們對雲資料庫產生了哪些技術新需求?
資料庫發展至今基本在滿足使用者無止境的既要(高效能)、又要(穩定性)、還要(可擴充套件性、可運維性等)的“過分”需求:
- 能力多元化需求上:AP+TP(HTAP)、行列一體化、SQL與NoSQL共存、持久與Cache共存、儲存計算分離無限可擴容;
- 架構上:要求基於雲原生的異地多活/容災(兩地三中心、三地五中心)能力;
- 治理上:更加智慧化的自治能力;
- 成本上:越便宜越好(使用者跟老闆一樣,總是不講道理)。
Q4資料庫儲存未來分層的設計,有沒有可能在混合雲環境自由遷移或者自動遷移?實現的難點在哪裡呢?
個人理解是很難的,實現的難點主要在雲商間的壁壘,或者自身產品的封閉性與產品間的相容性上:
- 雲商壁壘:由於商業原因雲商產品間存在天然的隔閡,雲商間短期看不到相互產品間打通的需求;
- 產品封閉性:不同雲產品底層技術原理不一致不公開,雖然只對使用者層暴露了統一的標準協議,但是對實現跨雲跨產品間的遷移,還是存在關鍵原理上的障礙;
- 產品相容性:不同雲產品,甚至在基礎協議層,都不相容跨雲遷移的前置條件。
當然對於基礎協議層相容,比如常用的MySQL及其變種系列(Binlog格式相容)的跨雲遷移技術實現上,還是相對比較簡單的,不管是藉助雲自身的能力(如DTS),或者自己開發一個遷移工具都是可行的、但是這種情況畢竟是少數。
不過隨著未來資料庫逐步往開源方向發展(封閉是沒有未來的),這會促使更多技術人對雲產品做更多深入的理解,這會給跨雲間的資料遷移提供更多技術支撐,當然這對技術本身有很高的要求。
不過我也注意到:近幾年出現了很多三方技術服務公司,專門提供雲上各種解決方案,或許基於雲會誕生一些新的商業機會,也是技術人技術變現的一種途徑,這似乎也變相讓“DBA消亡論”不攻自破。
- Spring中實現非同步呼叫的方式有哪些?
- 帶引數的全型別 Python 裝飾器
- 整理了幾個Python正則表示式,拿走就能用!
- 設計模式之狀態模式
- 如何實現資料庫讀一致性
- SOLID:開閉原則Go程式碼實戰
- React中如何引入CSS呢
- 慢查詢 MySQL 定位優化技巧,從10s優化到300ms
- 一個新視角:前端框架們都卷錯方向了?
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 手寫程式語言-遞迴函式是如何實現的?
- 一文搞懂模糊匹配:定義、過程與技術
- 新來個阿里 P7,僅花 2 小時,做出一個多執行緒永動任務,看完直接跪了
- Puzzlescript,一種開發H5益智遊戲的引擎
- @Autowired和@Resource到底什麼區別,你明白了嗎?
- “四招”守護個人資訊保安
- CSS transition 小技巧!如何保留 hover 的狀態?
- React如此受歡迎離不開這4個主要原則
- 我是怎麼入行做風控的
- 重溫三十年前對於 NN 的批判:神經網路無法實現可解釋 AI