![]()
技術(shù)債是大多數(shù)IT專(zhuān)業(yè)人士都熟悉的概念,但人們?cè)谟懻摃r(shí)往往主要關(guān)注應(yīng)用代碼。然而,數(shù)據(jù)庫(kù)同樣容易產(chǎn)生技術(shù)債,對(duì)于數(shù)據(jù)庫(kù)管理員來(lái)說(shuō),忽視它可能會(huì)付出高昂代價(jià)。隨著時(shí)間的推移,設(shè)計(jì)上的捷徑、倉(cāng)促的實(shí)施和延遲的維護(hù)會(huì)不斷累積。結(jié)果導(dǎo)致數(shù)據(jù)庫(kù)環(huán)境會(huì)變得日益脆弱、管理成本高昂且難以變更。
數(shù)據(jù)庫(kù)中的技術(shù)債有哪些
技術(shù)債的核心在于速度與質(zhì)量之間的權(quán)衡。當(dāng)開(kāi)發(fā)團(tuán)隊(duì)為趕工期而選擇“快速但粗糙”的路徑時(shí),就會(huì)產(chǎn)生債務(wù)。數(shù)據(jù)庫(kù)領(lǐng)域也存在同樣現(xiàn)象。例如:
糟糕的模式設(shè)計(jì)——缺乏合理理由的非規(guī)范化結(jié)構(gòu)、不一致的命名約定,或是那些永遠(yuǎn)存在的“臨時(shí)”列。
臨時(shí)索引——為解決即時(shí)問(wèn)題而創(chuàng)建的索引從未被清理,導(dǎo)致臃腫和混亂。
失控的增長(zhǎng)——由于沒(méi)有歸檔、清理或分區(qū)策略,表和表空間無(wú)限擴(kuò)張。
被忽視的維護(hù)——過(guò)時(shí)的統(tǒng)計(jì)信息、無(wú)用對(duì)象,或不再適應(yīng)當(dāng)前工作負(fù)載的陳舊存儲(chǔ)和系統(tǒng)參數(shù)。
這些決策或許能節(jié)省一時(shí)的時(shí)間,但會(huì)在性能、可靠性和靈活性方面產(chǎn)生后續(xù)成本。
數(shù)據(jù)庫(kù)技術(shù)債的影響
若不加控制,數(shù)據(jù)庫(kù)技術(shù)債會(huì)以可預(yù)見(jiàn)的方式顯現(xiàn):
曾經(jīng)只需數(shù)秒的查詢,現(xiàn)在卻需要數(shù)分鐘甚至數(shù)小時(shí)。
由于組織選擇增加容量而非修復(fù)設(shè)計(jì)缺陷,硬件預(yù)算不斷攀升。
因?yàn)楝F(xiàn)有結(jié)構(gòu)難以適應(yīng),模式變更拖慢了開(kāi)發(fā)速度。
DBA將更多時(shí)間用于“救火”,而非主動(dòng)改進(jìn)系統(tǒng)。
在某些環(huán)境中,甚至無(wú)人記得當(dāng)初為何做出某些選擇。昔日的權(quán)宜之計(jì),成了今日現(xiàn)代化的障礙。
管理與減少數(shù)據(jù)庫(kù)技術(shù)債
消除技術(shù)債的第一步是認(rèn)識(shí)它。DBA必須樹(shù)立一種觀念:管理技術(shù)債是其工作的一部分。盡管快速解決問(wèn)題然后繼續(xù)前進(jìn)很誘人,但反思任何變更可能帶來(lái)的未來(lái)影響,始終應(yīng)是工作的一部分。
此外,應(yīng)采取實(shí)際可行的步驟來(lái)發(fā)現(xiàn)并解決現(xiàn)有的技術(shù)債。一些有用的DBA實(shí)踐示例如下:
定期健康檢查——根據(jù)當(dāng)前使用情況,定期審查數(shù)據(jù)庫(kù)對(duì)象、索引和模式設(shè)計(jì)。移除不再需要的部分,并重構(gòu)需要修改的部分以符合當(dāng)前需求。
數(shù)據(jù)歸檔與清理——通過(guò)實(shí)施合理的數(shù)據(jù)生命周期管理策略,減少生產(chǎn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)量。當(dāng)數(shù)據(jù)不再用于生產(chǎn)但仍因法規(guī)要求需要保留時(shí),進(jìn)行歸檔。當(dāng)數(shù)據(jù)不再有任何用途時(shí),則予以清理。
索引管理——分析索引使用情況;刪除未使用的索引并合并冗余結(jié)構(gòu)。隨著數(shù)據(jù)量的增長(zhǎng)和業(yè)務(wù)需求的變化,采取戰(zhàn)略性方法進(jìn)行索引現(xiàn)代化,可以成為高性能數(shù)據(jù)庫(kù)環(huán)境的關(guān)鍵差異化因素。
自動(dòng)化監(jiān)控——利用性能和存儲(chǔ)監(jiān)控工具來(lái)識(shí)別可能指示技術(shù)債的異常情況。能夠排查性能問(wèn)題并提出改進(jìn)建議的自動(dòng)化監(jiān)控,應(yīng)成為每位DBA工具箱中的關(guān)鍵組成部分。
文檔規(guī)范——記錄模式設(shè)計(jì)、命名約定和對(duì)象用途,以防止未來(lái)產(chǎn)生混淆。并將文檔存儲(chǔ)在標(biāo)準(zhǔn)、易于訪問(wèn)的存儲(chǔ)庫(kù)中,以供未來(lái)用戶使用。
好消息是,數(shù)據(jù)庫(kù)技術(shù)債是可以管理的。
DBA的角色
開(kāi)發(fā)人員常常會(huì)轉(zhuǎn)向新項(xiàng)目,但DBA則要長(zhǎng)期承受過(guò)去決策的后果。這使得DBA自然成為數(shù)據(jù)庫(kù)技術(shù)債的管理者。他們目睹查詢性能何時(shí)開(kāi)始下降、索引何時(shí)無(wú)節(jié)制地增加,或者增長(zhǎng)壓力何時(shí)使備份和恢復(fù)變得笨重難行。
重要的是,DBA還處于技術(shù)人員和業(yè)務(wù)利益相關(guān)者之間的交叉點(diǎn)。他們能夠解釋技術(shù)債如何轉(zhuǎn)化為業(yè)務(wù)影響:生產(chǎn)力損失、應(yīng)用交付速度減慢、基礎(chǔ)設(shè)施成本增加以及運(yùn)營(yíng)風(fēng)險(xiǎn)加大。這種將數(shù)據(jù)庫(kù)健康狀況與業(yè)務(wù)成果聯(lián)系起來(lái)的能力,對(duì)于贏得解決技術(shù)債的支持至關(guān)重要。
在實(shí)踐中,DBA的角色涉及三件事:識(shí)別、溝通和倡導(dǎo)。DBA必須識(shí)別技術(shù)債存在之處,清晰溝通其影響,并倡導(dǎo)資源來(lái)進(jìn)行修復(fù)。有時(shí)需要游說(shuō)爭(zhēng)取時(shí)間來(lái)重新設(shè)計(jì)模式,有時(shí)需要說(shuō)服領(lǐng)導(dǎo)層,歸檔非活動(dòng)數(shù)據(jù)比購(gòu)買(mǎi)新存儲(chǔ)設(shè)備更能節(jié)省成本。還有些時(shí)候,可能涉及倡導(dǎo)引入新的工具或流程,以自動(dòng)化所需任務(wù)來(lái)防范技術(shù)債。
通過(guò)主動(dòng)承擔(dān)起管理數(shù)據(jù)庫(kù)技術(shù)債的責(zé)任,DBA從被動(dòng)的維護(hù)者轉(zhuǎn)變?yōu)橹鲃?dòng)的敏捷性和成本控制的推動(dòng)者。這一角色既需要技術(shù)洞察力,也需要業(yè)務(wù)敏銳度,并且它強(qiáng)調(diào)了DBA在快速變化的數(shù)據(jù)環(huán)境中保持持久不衰的價(jià)值。
最后總結(jié)
與其他債務(wù)類(lèi)似,技術(shù)債也會(huì)產(chǎn)生“利息”。被忽視的時(shí)間越長(zhǎng),解決起來(lái)就越痛苦、成本越高。對(duì)DBA而言,管理技術(shù)債或許并不總是光鮮亮麗,但它對(duì)于保持?jǐn)?shù)據(jù)庫(kù)環(huán)境高效、可靠并面向未來(lái)做好準(zhǔn)備至關(guān)重要。
作者:Craig S. Mullins
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.