序數(shù)據(jù)庫_千億級(jí)數(shù)據(jù)壓縮與高速寫入實(shí)戰(zhàn))
工業(yè)互聯(lián)網(wǎng)、能源數(shù)字化、智能制造的浪潮之下設(shè)備監(jiān)測、電力采集、生產(chǎn)過程指標(biāo)等時(shí)序數(shù)據(jù)的體量正在以肉眼可見的速度膨脹。對(duì)于需要長年累月運(yùn)轉(zhuǎn)的業(yè)務(wù)系統(tǒng)來說時(shí)序數(shù)據(jù)庫的考題早已不只是寫得進(jìn)、查得出更在于海量的歷史數(shù)據(jù)能不能存得起、搬得動(dòng)、管得好。面對(duì)工業(yè)場景中時(shí)序數(shù)據(jù)體量大、增速猛、留存久的三大特征金倉時(shí)序數(shù)據(jù)庫持續(xù)打磨存儲(chǔ)壓縮、歷史數(shù)據(jù)快速插入與時(shí)序數(shù)據(jù)組織三大核心能力讓海量時(shí)序數(shù)據(jù)的存儲(chǔ)更省錢、處理更高效。高效壓縮把海量數(shù)據(jù)的存儲(chǔ)成本打下來工業(yè)現(xiàn)場的時(shí)序數(shù)據(jù)大多按固定周期不間斷采集相鄰采樣點(diǎn)之間天然帶有很強(qiáng)的規(guī)律性。倘若沿用傳統(tǒng)的存儲(chǔ)方式大量重復(fù)信息將白白吃掉存儲(chǔ)空間——數(shù)據(jù)攢得越久存儲(chǔ)賬單就越驚人。順著時(shí)序數(shù)據(jù)的這一脾氣金倉時(shí)序數(shù)據(jù)庫對(duì)存儲(chǔ)引擎做了深度優(yōu)化綜合運(yùn)用 Delta-of-Delta 差值編碼、Gorilla XOR 壓縮、字典編碼以及列式存儲(chǔ)優(yōu)化等技術(shù)手段充分榨取時(shí)序數(shù)據(jù)自身的規(guī)律壓縮冗余信息把存儲(chǔ)空間的利用率拉上去。這幾種技術(shù)并非簡單堆疊而是各管一段、協(xié)同發(fā)力壓縮技術(shù)核心原理針對(duì)的數(shù)據(jù)特征Delta-of-Delta 差值編碼存儲(chǔ)時(shí)間戳差值的差值而非原始值固定周期采集、時(shí)間間隔高度規(guī)律Gorilla XOR 壓縮相鄰浮點(diǎn)值做異或只記錄非零差異位數(shù)值變化平緩、相鄰采樣值接近字典編碼用短整型替代重復(fù)出現(xiàn)的字符串設(shè)備編號(hào)、狀態(tài)碼等低基數(shù)字段列式存儲(chǔ)優(yōu)化同列數(shù)據(jù)連續(xù)存放提升編碼效率字段類型統(tǒng)一、批量掃描為主在某省智能電表場景的真實(shí)驗(yàn)證中金倉時(shí)序數(shù)據(jù)庫面對(duì) 500 萬個(gè)觀測點(diǎn)、一年累計(jì) 1956 億行的數(shù)據(jù)規(guī)模實(shí)測壓縮比達(dá)到45:1約為業(yè)界平均水平的 3.6 倍存儲(chǔ)成本由此大幅下降。實(shí)際使用中為時(shí)序超表開啟壓縮并配置自動(dòng)壓縮策略只需要幾條語句以兼容 TimescaleDB 的語法為例-- 開啟壓縮按設(shè)備點(diǎn)位分段、按時(shí)間排序ALTERTABLEmeter_dataSET(timescaledb.compress,timescaledb.compress_segmentbypoint_id,timescaledb.compress_orderbytime DESC);-- 配置壓縮策略7 天前的歷史數(shù)據(jù)自動(dòng)轉(zhuǎn)入壓縮存儲(chǔ)SELECTadd_compression_policy(meter_data,INTERVAL7 days);熱數(shù)據(jù)保持行存以便實(shí)時(shí)寫入與查詢冷數(shù)據(jù)自動(dòng)轉(zhuǎn)為壓縮列存——存儲(chǔ)賬單的大頭就這樣被削掉了??焖賹懭胱寶v史數(shù)據(jù)加載不再慢吞吞無論是系統(tǒng)升級(jí)、數(shù)據(jù)遷移還是數(shù)據(jù)平臺(tái)搭建、智能分析應(yīng)用落地企業(yè)幾乎繞不開同一件事把多年沉淀下來的歷史數(shù)據(jù)快速搬進(jìn)新的數(shù)據(jù)環(huán)境。可當(dāng)遷移規(guī)模達(dá)到 TB 級(jí)甚至更高時(shí)傳統(tǒng)的數(shù)據(jù)導(dǎo)入方式很容易在寫入效率和數(shù)據(jù)組織方式上掉鏈子——數(shù)據(jù)準(zhǔn)備周期被一再拉長業(yè)務(wù)上線和數(shù)據(jù)應(yīng)用的節(jié)奏也隨之被拖慢。瞄準(zhǔn)這一痛點(diǎn)金倉時(shí)序數(shù)據(jù)庫專門強(qiáng)化了歷史數(shù)據(jù)的快速插入能力通過面向時(shí)序場景的寫入路徑優(yōu)化讓大規(guī)模歷史數(shù)據(jù)的批量加載跑出了加速度。在分布式部署環(huán)境的測試中1956 億行數(shù)據(jù)全部寫入僅耗時(shí) 701 分鐘平均寫入速度高達(dá) 465 萬行/秒達(dá)到業(yè)界水平的 2.3 倍以上。工程實(shí)踐中批量加載歷史數(shù)據(jù)時(shí)還有幾個(gè)立竿見影的技巧導(dǎo)入前暫緩索引與壓縮策略采用批量提交代替逐行插入導(dǎo)入完成后再重建索引、開啟壓縮-- 批量導(dǎo)入使用 COPY 協(xié)議一次性載入遠(yuǎn)快于逐行 INSERTCOPY meter_dataFROM/data/history_2024.csvWITH(FORMAT csv);-- 導(dǎo)入完成后再為常用查詢維度補(bǔ)建索引CREATEINDEXidx_meter_point_timeONmeter_data(point_id,timeDESC);時(shí)序優(yōu)化讓海量數(shù)據(jù)管理事半功倍工業(yè)場景里的時(shí)序數(shù)據(jù)除了規(guī)模龐大還帶著設(shè)備多、頻率高、跨度長的鮮明標(biāo)簽。數(shù)據(jù)如何按照時(shí)間序列的特性來組織直接決定了數(shù)據(jù)庫的處理效率。為此金倉時(shí)序數(shù)據(jù)庫提供了面向時(shí)序場景深度優(yōu)化的數(shù)據(jù)組織方式借助時(shí)序超表機(jī)制為數(shù)據(jù)管理提效。創(chuàng)建一張時(shí)序超表只需在建表之后追加一句聲明-- 普通建表CREATETABLEmeter_data(timeTIMESTAMPTZNOTNULL,point_idBIGINTNOTNULL,voltageDOUBLEPRECISION,currentDOUBLEPRECISION,powerDOUBLEPRECISION);-- 一句聲明升級(jí)為按時(shí)間自動(dòng)分區(qū)的時(shí)序超表SELECTcreate_hypertable(meter_data,time);此后數(shù)據(jù)的按時(shí)間分區(qū)、冷熱分層、過期清理都由超表機(jī)制自動(dòng)打理不再依賴人工維護(hù)分區(qū)。在數(shù)據(jù)規(guī)模與表結(jié)構(gòu)完全相同的前提下時(shí)序超表與普通分區(qū)表同場競技的結(jié)果相當(dāng)直觀對(duì)比場景時(shí)序超表普通分區(qū)表性能差距實(shí)時(shí)插入404 秒549 秒提速約 26%曲線查詢253 毫秒4834 毫秒19.1 倍實(shí)時(shí)插入場景下時(shí)序超表耗時(shí) 404 秒普通分區(qū)表則要 549 秒曲線查詢場景下時(shí)序超表僅耗時(shí) 253 毫秒普通分區(qū)表卻需要 4834 毫秒——性能差距拉大到 19.1 倍。查詢側(cè)的差距之所以懸殊正是因?yàn)槌頇C(jī)制讓按時(shí)間范圍的裁剪與聚合都發(fā)生在了更小的數(shù)據(jù)塊上。結(jié)語隨著企業(yè)數(shù)字化建設(shè)持續(xù)走向縱深時(shí)序數(shù)據(jù)正日益成為業(yè)務(wù)分析、設(shè)備運(yùn)維與智能決策的重要底座。面對(duì)只增不減的數(shù)據(jù)規(guī)模企業(yè)所需要的早已不只是一個(gè)寫數(shù)據(jù)快的數(shù)據(jù)庫更是一套能夠長期承載海量數(shù)據(jù)、高效打理歷史數(shù)據(jù)的數(shù)據(jù)基礎(chǔ)設(shè)施?;乜幢敬螌?shí)測的三項(xiàng)關(guān)鍵指標(biāo)金倉時(shí)序數(shù)據(jù)庫交出的答卷足夠扎實(shí)核心能力實(shí)測指標(biāo)對(duì)比業(yè)界水平高效壓縮壓縮比 45:11956 億行約 3.6 倍快速寫入465 萬行/秒701 分鐘寫滿2.3 倍以上時(shí)序優(yōu)化曲線查詢 253 毫秒超普通分區(qū)表 19.1 倍金倉時(shí)序數(shù)據(jù)庫正是憑借高效壓縮、歷史數(shù)據(jù)快速插入與時(shí)序場景優(yōu)化這三板斧幫助企業(yè)壓低海量數(shù)據(jù)的存儲(chǔ)成本、加快數(shù)據(jù)加載效率讓不斷增長的時(shí)序數(shù)據(jù)真正高效地為業(yè)務(wù)所用。