大數據治理域——數據存儲與成本管理

摘要

本文主要探討了數據存儲與成本管理的多種策略。介紹了數據壓縮技術,如MaxCompute的archive壓縮方法,通過RAID file形式存儲數據,可有效節省空間,但恢復時間較長,適用于冷備與日志數據。還詳細闡述了數據生命周期管理策略,包括周期性刪除、徹底刪除、永久保留、極限存儲、冷數據管理以及增量表merge全量表策略,并提出了通用的生命周期管理矩陣,以及數據成本量和數據使用費的概念,旨在優化數據存儲治理,降低成本。

1. 數據壓縮

在分布式文件系統中,為了提高數據的可用性與性能,通常會將數據存儲3份,這就意味著存儲1TB的邏輯數據,實際上會占用3TB的物理空間。目前MaxCompute中提供了archive壓縮方法,它采用了具有更高壓縮比的壓縮算法,可以將數據保存為RAID file的形式,數據不再簡單地保存為3份,而是使用盤古RAID file的默認值(6,3)格式的文件,即6份數據+3份校驗塊的方式,這樣能夠有效地將存儲比約為1:3提高到1:l.5,大約能夠省下一半的物理空間。當然,使用archive壓縮方式也有一定的風險,如果某個數據塊出現了損壞或者某臺機器宕機損壞了,恢復數據塊的時間將要比原來的方式更長,讀的性能會有一定的損失。因此,目前一般將archive壓縮方法應用在冷備數據與日志數據的壓縮存儲上。

例如,一些非常大的淘系日志數據,底層數據超過一定的時間期限后使用的頻率非常低,但是又是屬于不可恢復的重要數據,對于這部分數據就可以考慮對歷史數據的分區進行archive壓縮,使用RAID file來存儲,以此來節省存儲空間。示例如下:

alter table A partition(ds='20130101')archive;

在輸出信息中可以看到archive前后的邏輯存儲(File size)和物理存儲(File physical size)的變化情況,而且在這個過程中會將多個小文件自動合并。

2. 數據重分布

在MaxCompute中主要采用基于列存儲的方式,由于每個表的數據分布不同,插入數據的順序不一樣,會導致壓縮效果有很大的差異,因此通過修改表的數據重分布,避免列熱點,將會節省一定的存儲空間。目前我們主要通過修改distribute by和sort by字段的方法進行數據重分布,如圖14.1所示。

重分布前后一些底層大表的效果對比如表14.2所示。

3. 存儲治理項優化

阿里巴巴數據倉庫在資源管理的過程中,經過不斷地實踐,慢慢摸索出一套適合大數據的存儲優化方法,在元數據的基礎上,診斷、加工成多個存儲治理優化項。目前已有的存儲治理優化項有未管理表、空表、最近62天未訪問表、數據無更新無任務表、數據無更新有任務表、開發庫數據大于100GB且無訪問表、長周期表等。通過對該優化項的數據診斷,形成治理項,治理項通過流程的方式進行運轉、管理,最終推動各個ETL開發人員進行操作,優化存儲管理,并及時回收優化的存儲效果。在這個體系下,形成現狀分析、問題診斷、管理優化、效果反饋的存儲治理項優化的閉環。通過這個閉環,可以有效地推進數據存儲的優化,降低存儲管理的成本。

存儲治理項優化的主要流程如圖14.2所示。

4. 數據生命周期管理

MaxCompute作為阿里巴巴集團的大數據計算及服務引擎,存儲著阿里系大量且非常重要的數據,從數據價值及數據使用性方面綜合考慮,數據的生命周期管理是存儲管理的一項重要手段。生命周期管理的根本目的就是用最少的存儲成本來滿足最大的業務需求,使數據價值最大化。

4.1. 生命周期管理策略

4.1.1. 周期性刪除策略

所存儲的數據都有一定的有效期,從數據創建開始到過時,可以周期性刪除X天前的數據。例如對于MySQL業務庫同步到MaxCompute的全量數據,或者ETL過程產生的結果數據,其中某些歷史數據可能已經沒有價值,且占用存儲成本,那么針對無效的歷史數據就可以進行定期清理。

