開發者關心的十個資料庫技術問題

作者 | 雷海林

責編 | 田瑋靖

出品 |

《新程式設計師》

如今,資料庫越來越受到業界的廣泛關注,許多高校畢業生及資深技術人也逐漸投身於資料庫產業。《新程式設計師002》經過使用者、專家調研,收集彙總了十個開發者關心的資料庫技術問題,並邀請騰訊雲TDSQL技術負責人、首席架構師雷海林作出解答,希望為越來越多投身資料庫的技術人才提供參考。

開發者關心的十個資料庫技術問題

資料技術應用與創新

1。 資料庫產品在面向企業時(涉及負載均衡、資料傳輸、運營平臺、故障發現分析和治癒、釋出系統、冷備系統等等),核心服務有哪些?

資料庫是一個複雜的技術系統,真正在業務中投產,要求同時滿足穩定、高效能、一致、高可靠、易運維等特性,缺一不可。也就是說,從資料庫設計到資料庫引擎的運營、遷移,再到資料安全等,包含資料全生命週期在內的每一環都需要考慮。例如,計算和儲存都需要實現獨立彈性擴充套件,保障系統的事務處理與分析查詢能夠穩定、高效地完成。而在雲時代,保障跨城、跨中心大型叢集的高可用比以往集中式資料庫更復雜,因此自動化運營以及智慧運維、智慧監控等能力,是提升日常運營效率的關鍵,也是故障識別、全域性仲裁、自動資源配置和排程,以及保障系統穩定、高可用的關鍵支撐。

2。 資料庫遷移怎麼做?

通常資料庫遷移包含兩個層面:全量遷移和增量同步。針對增量可以透過資料日誌同步、資料訂閱等手段進行,但問題在於,資料庫遷移涉及業務系統資料庫的遷移替換,這類資料庫一般都服務於關鍵業務場景,因此“快”和“穩”缺一不可。快速遷移資料和保證資料持續準實時同步,是資料庫遷移過程的兩個關鍵要素。這就要求,遷移方案需要包含資料校驗、回滾、安全風險控制機制等,實現遷移過程中的系統高效能、資料一致、服務高可用。針對高效能的最佳化可透過併發控制機制、有序訊息併發重放、併發解析機制等方案來實現。資料一致性可透過訊息異常檢測、自動化切換、自動化衝突檢測與恢復等技術機制來保障。服務高可用可以基於自動化擴容感知、多機容災保護等能力實現。如果涉及遷移的源端與目標端異構,還需要自動化遷移評估平臺,進行庫表結構、資料庫物件、資料型別自動轉換等等。

3。 如何在低配伺服器中,實現資料庫高效能、高可用執行?

首先,雲上資料庫應用,可以透過雲原生、多租戶能力很好地控制資源,做到按需使用,不用擔心資源瓶頸問題,也不會使資源過度消耗。同時,設定一套自動化資源配置規則,當系統識別到資源即將打滿時,可以有效地進行資源分配與排程,管理資源開銷,保障系統穩定。這就要求開發階段儘量避免使用動態分配的方式,而是採用記憶體池等最佳化手段來管理記憶體,提升應急能力。

當然,也有一些場景,需要將資料庫部署在配置很低的伺服器上(如低規格的虛擬機器),這個時候對資料庫的穩定執行確實是一個考驗。所以我們在設計時要注意儘量控制配套的輔助模組,降低對資源(如CPU、IO等)的利用率,讓資源真正為業務所用。低配伺服器,當SQL請求增加時,更容易觸發資源閾值告警,這時DBA人員需要根據情況考慮是否擴容。另一種方式,是從DB設計側支援自動限流,透過對請求進行流控,以保證整體的高可用。

4。 大資料量的並行處理如何應對?

大資料量的並行處理意味著資料庫計算框架要具備並行化處理能力,比如能夠把SQL拆解成一個並行的執行計劃,採用多執行緒的方式去執行,需要時能夠將這些子查詢計劃推到對應的資料節點上並行執行。而在並行處理中,也有很多問題要解決,比如當海量流量湧入,我們需要針對使用者或者某類SQL控制總的資源消耗度(如並行的連線數,執行緒數,總的資源利用率等),另外也需要對線上SQL和離線分析SQL進行區分,在資源不夠的時候要優先保障線上SQL的執行,這都是設計資料庫時需要考慮的問題。

開發者關心的十個資料庫技術問題

資料技術融合發展洞見

5。 實時計算大行其道,資料庫如何應對?

隨著技術的發展,物聯網、大資料和網際網路監控等擁有海量時序資料、需要實時資料作決策的場景越來越廣泛,這些新興的場景都是雲計算、“產業網際網路+”深化發展的必然結果,也是資料庫等基礎資料技術需要提前應對佈局的技術場景。針對實時計算場景提出的要求(比如大量資料輸入、秒級別計算響應),資料庫技術需要具備高效能服務、低成本儲存、超強聚合分析能力等基本特性。而這些要求,時序資料庫產品能夠很好地滿足。隨著未來場景特徵的融合,實時計算的需求也將可能出現在各行各業的實際場景中。因此作為底層技術,資料庫也將走向滿足多種計算能力要求的多引擎融合發展,用強大的底層能力支撐通用場景應用。這也是我們應該探索的方向。

6。 資料庫與大資料是什麼關係?

從宏觀層面來看,資料庫是一個非常寬泛的概念,大資料應該也屬於資料庫的一種形態。當然從更細粒度的角度來看,資料庫主要用來處理聯機交易和中等規模的資料分析,強調高效能低延時的資料存取。而大資料一般面向海量資料以及基於這些資料從產生、收集、儲存到計算的分散式計算框架,如Hadoop、Spark生態下的各種軟體和框架。

