MaxCompute 存储设计

简介: 存储策略该怎么设计

写这篇存储规划的文章主要是想告诉大家该如何给存储做一个规划,在关系数据库的时代存储昂贵且珍惜,掰手指头花钱是存储规划的常态。但是到了大数据时代大家又立即就都变成印美元的美国政府了,感觉存储很多可以随意霍霍,但是又不停的求国会再提升政府债务上限。反而造成了一种日子过的还不如关系数据库的感觉,至少是看着人家没有我们这么焦灼和水深火热。怎么就让我们动则以PB计算的大数据产品,日子过的比论GB过日子的关系数据库还惨呢?

公共云费用测算

在公有云,MaxCompute为了吸引新用户去了解和使用产品,实际上做到了1元钱学习MaxCompute和DataWorks的效果,学习使用成本非常低,账户充值10块钱都能随便畅游这两款产品1年。所以,我们要看下真正的用户收费是什么样子的。

l  套餐资源

链接:套餐计费(包年包月) - MaxCompute - 阿里云

套餐包含计算资源和存储资源,如下表所示。

规格类型

计算资源(CU)

存储资源

上传/下载资源

存储密集型160套餐

160

150 TB,超出部分按量付费

无限制,按量付费

存储密集型320套餐

320

300 TB,超出部分按量付费

无限制,按量付费

存储密集型600套餐

600

500 TB,超出部分按量付费

无限制,按量付费

l  套餐价格

规格类型

月单价(元/月)

存储超出单价(元/GB)

公网下载单价(元/GB)

存储密集型160套餐

35000

0.019

0.8

存储密集型320套餐

70000

0.019

0.8

存储密集型600套餐

125000

0.019

0.8

l  存储费用测算

根据上表我们做一个简单测算。使用160CU的规格存储为150TB的套餐,超出100TB时每天的费用是0.019元*1000GB*100TB=1900元,每月费用是57000元,大于套餐包价格35000元。

存储爆炸原因

从上面的例子我们可以看到,假设在计算资源够用的情况下,存储的增加带来的成本的上升是难以承受的。而且计算是跟业务需求强关联,如果没有新的业务需求,每天处理数据的量不会大幅变化,但是批量系统每天都会产生新一天的数据。

假设我们使用MaxCompute集成一个大小为100G的交易型系统的数据库,数据加工的时效是T+1,会有两方面因素导致数据存储的膨胀。

1. 快照表。快照表是指MaxCompute的表的每一个分区的数据都是业务系统对应的表的一份镜像。按照集成频次T+1,一个100G的业务系统每天在MaxCompute存储一份快照,一年的存储要求是(365*100G)36.5TB。

2. 分层架构。按照一般数据仓库的分层架构,至少会分为3层,镜像层、中间层、应用层。数据入仓后每上升到一个新的分层,数据都会被复制一份。尤其是到了应用层,不同的应用会多份复制数据进行个性加工。我们暂且拍一个比较保守的比例:1:1:1,那么每年对存储的需求就增加到了36.5*3=100TB。

所以,通过上面的测算我们得到了一个非常简单的换算(合理但是可能不够精确),如果使用MaxCompute集成一个存储规模为100GB的业务系统,采用T+1频次计算,那么我们每年需要的存储空间是源系统的1000倍(也是就说100GB变成了100TB)。

存储设计

通过上面部分的分析,我们知道了快照表的存储模式是导致数据被复制了很多份的最大的原因。1行1年内没有更新的记录使用快照存储,会被复制365份。那么为什么数据仓库ETL过程会大量使用快照表呢?总的来说就是结构简单好用,适合ETL加工。

杜绝快照表是不可能的,那就需要思考如何设计存储。存储优化有两个方向,第一个方向就是压缩,第二个方向是清理。

数据清理

数据清理比较简单,重要的是把不需要的数据及时清理掉。数据清理的方法有:

1. 业务下线。已经不再使用的应用层数据表,是否可以清理下线。

2. 自动回收。利用lifecycle设定分区的失效时间,系统后台自动回收。

ALTER TABLE table_name SET LIFECYCLEDAYS;

ALTER TABLE table_name partition[partition_spec]ENABLE|DISABLE LIFECYCLE;

