十四、数据管理——存储和成本管理
对于数据爆炸式的增长,有效地降低存储资源的消耗,节省存储成本。
14.1 数据压缩
背景:在分布式系统中为了提高数据的可用性与性能,通常会将数据存储三份。
方案:在MaxCompute中提供了archive压缩方法,默认值(6,3)即6份数据 + 3份校验块。能够把存储比例从1:3变成1:1.5。但是恢复数据块的时间将更长,读的性能有损失。
应用场景:一般应用在冷备数据与日志数据的压缩存储上,比如淘系日志数据,超过一定时间后使用频率低且是不可恢复的重要数据
14.2 数据重分布
背景:MaxCompute中主要采用列存储的方式,由于表的数据分布不同,插入数据的顺序不一样,导致压缩效果有很大差异
方案:通过修改distribute by 和 sort by字段的方式修改表的数据重分布,避免列热点。数据重分布效果的波动受字段的重复值、字段本身的大小影响,波动较大。一般会筛选出重分布效果低于 15% 的表进行优化处理
14.3 存储治理优化
存储治理优化项:未管理表、空表、最近62天未访问表等。对优化项的数据诊断,形成治理项,通过流程的方式运转、管理,推动ETL人员操作,优化存储管理及时回收存储。
方案:形成现状分析、问题诊断、管理优化、效果反馈的存储治理项优化的闭环
14.4 生命周期管理
根本目的:用最少的存储成本来满足最大的业务需求,使数据价值最大化
14.4.1 生命周期管理策略
-
周期性删除策略,可以周期性删除X天前的数据,删除某些没有价值的历史数据,
-
彻底删除策略,删除ETL过程中的临时数据
-
永久保留策略,重要且不可恢复的底层数据和应用数据要永久保留
-
极限存储策略,可以超高压缩重复镜像数据,但对数据质量要求高,配置与维护成本高。
-
冷数据管理策略,永久保留的数据迁移到冷数据中心进行永久保存,同时将 MaxCompute 中对应的数据删除
-
增量表merge全量表策略,在极限存储使用性和存储成本的优势不明显时,需要改成增量同步与全量 merge 的方式,对于对应的 delta 增量表的保留策略;
14.4.2 通用的生命周期管理矩阵
通过对历史数据的等级划分与对表类型的划分生成相应的生命周期管理矩阵;
历史数据等级划分
- P0:非常重要的主题数据域数据和非常重要的应用数据;具有不可恢复性;如,交易、日志、集团 KPI 数据、IPO 关联表;
- P1:重要的业务数据和重要的应用数据;具有不可恢复性;如,重要的业务产品数据;
- P2:重要的业务数据和重要的应用数据;具有可恢复性;如,交易线 ETL 产生的中间过程数据;
- P3:不重要的业务数据和不重要的应用数据,具有可恢复性;如,某些 SNS 产品报表;
表类型划分
-
事件型流水表(增量表)。数据无重复或者无主键,如日志
-
事件型镜像表(增量表)。指业务过程性数据,有主键,但是对于同样主键的属性会发生缓慢变化;如交易、订单状态与时间会根据业务发生变更;
-
维表。包括维度和维度属性数据
-
Merge 全量表。包括业务过程性数据或者维表数据,由于数据本身有新增的或者发生状态变更,对于同样主键的数据可能会保留多份,因此可以对这些数据根据主键进行 Merge 操作,主键对应的属性只会保留最新状态,历史状态保留在前一天分区中;
-
ETL临时表。处理过程中产生的临时表数据
-
TT 临时数据。TT 拉取的数据和 DbSync 产生的临时数据最终会流转到 ODS 层,ODS 层数据作为原始数据保留下来,从而使得 TT& DBSync 上游数据成为临时数据
-
普通全量表。BI 一般是直接全量拉取,这种方式效率快,对存储压力也不是很大,而且表保留很长时间,
14.5 数据成本计算
-
MaxCompute 中的任何一个计算任务都会涉及计算和存储资源的消耗,其中计算资源的消耗主要考虑 CPU 消耗。CPU 消耗的单位定义为 CU,代表 CPU 的一个核心(Core)运行一天的消耗量;存储资源资源的消耗主要考虑磁盘存储的消耗,采用国际通用的存储单位 PB 来衡量。如计算资源的单位:1 元 / CU、存储资源的单位:1 元 / PB;
-
在计量数据表的成本时,要考虑数据表本身的计算存储成本外,要考虑上游数据表的扫描带来的成本。引入扫描成本可以避免仅仅将表自身硬件资源的消耗作为数据表的成本,以及对数据表成本进行分析时,孤立的分析单独的一个数据表,能够很好的体现出数据在加工链路中的上下游依赖关系,使得成本的评估尽量准确、公平、合理;
-
数据成本计算主要是计算数据表的存储成本、计算成本、扫描成本:
-
存储成本是为了计算数据表消耗的存储资源;
-
计算成本是为了计算数据计算过程中的 CPU 消耗;
-
扫描成本是指对上游数据表的扫描带来的扫描成本;
-
-
数据资产的成本管理:数据成本计算、数据使用计费;
-
数据成本计算,可以比较合理的评估出数据加工链路中的成本,从成本的角度反映出在数据加工链路中是否存在加工复杂、链路过长、依赖不合理等问题,间接辅助数据模型优化,提升数据整合效率;
-
数据使用计费,可以规范下游用户的数据使用方法,提升数据使用效率,从而为业务提升优质的数据服务;
-