開發(fā)者關(guān)心的十個數(shù)據(jù)庫技術(shù)問題
出品 | 《新程序員》如今,數(shù)據(jù)庫越來越受到業(yè)界的廣泛關(guān)注,許多高校畢業(yè)生及資深技術(shù)人也逐漸投身于數(shù)據(jù)庫產(chǎn)業(yè)?!缎鲁绦騿T002》經(jīng)過用戶、專家調(diào)研,收集匯總了十個開發(fā)者關(guān)心的數(shù)據(jù)庫技術(shù)問題,并邀請騰訊云TDSQL技術(shù)負(fù)責(zé)人、首席架構(gòu)師雷海林作出解答,希望為越來越多投身數(shù)據(jù)庫的技術(shù)人才提供參考。數(shù)據(jù)技術(shù)應(yīng)用與創(chuàng)新1. 數(shù)據(jù)庫產(chǎn)品在面向企業(yè)時(涉及負(fù)載均衡、數(shù)據(jù)傳輸、運營平臺、故障發(fā)現(xiàn)分析和治愈、發(fā)布系統(tǒng)、冷備系統(tǒng)等等),核心服務(wù)有哪些?數(shù)據(jù)庫是一個復(fù)雜的技術(shù)系統(tǒng),真正在業(yè)務(wù)中投產(chǎn),要求同時滿足穩(wěn)定、高性能、一致、高可靠、易運維等特性,缺一不可。也就是說,從數(shù)據(jù)庫設(shè)計到數(shù)據(jù)庫引擎的運營、遷移,再到數(shù)據(jù)安全等,包含數(shù)據(jù)全生命周期在內(nèi)的每一環(huán)都需要考慮。例如,計算和存儲都需要實現(xiàn)獨立彈性擴展,保障系統(tǒng)的事務(wù)處理與分析查詢能夠穩(wěn)定、高效地完成。而在云時代,保障跨城、跨中心大型集群的高可用比以往集中式數(shù)據(jù)庫更復(fù)雜,因此自動化運營以及智能運維、智能監(jiān)控等能力,是提升日常運營效率的關(guān)鍵,也是故障識別、全局仲裁、自動資源配置和調(diào)度,以及保障系統(tǒng)穩(wěn)定、高可用的關(guān)鍵支撐。2. 數(shù)據(jù)庫遷移怎么做?通常數(shù)據(jù)庫遷移包含兩個層面:全量遷移和增量同步。針對增量可以通過數(shù)據(jù)日志同步、數(shù)據(jù)訂閱等手段進行,但問題在于,數(shù)據(jù)庫遷移涉及業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫的遷移替換,這類數(shù)據(jù)庫一般都服務(wù)于關(guān)鍵業(yè)務(wù)場景,因此“快”和“穩(wěn)”缺一不可??焖龠w移數(shù)據(jù)和保證數(shù)據(jù)持續(xù)準(zhǔn)實時同步,是數(shù)據(jù)庫遷移過程的兩個關(guān)鍵要素。這就要求,遷移方案需要包含數(shù)據(jù)校驗、回滾、安全風(fēng)險控制機制等,實現(xiàn)遷移過程中的系統(tǒng)高性能、數(shù)據(jù)一致、服務(wù)高可用。針對高性能的優(yōu)化可通過并發(fā)控制機制、有序消息并發(fā)重放、并發(fā)解析機制等方案來實現(xiàn)。數(shù)據(jù)一致性可通過消息異常檢測、自動化切換、自動化沖突檢測與恢復(fù)等技術(shù)機制來保障。服務(wù)高可用可以基于自動化擴容感知、多機容災(zāi)保護等能力實現(xiàn)。如果涉及遷移的源端與目標(biāo)端異構(gòu),還需要自動化遷移評估平臺,進行庫表結(jié)構(gòu)、數(shù)據(jù)庫對象、數(shù)據(jù)類型自動轉(zhuǎn)換等等。3. 如何在低配服務(wù)器中,實現(xiàn)數(shù)據(jù)庫高性能、高可用運行?首先,云上數(shù)據(jù)庫應(yīng)用,可以通過云原生、多租戶能力很好地控制資源,做到按需使用,不用擔(dān)心資源瓶頸問題,也不會使資源過度消耗。同時,設(shè)置一套自動化資源配置規(guī)則,當(dāng)系統(tǒng)識別到資源即將打滿時,可以有效地進行資源分配與調(diào)度,管理資源開銷,保障系統(tǒng)穩(wěn)定。這就要求開發(fā)階段盡量避免使用動態(tài)分配的方式,而是采用內(nèi)存池等優(yōu)化手段來管理內(nèi)存,提升應(yīng)急能力。當(dāng)然,也有一些場景,需要將數(shù)據(jù)庫部署在配置很低的服務(wù)器上(如低規(guī)格的虛擬機),這個時候?qū)?shù)據(jù)庫的穩(wěn)定運行確實是一個考驗。所以我們在設(shè)計時要注意盡量控制配套的輔助模塊,降低對資源(如CPU、IO等)的利用率,讓資源真正為業(yè)務(wù)所用。低配服務(wù)器,當(dāng)SQL請求增加時,更容易觸發(fā)資源閾值告警,這時DBA人員需要根據(jù)情況考慮是否擴容。另一種方式,是從DB設(shè)計側(cè)支持自動限流,通過對請求進行流控,以保證整體的高可用。4. 大數(shù)據(jù)量的并行處理如何應(yīng)對? 大數(shù)據(jù)量的并行處理意味著數(shù)據(jù)庫計算框架要具備并行化處理能力,比如能夠把SQL拆解成一個并行的執(zhí)行計劃,采用多線程的方式去執(zhí)行,需要時能夠?qū)⑦@些子查詢計劃推到對應(yīng)的數(shù)據(jù)節(jié)點上并行執(zhí)行。而在并行處理中,也有很多問題要解決,比如當(dāng)海量流量涌入,我們需要針對用戶或者某類SQL控制總的資源消耗度(如并行的連接數(shù),線程數(shù),總的資源利用率等),另外也需要對在線SQL和離線分析SQL進行區(qū)分,在資源不夠的時候要優(yōu)先保障在線SQL的執(zhí)行,這都是設(shè)計數(shù)據(jù)庫時需要考慮的問題。數(shù)據(jù)技術(shù)融合發(fā)展洞見5. 實時計算大行其道,數(shù)據(jù)庫如何應(yīng)對?隨著技術(shù)的發(fā)展,物聯(lián)網(wǎng)、大數(shù)據(jù)和互聯(lián)網(wǎng)監(jiān)控等擁有海量時序數(shù)據(jù)、需要實時數(shù)據(jù)作決策的場景越來越廣泛,這些新興的場景都是云計算、“產(chǎn)業(yè)互聯(lián)網(wǎng) ”深化發(fā)展的必然結(jié)果,也是數(shù)據(jù)庫等基礎(chǔ)數(shù)據(jù)技術(shù)需要提前應(yīng)對布局的技術(shù)場景。針對實時計算場景提出的要求(比如大量數(shù)據(jù)輸入、秒級別計算響應(yīng)),數(shù)據(jù)庫技術(shù)需要具備高性能服務(wù)、低成本存儲、超強聚合分析能力等基本特性。而這些要求,時序數(shù)據(jù)庫產(chǎn)品能夠很好地滿足。隨著未來場景特征的融合,實時計算的需求也將可能出現(xiàn)在各行各業(yè)的實際場景中。因此作為底層技術(shù),數(shù)據(jù)庫也將走向滿足多種計算能力要求的多引擎融合發(fā)展,用強大的底層能力支撐通用場景應(yīng)用。這也是我們應(yīng)該探索的方向。6. 數(shù)據(jù)庫與大數(shù)據(jù)是什么關(guān)系? 從宏觀層面來看,數(shù)據(jù)庫是一個非常寬泛的概念,大數(shù)據(jù)應(yīng)該也屬于數(shù)據(jù)庫的一種形態(tài)。當(dāng)然從更細粒度的角度來看,數(shù)據(jù)庫主要用來處理聯(lián)機交易和中等規(guī)模的數(shù)據(jù)分析,強調(diào)高性能低延時的數(shù)據(jù)存取。而大數(shù)據(jù)一般面向海量數(shù)據(jù)以及基于這些數(shù)據(jù)從產(chǎn)生、收集、存儲到計算的分布式計算框架,如Hadoop、Spark生態(tài)下的各種軟件和框架。7. 數(shù)據(jù)庫基礎(chǔ)研究創(chuàng)新有哪些值得考慮的方向?基礎(chǔ)研究創(chuàng)新的方向要從未來行業(yè)對數(shù)據(jù)庫的需求角度來分析。第一,數(shù)據(jù)庫的主流方向是分布式架構(gòu),同時在數(shù)據(jù)規(guī)模不斷增長、對數(shù)據(jù)價值分析效率要求不斷提升的背景下,滿足HTAP場景是一個重要的發(fā)展方向。而數(shù)據(jù)庫需要很好支持HTAP的能力,系統(tǒng)需要真正實現(xiàn)計算層高擴容能力,以及支持不同的計算和存儲引擎,還要做到資源良好地隔離等等。目前從整個行業(yè)來看,這一方面的能力還有待完善和探索。第二,執(zhí)行器、優(yōu)化器等技術(shù)模塊也將是數(shù)據(jù)庫發(fā)展中值得關(guān)注的技術(shù)。第三,“數(shù)據(jù)庫 AI”等多技術(shù)生態(tài)底層融合將帶來新的發(fā)展機會,如通過“AI for DB”實現(xiàn)數(shù)據(jù)庫自治是當(dāng)前廣受關(guān)注的方向。第四,“數(shù)據(jù)庫 新硬件”結(jié)合也是值得關(guān)注的發(fā)展方向,如今,新硬件層出不窮,我們?nèi)绾位谛掠布崿F(xiàn)創(chuàng)新式應(yīng)用、釋放創(chuàng)新源動能,同時保持?jǐn)?shù)據(jù)庫ACID能力?如何實現(xiàn)數(shù)據(jù)庫面向新硬件的技術(shù)遷移?這些都是值得探索的方向。8. “AI 智能運維”是否會取代DBA?智能化運維能力,更多的作用是覆蓋云時代大規(guī)模實例運維中基礎(chǔ)、重復(fù)的工作,以及提升診斷、資源配置的效率,也就是說,它最終能夠釋放DBA煩瑣的日常工作、提高DBA處理問題的效率、減少故障對企業(yè)帶來的損失(也降低了DBA的精神壓力),讓DBA有更多時間和精力去做一些有助于個人成長和業(yè)務(wù)發(fā)展的事,包括但不限于業(yè)務(wù)整體數(shù)據(jù)架構(gòu)的梳理、內(nèi)核源碼的研究等。9. 未來數(shù)據(jù)庫的核心是什么?關(guān)于未來數(shù)據(jù)庫發(fā)展的核心,我個人認(rèn)為,一方面是面向未來的高精尖技術(shù)發(fā)展與技術(shù)基礎(chǔ)設(shè)施升級,另一方面是國產(chǎn)分布式數(shù)據(jù)庫生態(tài)的培育建設(shè)。而數(shù)據(jù)庫的發(fā)展仍將以云原生、HTAP等多模態(tài)融合、智能自治為主要核心:
-
云原生與Serverless
-
多模態(tài)融合
-
標(biāo)準(zhǔn)化服務(wù)與智能自治