4.1.2. 徹底刪除策略

無用表數據或者ETL過程產生的臨時數據,以及不需要保留的數據,可以進行及時刪除,包括刪除元數據。

4.1.3. 永久保留策略

重要且不可恢復的底層數據和應用數據需要永久保留。比如底層交易的增量數據,出于存儲成本與數據價值平衡的考慮,需要永久保留,用于歷史數據的恢復與核查。

4.1.4. 極限存儲策略

極限存儲可以超高壓縮重復鏡像數據,通過平臺化配置手段實現透明訪問;缺點是對數據質量要求非常高,配置與維護成本比較高,建議一個分區有超過5GB的鏡像數據(如商品維表、用戶維表)就使用極限存儲。

4.1.5. 冷數據管理策略

冷數據管理是永久保留策略的擴展。永久保留的數據需要遷移到冷數據中心進行永久保存,同時將MaxCompute中對應的數據刪除。一般將重要且不可恢復的、占用存儲空間大于100TB,且訪問頻次較低的數據進行冷備,例如3年以上的日志數據。

4.1.6. 增量表merge全量表策略

對于某些特定的數據,極限存儲在使用性與存儲成本方面的優勢不是很明顯,需要改成增量同步與全量merge的方式,對于對應的delta增量表的保留策略,目前默認保留93天。例如,交易增量數據,使用訂單創建日期或者訂單結束日期作為分區,同時將未完結訂單放在最大分區中,對于存儲,一個訂單在表里只保留一份;對于用戶使用,通過分區條件就能查詢某一段時間的數據。

4.2. 通用的生命周期管理矩陣

隨著業務的發展和不斷的數據實踐,我們慢慢摸索出一套適合大數據生命周期管理的規范,主要通過對歷史數據的等級劃分與對表類型的劃分生成相應的生命周期管理矩陣。

4.2.1. 歷史數據等級劃分

目前我們對歷史數據進行了重要等級的劃分,主要將歷史數據劃分為P0、P1、P2、P3四個等級,其具體定義如下。

  1. P0:非常重要的主題域數據和非常重要的應用數據,具有不可恢復性,如交易、日志、集團KPI數據、IPO關聯表。
  2. P1:重要的業務數據和重要的應用數據,具有不可恢復性,如重要的業務產品數據。
  3. P2:重要的業務數據和重要的應用數據,具有可恢復性,如交易線ETL產生的中間過程數據。
  4. P3:不重要的業務數據和不重要的應用數據,具有可恢復性,如某些SNS產品報表。

4.2.2. 表類型劃分

  1. 事件型流水表(增量表)

事件型流水表(增量表)指數據無重復或者無主鍵數據,如日志。

  1. 事件型鏡像表(增量表)

事件型鏡像表(增量表)指業務過程性數據,有主鍵,但是對于同樣主鍵的屬性會發生緩慢變化,如交易、訂單狀態與時間會根據業務發生變更。

  1. 維表

維表包括維度與維度屬性數據,如用戶表、商品表。

  1. Merge全量表

Merge全量表包括業務過程性數據或者維表數據。由于數據本身有新增的或者發生狀態變更,對于同樣主鍵的數據可能會保留多份,因此可以對這些數據根據主鍵進行Merge操作,主鍵對應的屬性只會保留最新狀態,歷史狀態保留在前一天分區中。例如,用戶表、交易表等都可以進行Merge操作。

  1. ETL臨時表

ETL臨時表是指ETL處理過程中產生的臨時表數據,一般不建議保留,最多7天。

  1. TT臨時數據

TT拉取的數據和DbSync產生的臨時數據最終會流轉到ODS層,ODS層數據作為原始數據保留下來,從而使得TT&DbSync上游數據成為臨時數據。這類數據不建議保留很長時間,生命周期默認設置為93天,可以根據實際情況適當減少保留天數。

  1. 普通全量表

