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