3.  主动管理。一般用于生产环境管控,不同的层次采取不同的策略,例如存储最近N天+月末时点快照。主动管理使用自定义脚本的方法定时清理不需要的数据分区。还有主动管理可以对开发环境或者一些项目空间设置存储上限,引导开发人员去设计和管理存储。要求临时表使用完就立即释放。

4.  重复存储。一些数据表只是一个中间结果集,并没有长期存储的必要,可以建议开发人员使用视图或者临时表替代或者减少不必要的历史存储周期。

数据清理会删除一部分分区的数据,这也代表着一部分时间的快照的状态被从历史中清除了。T+1的批量会记录每行数据每天的最后一个状态,但是如果保留策略是月末+最近N天,那么最后我们能从历史数据中获取到的数据状态就是每月的最后一个状态。

这种情况下,历史数据清理到什么程度,是需要一个业务指导。还有建议在数仓分层架构的最下面的层次对历史数据进行保留。

以清理策略为“保留月末+最近10天”的数据存储需求为例,一年的存储需求从100TB裁剪到100GB*(12个月+最近10天)*3层=6.6TB,变成了原来策略的1/15。原来160CU规格的存储150TB,可以让存储为100GB业务系统的数据存储1.5年,现在则变成了20年。

数据压缩

数据压缩是指利用产品自带的存储压缩特性,或者利用拉链表结构压缩存储。

l  在当前表上进行压缩

1.   归档。将存储比从1:3提高到1:1.5,可以节省一半的物理空间,同时也采用了更高压缩比的压缩算法。

alter table my_log partition(ds='20170101') archive;

如果启用归档策略,对历史数据进行归档。我们可以看到存储会在原有基础上缩小一半。可以让每年100TB存储需求,减少为50TB。

l  备份到另外一张表

1.  分区合并。对于一些数据量非常小的表,历史数据的备份存储可以采用把一个区间内所有数据合并到一个分区的方法来优化存储(主要还是优化小文件)。

2.   拉链表。拉链表是传统数仓得以运转的核心数据存储方法,在MaxCompute上仍然可以使用这个方法。拉链算法的核心是让每条记录的每个状态变化都保存为1行记录,而不是快照表的N份,这种方法能大量节约存储资源。

如果启用拉链表策略,数据存储可以认为与源系统基本持平,只是需要计算分层复制。一年的存储需求从100TB裁剪到100GB*1天*3层=0.3TB,变成了原来策略的1/300。原来160CU规格的存储150TB,可以让存储为100GB业务系统的数据存储1.5年,现在则变成了500年。(这个计算过于理想化,因为ETL过程都主要使用快照表来实施,所以,只能对暂时不需要使用的历史数据备份)。

备份就相当于表结构与原来不一致了,会发生变化。所以,访问历史数据需要使用与快照表不一样的方法。

拉链表链接:基于MaxCompute的拉链表设计-阿里云开发者社区

压缩对比

快照表与拉链表

拉链表与快照表比较起来有更低和更合理的存储特性。

快照表与拉链表结构对比如下:

图片.png

•       拉链表的每个主键在存储周期的所有时点,一个状态只存储了一行数据。

•       快照表的每个主键在存储周期的所有时点,每个时点都会存储一行数据。

从上面的比较可以看出来,使用快照表存储数据,每个MaxCompute的数据分区都会存储一份数据,而拉链表只存储了一份数据。看起来存储大小对比是N:1,N就是快照表的分区个数,而1就是1个最新快照表的分区大小。

拉链表的压缩比

下面是根据实际数据测算的两种数据表的压缩比,一种是记录增长率低的表,另外一种是记录增长率高的表。对比发现,使用拉链表存储后一月的数据大约都只是1天数据的1倍左右。

A表:记录增长率低表【用户信息】

日期:20170501-20170531

天数:31

 TA

记录数

存储

文件数

原始

1.6亿

58.18GB

171

原始/合并

1.6亿

48.94GB

59

拉链

600万

2.36GB

47

压缩比

26.02

20.75

1.26

B表:记录增长率高表【交易日志/事件表】

日期:20170501-20170531

天数:31

 TB

记录数

存储

文件数

原始

49亿

447.90GB

3596

原始/合并

49亿

447.90GB

1111

拉链

1.6亿

15.10GB

31

压缩比

30.74

29.67

35.84

存储归档的压缩比