很多小業務數據或者產品數據,BI一般是直接全量拉取,這種方式效率快,對存儲壓力也不是很大,而且表保留很長時間,可以根據歷史數據等級確定保留策略。

通過上述歷史數據等級劃分與表類型劃分,生成相應的生命周期管理矩陣,如表14.3所示。

MaxCompute集群中海量數據的存儲和大量計算任務每天都會消耗巨額成本,并且隨著數據量的不斷增長,這個成本還在逐步增加。如何在服務好業務的前提下,更好地管控數據成本,提升資源利用率,已成為數據資產管理工作中非常重要的一環。

在阿里巴巴集團內部,大部分數據都會存儲在MaxCompute集群上,數據以數據表的形式存在,并且數據表之間存在比較復雜的關聯和上下游依賴關系。可以把數據表之間的依賴關系用樹形結構形象化地表示,如圖14.3所示。圖中的A、B、C等代表不同的數據表,帶箭頭的連線代表數據表之間的依賴和關聯關系。比如數據表B、C、D都依賴數據表A,數據表E依賴數據表B和C。

MaxCompute中的任何一個計算任務都會涉及計算和存儲資源的消耗,其中計算資源的消耗主要考慮CPU消耗。為了下面更好地描述數據計量計費的算法和規則,特做如下定義:CPU消耗的單位定義為CU,代表CPU的一個核心(Core)運行一天的消耗量。存儲資源的消耗主要考慮磁盤存儲的消耗,這里采用國際通用的存儲單位PB來衡量。例如:計算資源的單價為1元/CU,存儲資源的單價為1元/PB天。

4.3. 數據成本量

對數據成本的計量,可以采用最簡單的方式,將一個數據表的成本分為存儲成本和計算成本。存儲成本是為了計量數據表消耗的存儲資源,計算成本是為了計量數據計算過程中的CPU消耗。但是,對這樣的數據成本計量方式會存在較大的質疑和挑戰。例如,如圖14.4所示,表D是業務方的一個數據表,表D依賴表C,但是為了產生表C,往往上面存在一個較長的數據刷新鏈路。表C的成本可能是10元,但是表A、B可能會是100元。像這樣的情況,如果表C的成本僅僅用數據表C自身的存儲和計算成本衡量顯然是不合理、不準確的。

因此,在計量數據表的成本時,除考慮數據表本身的計算成本、存儲成本外,還要考慮對上游數據表的掃描帶來的掃描成本。我們將數據成本定義為存儲成本、計算成本和掃描成本三個部分。

通過在數據成本計量中引入掃描成本的概念,可以避免僅僅將表自身硬件資源的消耗作為數據表的成本,以及對數據表成本進行分析時,孤立地分析單獨的一個數據表,能夠很好地體現出數據在加工鏈路中的上下游依賴關系,使得成本的評估盡量準確、公平、合理。

4.4. 數據使用費

在上一節中,已經清楚地將數據成本分為:存儲成本、計算成本和掃描成本。那么對于數據表的使用計費,在阿里巴巴集團內部,分別依據這三部分成本進行收費,稱為:計算付費、存儲付費和掃描付費。

我們把數據資產的成本管理分為數據成本計量和數據使用計費兩個步驟。通過成本計量,可以比較合理地評估出數據加工鏈路中的成本,從成本的角度反映出在數據加工鏈路中是否存在加工復雜、鏈路過長依賴不合理等問題,間接輔助數據模型優化,提升數據整合效率;通過數據使用計費,可以規范下游用戶的數據使用方法,提升數據使用效率,從而為業務提供優質的數據服務。

博文參考

《阿里巴巴大數據實戰》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910290.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910290.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910290.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

國產Linux銀河麒麟操作系統上使用自帶openssh遠程工具SSH方式登陸華為交換機或服務器

在Windows和Linux Debian系統上我一直使用electerm遠程工具訪問服務器或交換機, 一、 electerm簡介 簡介:electerm是一款開源免費的SSH工具,具有良好的跨平臺兼容性,適用于Windows、macOS、Linux以及麒麟操作系統。特點&#xf…

Logback 在java中的使用

