摘要

本文主要探讨了数据存储与成本管理的多种策略。介绍了数据压缩技术,如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…