如果Project里的空间比较紧张,需要进行数据删除或数据压缩,可以考虑MaxCompute里对表的Archive功能,效果是可以将存储空间压缩50%左 右。Archive功能将数据存为Raid File,数据不再简单的存三份,而是6份数据+3份校验块的方式,这样有效的将存储比从1:3提高到1:1.5,可以节省 一半的物理空间,同时也采用了更高压缩比的压缩算法。 上述的操作也是有代价的,如果某个数据块损坏或某台机器损坏,恢复数据块的时间要比原来的方式更长,读的性能也会有一定损失。所以现在这种功能可以用在一些冷数据的压缩存储上,例如一些非常大的日志数据,超过一定时间期限后使用的频率非常低,但是又需要长期保存,则可以考虑用 Raid File来存储。

实际使用测算效果如下:

显示存储

实际存储

份数

447.90GB

1343.69GB

3.0

328.33GB

492.49GB

1.5

总结

通过以上介绍,我们了解到了常用的存储方案,了解到了快照表、拉链表和存储压缩和历史数据清理的方法。相信大家心里已经有了一定的想法,该怎么去规划和设计我们的存储策略。

再有存储与计算是有一定的换算关系,压缩需要计算资源,没有计算资源,存储缩减的方法就只有一条:删除数据。一般批量系统都是夜间运行,所以,可以把压缩存储的任务安排在白天执行。

原文链接
本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Serverless Devs 2.0 开箱测评:Serverless 开发最佳实践

简介: 当下,Serverless 概念很火,很多同学被 Serverless 的优势吸引过来,比如它的弹性伸缩,免运维,高可用,资费少。但真正使用起来去落地的时候发现问题很多,大型项目如何组织函数&a…

【CDS技术揭秘系列 总篇】阿里云的云定义存储来了

简介: 全新发布的云定义存储 CDS 和传统的存储阵列、分布式存储、软件定义存储的区别在哪里?阿里云存储团队如何看待将来存储的发展趋势?本文邀请了 CDS 研发团队的核心技术负责人为大家揭开围绕着阿里云 CDS 的种种谜团。 云定义存储&#…

TSDB时序数据库时序数据压缩解压技术浅析

简介: 目前,物联网、工业互联网、车联网等智能互联技术在各个行业场景下快速普及应用,导致联网传感器、智能设备数量急剧增加,随之而来的海量时序监控数据存储、处理问题,也为时序数据库高效压缩、存储数据能力提出了更…

Atmosic推出ATM33新品,全新的ATM33系列性能大升级

为减少各种物联网产品高昂的电池更换成本,以及降低对环境的危害,在上个月举行的媒体发布会中,Atmosic营销及业务拓展副总裁 Srinivas发布了公司的新产品——ATM33,并详细解析了ATM33的技术特性和主要应用领域。 ATM33系列产品可支…

什么是低代码(Low-Code)?

简介: 什么是低代码?我们为什么需要低代码?低代码会让程序员失业吗?本文总结了低代码领域的基本概念、核心价值与行业现状,带你全面了解低代码。 阿里云 云原生应用研发平台EMAS 彭群(楚衡) 一…

php用wordanalysis抓取姓名_利用vba查询/抓取 外部数据

考虑这么一个excel文件,路径为:"E:dataEdata.xlsx",样式如封面图片所示想要在其他excel文件中,通过代码直接抓取Edata.xlsx中想要的数据,做法如下:先在Visual Basic中勾选“工具-引用-Microsoft …

如何加速云原生数据应用?这个开源项目备受关注

简介: 自2020年9月Fluid正式对外开源,发展短短一年时间, Fluid 便一次获得两项开源界的重要认可,证明着其所专注的云原生、AI 领域也正在迎来广泛关注。这其中的意义和价值如何?我们尝试管中察豹,从 Fluid …

使用 Cilium 增强 Kubernetes 网络安全

作者 | Addo Zhang来源 | 云原生指北TL;DR在本篇,我们分别使用了 Kubernetes 原生的网络策略和 Cilium 的网络策略实现了 Pod 网络层面的隔离。不同的是,前者只提供了基于 L3/4 的网络策略;后者支持 L3/4、L7 的网络策略。通过网络策略来提升…

内含干货PPT下载|一站式数据管理DMS关键技术解读