Logback 是 Java 應用中廣泛使用的日志框架&#xff0c;以下是其核心使用方法及最佳實踐&#xff1a; 1. 引入依賴 在 Maven 或 Gradle 項目中添加 Logback 及 SLF4J 依賴&#xff1a; <!-- Maven --> <dependency><groupId>ch.qos.logback</groupId>…

Axure應用交互設計:中繼器—整行、條件行、當前行賦值

親愛的小伙伴,如有幫助請訂閱專欄!跟著老師每課一練,系統學習Axure交互設計課程! Axure產品經理精品視頻課https://edu.csdn.net/course/detail/40420 課程主題:對中繼器中:整行、符合某種條件的任意行、當前行的賦值操作 課程視頻:

ToolsSet之:TTS及Morse編解碼

ToolsSet是微軟商店中的一款包含數十種實用工具數百種細分功能的工具集合應用&#xff0c;應用基本功能介紹可以查看以下文章&#xff1a; Windows應用ToolsSet介紹https://blog.csdn.net/BinField/article/details/145898264其中Text菜單中的TTS & Morse可用于將文本轉換…

【C++】編碼傳輸:創建零拷貝幀對象4:shared_ptr轉unique_ptr給到rtp打包

【C++】編碼傳輸:創建零拷貝幀對象3: dll api轉換內部的共享內存根本原因 你想要的是基于 packet 指向的那個已有對象,拷貝(或移動)出一個新的 VideoDataPacket3 實例,因此需要把那個對象本身傳進去——也就是 *packet。copilot的原因分析與gpt一致 The issue is with t…

基于UDP的套接字通信

udp是一個面向無連接的&#xff0c;不安全的&#xff0c;報式傳輸層協議&#xff0c;udp的通信過程默認也是阻塞的。使用UDP進行通信&#xff0c;服務器和客戶端的處理步驟比TCP要簡單很多&#xff0c;并且兩端是對等的 &#xff08;通信的處理流程幾乎是一樣的&#xff09;&am…

華為CE交換機抓包

capture-packet interface 100GE1/0/5 destination file 001.cap packet-len 64 注&#xff1a;早期版本&#xff08;disp device&#xff09;可能在系統視圖下&#xff08;sys&#xff09; 抓完包后可以看到對應文件&#xff08;早期版本在根目錄下&#xff09;&#xff1a;…

Python 數據分析與可視化 Day 3 - Pandas 數據篩選與排序操作

&#x1f3af; 今日目標 掌握 DataFrame 的條件篩選&#xff08;布爾索引&#xff09;學會多條件篩選、邏輯運算熟練使用排序&#xff08;sort_values&#xff09;提升數據組織力結合列選擇進行數據提取分析 &#x1f9ea; 一、列選擇與基本篩選 ? 選擇單列 / 多列 df[&quo…

Vite項目初始化與配置

下面,我們來系統的梳理關于 Vite 項目初始化與配置 的基本知識點: 一、Vite 核心概念與優勢 1.1 什么是 Vite? Vite(法語意為 “快速”)是新一代的前端構建工具,由 Vue.js 作者尤雨溪開發。它解決了傳統構建工具(如 Webpack)在開發環境中的性能瓶頸問題。 1.2 Vite …

Transformer中的核心問題 知識點匯總

Transformer架構圖 transformer整體架構 1. Transformer 的參數配置 Transformer 的Encoder層和Decoder層都使用6個注意力模塊&#xff0c;所有的子網絡的輸出維度均為512維&#xff0c;多頭注意力部分使用了8個注意力頭。 2. 歸一化的方式 歸一化的方式為LayerNorm&#xff0c…

python web開發-Flask數據庫集成

Flask 數據庫集成完全指南&#xff1a;Flask-SQLAlchemy 實踐 1. 引言 數據庫是現代Web應用的核心組件&#xff0c;Flask通過Flask-SQLAlchemy擴展提供了強大的數據庫集成能力。本文將全面介紹如何在Flask應用中使用Flask-SQLAlchemy進行數據庫操作&#xff0c;涵蓋從基礎配置…