7。 資料庫基礎研究創新有哪些值得考慮的方向?

基礎研究創新的方向要從未來行業對資料庫的需求角度來分析。

第一,資料庫的主流方向是分散式架構,同時在資料規模不斷增長、對資料價值分析效率要求不斷提升的背景下,滿足HTAP場景是一個重要的發展方向。而資料庫需要很好支援HTAP的能力,系統需要真正實現計算層高擴容能力,以及支援不同的計算和儲存引擎,還要做到資源良好地隔離等等。目前從整個行業來看,這一方面的能力還有待完善和探索。

第二,執行器、最佳化器等技術模組也將是資料庫發展中值得關注的技術。

第三,“資料庫+AI”等多技術生態底層融合將帶來新的發展機會,如透過“AI for DB”實現資料庫自治是當前廣受關注的方向。第四,“資料庫+新硬體”結合也是值得關注的發展方向,如今,新硬體層出不窮,我們如何基於新硬體實現創新式應用、釋放創新源動能,同時保持資料庫ACID能力?如何實現資料庫面向新硬體的技術遷移?這些都是值得探索的方向。

8。 “AI+智慧運維”是否會取代DBA?

智慧化運維能力,更多的作用是覆蓋雲時代大規模例項運維中基礎、重複的工作,以及提升診斷、資源配置的效率,也就是說,它最終能夠釋放DBA煩瑣的日常工作、提高DBA處理問題的效率、減少故障對企業帶來的損失(也降低了DBA的精神壓力),讓DBA有更多時間和精力去做一些有助於個人成長和業務發展的事,包括但不限於業務整體資料架構的梳理、核心原始碼的研究等。

9。 未來資料庫的核心是什麼?

關於未來資料庫發展的核心,我個人認為,一方面是面向未來的高精尖技術發展與技術基礎設施升級,另一方面是國產分散式資料庫生態的培育建設。而資料庫的發展仍將以雲原生、HTAP等多模態融合、智慧自治為主要核心:

雲原生與Serverless

雲資料庫時代,我們將探索極致的彈性伸縮架構,來解決效能、效率和成本問題。雲原生資料庫具有高效能和高度相容的優勢,敏捷、靈活的部署能力,可以讓企業像使用水、電、煤一樣使用雲資料庫,從而降低企業上雲門檻,提升上雲程序,更好地應對智慧時代複雜的業務場景。針對不同的場景,雲原生分散式資料庫可分為兩種架構:Shared Nothing與Shared Storage,兩者都可以透過實現計算與儲存分離架構來整體獲得更優秀的彈性伸縮能力,克服傳統架構下的儲存量受限、擴充套件難、主從延遲高等缺點,同時也能夠將成本控制得更低,充分釋放領先技術的成本效益。而計算與儲存全Serverless架構的資料庫服務也是未來可以重點關注的方向,它在可自動無感擴縮容的基礎上,按實際使用計費,不用不付費,提升雲資料庫效用。

多模態融合

在資訊化建設和數字化轉型的浪潮之下,湧現出大量的新興場景。資料庫作為支撐各類 IT 系統架構的基礎軟體技術,也隨之出現在各類新的應用實現中,包括大量的NoSQL實踐和儲存領域的B+樹、 LSM樹以及行存、列存等架構形態產品,還有OLTP、OLAP,HTAP資料庫等。多種多樣的引擎產品,在大多數情況下不會獨立存在,服務於一個企業或系統,即“One size fits none”。從技術角度看,極致的效能成本與通用性有著天然的矛盾。因此,在多樣化場景下,一定會是多引擎共存,充分發揮各種引擎的特點與優勢,才能實現極致與通用的兼得。

標準化服務與智慧自治

多模態技術引擎的現狀必然給開發者帶來選型、開發應用的困難,即如何能夠適應不同場景,還有足夠高的效能表現,這也是當前資料庫發展面臨的困境。為了解決這個問題,一個辦法是無需使用者進行復雜選擇,而是由系統基於AI智慧排程、Serverless等解決方案,徹底實現多引擎的統一標準化服務。從底層的角度看,未來開發者無需感知具體的產品選型,比如在做資料分析時,系統會自動排程效能最好、事務交易一致性的方案。與此同時,面對雲資料庫時代數十萬的資料庫例項,人力運維是不現實的,智慧化技術與資料庫底層的融合,可以智慧管理資料庫全生命週期,也是未來資料庫的關鍵特徵。

開發者關心的十個資料庫技術問題

程式設計師職業發展建議

10。 如何將程式設計師做成具有長久生命力的職業?

程式設計師從來不是一個只吃青春飯的職業。當你經歷的東西越多,見過的架構越多,你的經驗肯定會更豐富,看問題更能迅速看到本質。所以,做技術沒有天花板,而技術人員的職業生涯,也沒有瓶頸期。但是,最好在某些方面有比較深入的鑽研,追求精度與深度。同時,不能放棄廣度,廣度意味著更多的機會,幫助你由點及面地開展工作。例如,一些通用的底層技術,就值得鑽研。只要你從事計算機系統工作,那你在大多數時候都離不開它們,包括核心、網路、資料結構、演算法等等。對底層技術的研究相當於不斷髮現水面下的冰山,它具有持久延續性、廣泛延展性。不管你做什麼工作,你依賴的這些基礎都是相通的,所以我相信,提高基礎能力,你的前景肯定會越來越光明。

雷海林:騰訊雲資料庫專家工程師,騰訊雲TDSQL技術負責人、首席架構師。2007年加入騰訊,持續專注於金融級分散式資料庫研發,帶領團隊實現多次業界領先的分散式資料庫技術突破,在分散式事務、SQL相容性、核心安全、智慧運維方面持續創新,產品獲得大量金融客戶的認可,市場規模大幅領先同業。