简介: 深入解读实时数据流、库仓一体数据处理等核心技术 “数聚云端智驭未来”——阿里云数据库创新上云峰会暨第3届数据库性能挑战赛决赛颁奖典礼已圆满结束,更多干货内容欢迎大家观看峰会直播回放。 峰会直播回放📎数聚云端 智驭未来——…

好饭不怕晚,扒一下 Redis 的配置文件

作者 | 阿Q来源 | 阿Q说代码在往期的文章中我们已经对Redis的概念和基本命令进行了讲解,今天我们来看下它的配置文件,Redis的配置文件在我们的开发和实际应用中起着非常重要的作用。我们可以在安装目录下找到redis.conf配置文件,通过vim命令进…

ICBU可控文本生成技术详解

简介: 文本生成(Text Generation)是自然语言处理(Natural Language Processing,NLP)领域的一项重要且具有挑战的任务。顾名思义,文本生成任务的目的是生成近似于自然语言的文本序列,…

云拨测助力节卡机器人 全面优化海外网站性能

简介: 【案例分享云拨测】借助云拨测,节卡机器人有效挖掘性能瓶颈,经过优化,提升网站打开速度 50% 以上,提高了运营推广活动的 ROI,帮助节卡为全球用户提供更加优质的服务! 作者|白…

分享一个巨好用的 HTTP 命令行宝藏工具

作者 | Eason来源 | 程序员巴士HTTPie是一个命令行 HTTP 客户端。它的目标是使 CLI 与 Web 服务的交互尽可能人性化。HTTPie 设计用于测试、调试以及通常与 API 和 HTTP 服务器交互。http 和 https 的命令允许创建和发送任意 HTTP 请求。HTTPie 整体采用简单自然的语法&#xf…

mysql远程备份工具_innobackupex实现MySQL远程备份

一、了解innobackupex1、mysqldumpmysql逻辑备份工具,作用于服务器本地,不需要额外安装插件可以单表备份,备份为sql文件形式、方便,在多个场景通用可通过shell命令实现定时备份,但备份时如果用户有操作,容易…

技术干货 | Native 页面下如何实现导航栏的定制化开发?

简介: 通过不同实际场景的描述,供大家参考完成 Native 页面的定制化开发。 很多 mPaaS Coder 在接入 H5 容器后都会对容器的导航栏进行深度定制,本文旨在通过不同实际场景的描述,供大家参考完成 Native 页面的定制化开发。 欢迎关…

深入理解云计算OpenAPI体系

简介: 就云计算的API来看,当前并没有类似POSIX这样的API标准,基本上各大厂商各自为政。当然,有一些业界主流标准例如OAS获得多数云厂商的支持,但云厂商本身的API却往往由于历史原因、技术路线原因百花齐放,…

Gartner:2025年有效细分市场中过半企业的 IT 支出将转向云

来源 | CSDN云计算 根据Gartner的最新预测,2025年有效细分市场中的企业在公有云计算领域的IT支出将超过传统IT服务支出。 Gartner的“云迁移”研究只包括可以迁移到云的企业IT市场,即应用软件、基础设施软件、业务流程服务和系统基础设施市场。2025年在这…

阿里云容器服务全面升级为 ACK Anywhere,让云的边界拓展至企业需要的每个场景

简介: 2021 年 9 月 26 日上海阿里云计算峰会上,阿里巴巴研究员、阿里云云原生应用平台负责人丁宇宣布,阿里云容器服务全面升级为 ACK Anywhere,让企业在任何需要云的地方,都能获得一致的容器基础设施能力。 此次升级的…

Redis 突然变慢了如何排查并解决?

作者 | 码哥字节来源 | 码哥字节Redis 通常是我们业务系统中一个重要的组件,比如:缓存、账号登录信息、排行榜等。一旦 Redis 请求延迟增加,可能就会导致业务系统“雪崩”。最近遇到了一个bug,经过查找发现 Redis 报 Could not ge…

成本直降50% | 阿里云发布云原生网关,开启下一代网关新进程

简介: 融合流量网关与微服务网关的下一代网关—云原生网关来啦!优势满满! 流量网关和微服务网关必须分开构建吗? 在容器技术和 K8s 主导的云原生时代,这个命题正浮现出新的答案。 更经济:将流量网关与微…