一站式用AI編程神奇Cursor/Trae(VScode環境)開發運行Scala應用

平時開發時&#xff0c;我們常用 IDEA 搭配 Scala 來開發 Spark 或 Flink 等大數據應用。但如今像 Cursor 這樣的編程神器層出不窮&#xff0c;它們只支持 VSCode。要是 Scala 應用能在 VSCode 環境下便捷運行&#xff0c;我們就無需在 VSCode 開發、卻在 IDEA 運行&#xff0c…

【Django開發】django美多商城項目完整開發4.0第2篇:項目準備,配置【附代碼文檔】

教程總體簡介&#xff1a;美多商城 商業模式介紹 1.B2B--企業對企業 2.C2C--個人對個人 5.O2O--線上到線下 開發流程 說明&#xff1a; 需求分析 1. 用戶部分 注冊 登錄 個人信息 地址管理 修改密碼 3. 購物車部分 購物車管理 項目架構 創建工程 1. 在git平臺創建工程 2. 添加前…

基于 OpenCV 的圖像亮度、對比度與銳度調節

圖像亮度、對比度和銳度是圖像質量感知的重要參數&#xff0c;調節這些屬性常用于圖像增強、圖像美化或圖像分析的預處理階段。本文將基于 OpenCV 實現這三項基礎圖像處理功能&#xff0c;并提供滑動條交互界面與直方圖可視化分析&#xff0c;方便調試和理解效果。 亮度調整 圖…

WAF(web應用防火墻)的簡單了解

WAF稱之為Web應用防火墻&#xff0c;是一種專門設計用于保護web應用程序免受惡意攻擊的安全設備&#xff0c;能實時監控過濾和攔截可能對網站造成危害的網絡流量&#xff0c;從而避免網絡服務器被惡意入侵導致性能異常、數據泄露、服務中斷這些問題 (WAF是通過執行一系列針對HT…

跟著AI學習C# Day28

&#x1f4c5; Day 28&#xff1a;C# 源生成器&#xff08;Source Generators&#xff09;與編譯時元編程 ? 學習目標&#xff1a; 理解什么是 源生成器&#xff08;Source Generator&#xff09;&#xff1b;掌握如何在 編譯階段生成 C# 代碼&#xff0c;而不是運行時動態處…

設計模式精講 Day 4:建造者模式(Builder Pattern)

【設計模式精講 Day 4】建造者模式&#xff08;Builder Pattern&#xff09; 文章簡述&#xff1a; 在軟件開發中&#xff0c;對象的構造過程往往復雜且容易出錯&#xff0c;尤其是在對象包含多個可選參數或構建步驟時。建造者模式&#xff08;Builder Pattern&#xff09;正是…

如何輕松地將聯系人從 iPhone 轉移到 iPhone?

也許您升級到最新的 iPhone 型號&#xff0c;或者需要切換到另一部 iPhone 來工作。無論如何&#xff0c;您不能錯過您的聯系人&#xff0c;這對每個人來說都是最重要的數據。因此&#xff0c;今天我們將分享 5 種如何將聯系人從 iPhone 轉移到 iPhone 的方法&#xff0c;幫助您…

【51單片機簡單的流水燈程序問題】2022-5-24

1.利用單片機的P2口接8個發光二極管。簡單的流水燈程序問題-編程語言-CSDN問答 2&#xff0e;發光二極管自由閃爍&#xff08;自己設計兩種模式&#xff09;。 3&#xff0e;可通過按鍵實現暫停、啟動以及不用模式的切換。 4. 利用Proteus繪制電路原理圖 5. 元件選型&#xff1…

第七節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 用戶管理(上)

Vben5 系列文章目錄 ?? 基礎篇 ? 第一節:Vben Admin 最新 v5.0 (vben5) 快速入門 ? 第二節:Vben Admin 最新 v5.0 (vben5) 快速入門 - Python Flask 后端開發詳解(附源碼) ? 第三節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 對接后端登錄接口(上) ? 第四節:Vben Ad…