|
傳統(tǒng)上,數(shù)據(jù)的清理和歸檔屬于DBA的職責,隨著企業(yè)數(shù)字化轉(zhuǎn)型、數(shù)據(jù)治理工作的推進,這項工作也被納入了數(shù)據(jù)治理工作的重要內(nèi)容。數(shù)據(jù)團隊定期將應用系統(tǒng)線上過期的數(shù)據(jù)清理并歸入數(shù)據(jù)湖中,以提供查詢和分析所用。 為什么需要數(shù)據(jù)清洗和歸檔? 隨著長時間的累積,一些關鍵的業(yè)務系統(tǒng)中積累了大量的歷史交易數(shù)據(jù),這些歷史數(shù)據(jù)使得這些系統(tǒng)變得越來越龐大,并且在維護上也越來越復雜。 數(shù)據(jù)量的快速增長已經(jīng)成為了IT管理部門所面對的最難于解決的問題之一,因為數(shù)據(jù)量的增長已經(jīng)嚴重降低了應用程序的性能,降低了應用程序的穩(wěn)定性,并且消耗了大量的投資,同時對備份與恢復也增加了巨大的負擔。 對于IT管理部門來說,不能永無止境的投入大量資金來升級我們的存儲、加大存儲容量、提高服務器性能,以此來滿足不斷增長的數(shù)據(jù)量。提高存儲容量和提高服務器的處理能力只能暫時的解決我們所面臨的問題。通過數(shù)據(jù)清理和數(shù)據(jù)歸檔的實施可以有效的提高數(shù)據(jù)庫性能,確保核心業(yè)務不會因為長時間數(shù)據(jù)積累而出現(xiàn)性能問題,從而應用可以更加迅捷地為客戶提供優(yōu)質(zhì)服務,從而提高企業(yè)信譽、提升企業(yè)的核心競爭力。 數(shù)據(jù)清洗和歸檔方案 當前許多存儲備份廠商都都提出數(shù)據(jù)清理和歸檔解決方案,提供了一整套的流程和技術來管理信息數(shù)據(jù)從產(chǎn)生時刻到該數(shù)據(jù)失去價值的整個過程。幫助客戶制定數(shù)據(jù)在不同的生命周期階段制定不同的訪問和過期策略;幫助企業(yè)設置和執(zhí)行數(shù)據(jù)生命周期過程中的數(shù)據(jù)管理策略,將歷史交易數(shù)據(jù)從生產(chǎn)數(shù)據(jù)庫上遷移到在線的歸檔數(shù)據(jù)庫上(online archive)。 在線歸檔與離線歸檔(offline archive)的最大區(qū)別在于在線歸檔數(shù)據(jù)庫保持對遷移后的歸檔數(shù)據(jù)的實時訪問,而離線歸檔數(shù)據(jù)可以用于數(shù)據(jù)的長期保存,并提供有限的查詢能力。 通過這種歷史交易的遷移,使得企業(yè)能夠在已有的IT架構基礎上支持更好的應用系統(tǒng)性能,在無需服務器升級和存儲擴容的基礎上滿足企業(yè)業(yè)務增長的需要。 同時在生產(chǎn)數(shù)據(jù)庫上保存更少的數(shù)據(jù)能夠有效的降低容災、復制、備份和恢復的成本消耗,降低企業(yè)對于IT系統(tǒng)的總體擁有成本,尤其是后期的維護成本。 通過制定合理的數(shù)據(jù)歸檔方案,制定一套自動化管理的流程流程可以幫助客戶建立歷史數(shù)據(jù)的保留策略,提供歷史數(shù)據(jù)的歸檔抽取、歷史數(shù)據(jù)的保存、歷史數(shù)據(jù)的檢索等一體化功能,將歷史數(shù)據(jù)從生產(chǎn)系統(tǒng)中重新遷移到歸檔數(shù)據(jù)庫上。 幫助客戶實現(xiàn)歷史數(shù)據(jù)的分級存放,透明訪問,提高生產(chǎn)系統(tǒng)的性能,降低IT的總體投資(TCO):1、定義數(shù)據(jù)生命周期的各個環(huán)節(jié),包括數(shù)據(jù)的產(chǎn)生、訪問、保留策略以及數(shù)據(jù)在不同的時間點上的服務級別需求(SLA);2、監(jiān)控、預測數(shù)據(jù)的增長趨勢,搭建和執(zhí)行數(shù)據(jù)的過期策略,從而將歷史交易數(shù)據(jù)定期從生產(chǎn)系統(tǒng)中遷移到在線的歸檔數(shù)據(jù)庫上,創(chuàng)建一個用戶可透明訪問的歷史數(shù)據(jù)管理平臺;3、改造現(xiàn)有應用系統(tǒng),使原有的業(yè)務系統(tǒng)可以透明訪問歷史數(shù)據(jù)。雖然最簡單的方式是仿照生產(chǎn)系統(tǒng)搭建一套歷史數(shù)據(jù)查詢系統(tǒng),但是最佳的解決方案還是在業(yè)務系統(tǒng)中進行改造升級,使用戶感受不到數(shù)據(jù)歸檔帶來的數(shù)據(jù)訪問的變化。就像現(xiàn)在銀行的當天交易查詢和歷史交易查詢的融合,二十年前這兩種查詢要分開進行,十分不便。 數(shù)據(jù)分類歸檔的方式 任何數(shù)據(jù)都有一定的生命周期,從數(shù)據(jù)產(chǎn)生(輸入或者被采集)到使用到過期。所不同的是數(shù)據(jù)的保存周期不同,數(shù)據(jù)的保存方式不同。 一般來說,根據(jù)數(shù)據(jù)生命周期和保管方式不同,可以分為幾大類: 永久在線數(shù)據(jù):這類數(shù)據(jù)不需要歸檔,從系統(tǒng)上線開始一直在線。這類數(shù)據(jù)的特點是數(shù)據(jù)量不大(一般從幾十K到幾百M不等),數(shù)據(jù)較為靜態(tài),變更量不大(比如參數(shù)數(shù)據(jù)、用戶檔案數(shù)據(jù)); 周期性在線數(shù)據(jù):這類數(shù)據(jù)往往在某個周期性事件中被采集往往具有很強的時間周期特性(比如月度周期),這些數(shù)據(jù)在采集后被集中處理,處理形成匯總或者帳務數(shù)據(jù)。數(shù)據(jù)處理后,在一定周期內(nèi)還需要被查詢,一定時間周期后查詢量逐漸減少; 工作流性質(zhì)的數(shù)據(jù):具有一定的實效性,根據(jù)流程的狀態(tài)判斷是否需要繼續(xù)一級在線,歸檔不僅僅取決于時間,還取決于某些條件; 一級匯總數(shù)據(jù):根據(jù)明細匯總的數(shù)據(jù),可以在明細數(shù)據(jù)歸檔或者刪除后提供統(tǒng)計查詢。一般在線1年或者數(shù)年; 二級/多級匯總數(shù)據(jù):在一級匯總數(shù)據(jù)基礎上匯總的數(shù)據(jù),數(shù)據(jù)量較小,可以長期保留; 臨時數(shù)據(jù):臨時使用,使用后應該馬上清理的數(shù)據(jù)。不過在往往清理力度不足,導致長期在線。每個數(shù)據(jù)在其生命周期內(nèi),其存儲的方式也有多種形態(tài), 根據(jù)其訪問的便利性,我們分為: 生產(chǎn)庫在線存放,當前數(shù)據(jù):保存在生產(chǎn)庫的當前數(shù)據(jù)表中; 生產(chǎn)庫在線存放,歷史數(shù)據(jù):保存在生產(chǎn)庫的歷史數(shù)據(jù)表中(與生產(chǎn)數(shù)據(jù)同庫,在軟件設計階段做好設計,讓客戶感受不到這種分表存儲); 歷史庫在線存放:從生產(chǎn)庫中轉(zhuǎn)移到歷史庫,并在生產(chǎn)庫中刪除該數(shù)據(jù); 離線歸檔存放:存放在離線介質(zhì)中(比如對象存儲、磁帶庫,光盤庫等)。有些系統(tǒng)中生產(chǎn)庫中沒有區(qū)分歷史數(shù)據(jù)和當前數(shù)據(jù),是統(tǒng)一存放的,這樣存放的好處是應用程序處理起來比較簡單,不需要專門設計歷史數(shù)據(jù)查詢模塊。 但缺點有幾個方面: 1、生產(chǎn)數(shù)據(jù)邏輯備份耗時較長; 2、表的高水位過高,全表掃描的開銷太大; 3、業(yè)務人員可能做隨意的大范圍查詢,消耗過多資源。 由于歷史原因?qū)е逻@些數(shù)據(jù)較難進行歷史歸檔,那么也可以利用某些數(shù)據(jù)庫存在的ONLINE ARCHIVE在線歸檔功能進行在庫歸檔。比如說Oracle數(shù)據(jù)庫12c開始支持的在線數(shù)據(jù)歸檔功能,可以把某些數(shù)據(jù)記錄標記為歸檔模式,此時普通的掃描操作就會繞過這些數(shù)據(jù),只有通過alert session設置才能看到這些數(shù)據(jù)。這種數(shù)據(jù)歸檔方式雖然沒有真正的歸檔效果好,不過也聊勝于無了。Oracle的這個功能是跟隨著12c的數(shù)據(jù)全生命周期管理功能而來的。 數(shù)據(jù)歸檔的模式和場景 數(shù)據(jù)根據(jù)其特點分級管理除了能夠明確的區(qū)分數(shù)據(jù)的使用范圍,規(guī)范老數(shù)據(jù)的使用方式,還可以有效的控制IT系統(tǒng)容量增長的規(guī)模,使之從級數(shù)增長變?yōu)榫€性增長,減緩數(shù)據(jù)增長還可以有效的提高系統(tǒng)的性能。防止由于數(shù)據(jù)量過大帶來的系統(tǒng)性能的大幅下降。
系統(tǒng)級定期歸檔是脫離于具體應用模塊的業(yè)務邏輯的,一般采取每天歸檔、月度歸檔、季度歸檔、年度歸檔幾個粒度進行。每天歸檔一般通過定期任務完成,適合于每天歸檔數(shù)據(jù)不多的場合。這種歸檔粒度可以有效的控制數(shù)據(jù)的高水位問題,刪除的空記錄可以馬上被重用。這種歸檔模式也有一定的局限性,比較適合生產(chǎn)系統(tǒng)上能夠明確區(qū)分當前數(shù)據(jù)和歷史數(shù)據(jù)的場合。 將數(shù)據(jù)從生產(chǎn)表復制到歷史表后刪除生產(chǎn)表的數(shù)據(jù)。如果系統(tǒng)中沒有設計歷史表,那么僅適用于歷史數(shù)據(jù)不需要歸檔,只需要清除的場合。否則數(shù)據(jù)管理的難度較大。每天歸檔模式一般使用數(shù)據(jù)庫的delete語句進行數(shù)據(jù)刪除。 月度、季度和年度歸檔是最為常用的歸檔模式。每次清理的數(shù)據(jù)量較大,一般是數(shù)據(jù)先轉(zhuǎn)儲再清理。這種方式既適合同數(shù)據(jù)庫的轉(zhuǎn)儲,也適合不同數(shù)據(jù)庫的轉(zhuǎn)儲。 由于處理的數(shù)據(jù)量比較大,如果使用delete,處理時間較長,因此一般采用分區(qū)表操作來提高歸檔效率,比如通過交換分區(qū)的方式先將數(shù)據(jù)交換出去,然后再慢慢處理,這樣就能避免對生產(chǎn)系統(tǒng)造成較大的影響。每日數(shù)據(jù)歸檔一般按照一定的條件進行數(shù)據(jù)歸檔處理,其主要特點是一般會根據(jù)某個時間戳條件外加一些其他的約束條件篩選符合歸檔條件的數(shù)據(jù)。歸檔方式主要有批量和單條兩種方式。 月度、季度、年度數(shù)據(jù)歸檔都是一種相對長周期的數(shù)據(jù)歸檔,每次歸檔的數(shù)據(jù)量較大,因此歸檔方案選擇上十分關鍵。 對于做每日數(shù)據(jù)歸檔的系統(tǒng),一般來說月度、季度、年度數(shù)據(jù)歸檔的主要目的是從生產(chǎn)庫中將歷史查詢表的數(shù)據(jù)歸檔到二級查詢系統(tǒng)或者備份介質(zhì)中。也有部分業(yè)務數(shù)據(jù)從生產(chǎn)表到歷史表的轉(zhuǎn)儲也是采用月度或者年度的周期進行。 數(shù)據(jù)清理工作是可以和數(shù)據(jù)歸檔工作同步進行的,也可以單獨進行。數(shù)據(jù)庫使用時間長了,總會有一些碎片化的東西,比如表碎片、表空間碎片、文件碎片、索引碎片。 還有一些表的高水位異常,這些都會導致數(shù)據(jù)文件虛胖,數(shù)據(jù)庫性能下降,定期進行數(shù)據(jù)清理工作也是十分必要的。通過shrink命令或者Move操作進行表的碎片整理,通過rebuild命令重建索引等工作都是十分有效的提高業(yè)務系統(tǒng)性能的小技巧。 總結 一個數(shù)據(jù)庫運維人員,如果只是從數(shù)據(jù)庫運行狀態(tài)來進行監(jiān)控與運維,不關注數(shù)據(jù)庫中的數(shù)據(jù)的變化,也不進行數(shù)據(jù)歸檔與清理工作,那么你的DBA工作是不完整的。 |
|
|