网易首页 > 网易号 > 正文 申请入驻

深度 | 实时历史数据库存储成本惊人,怎么破?

0
分享至

作者:胡刀 阿里云运维专家/ 舟济 阿里云解决方案架构师

实时历史库需求背景

在当今的数字化时代,随着业务的迅速发展,每天产生的数据量会是一个惊人的数量,数据库存储的成本将会越来越大,通常的做法是对历史数据做归档,即将长期不使用的数据迁移至以文件形式存储的廉价存储设备上,比如阿里云OSS或者阿里云数据库DBS服务。

然而在部分核心业务的应用场景下,针对几个月甚至几年前的“旧”数据依旧存在实时的,低频的查询甚至更新需求,比如淘宝/天猫的历史订单查询,企业级办公软件钉钉几年前的聊天信息查询,菜鸟海量物流的历史物流订单详情等。

如果这时从历史备份中还原后查询,那么查询时间将会是以天为单位,可接受度为0

如果将这些低频但实时的查询需求的历史数据与近期活跃存储在同一套分布式数据库集群下,那么又会带来以下两大挑战

  • 存储成本巨大,进而导致成本远大于收益,比如钉钉聊天信息数据量在高度压缩后接近50PB,很难想象这些数据不做压缩会带来多大的资金开销
  • 性能挑战巨大,随着数据量越来越大,即使针对数据做了分布式存储,单实例容量超过大概5T以后性能也会急剧下滑,进而影响到近期活跃数据的查询性能,拖垮整个集群
  • 运维难度巨大,比如针对海量数据下发一个表数据结构变更操作,很难想象全部完成需要多长时间

实时历史库场景需求分析

通过上面的分析,不管是冷备份还是在线历史数据混合存储在同一张物理表上的方法都是不可取的,一般实时查询历史数据库的场景,一般需要有以下几个关键特性

  • 成本可控,历史数据的存储成本无法接受和在线库一样线性增长
  • 实时查询,历史数据的查询RT要做到与在线活跃库几乎一致
  • 查询频次较低,一般来说,越“旧”的数据查询频率越低
  • 统一查询入口,不管是活跃数据还是历史数据,查询入口保持一致
  • 改造成本需要尽可能低,最好能做到不做任何应用代码修改,可以认为历史库对程序开发人员来说是完全透明的
  • 可能存在历史数据更新需求
  • 数据规模较大,一般在100TB以上

X-Engine引擎介绍

X-Engine简介

X-Engine是阿里云数据库产品事业部自研的联机事务处理OLTP(On-Line Transaction Processing)数据库存储引擎。作为自研数据库PolarDB 的存储引擎之一,已经广泛应用在阿里集团内部诸多业务系统中,包括交易历史库、钉钉历史库等核心应用,大幅缩减了业务成本,同时也作为双十一大促的关键数据库技术,挺过了数百倍平时流量的冲击。

与传统的InnoDB引擎不同,X-Engine使用分层存储架构(LSM-Tree)。分层存储有两个比较显著的优点:

  • 需要索引的热点数据集更小,写入性能更高
  • 底层持久化的数据页是只读的,数据页采用紧凑存储格式,同时默认进行压缩,存储成本更低。

相比InnoDB引擎,依据数据特征,使用X-Engine存储空间可降低至10%~50%,我们在著名的Link-Bench和阿里巴巴内部交易业务两个数据集上测试了X-Engine的存储空间效率。在测试中,对比开压缩的InnoDB引擎,X-Engine有着2倍空间优势,而对比未开压缩的InnoDB,X-Engine则有着3~5倍的优势。

实时历史库方案,为何选择X-Engine

1.通常我们默认MySQL是当今最流行的开源数据库,大概率是在线核心数据库集群的首选。相比其他高压缩的存储引擎,引入X-Engine完全无需做任何SQL代码改造,并且支持事务,接入成本最低,学习成本几乎为0

2.写入性能更强,X-Engine相比同为LSM-tree架构的Rocksdb,有超过10倍的性能提升。

3.在存储层引入数据复用技术等,优化Compaction的性能,降低传统LSM-tree架构中Compaction动作对系统资源的冲击,保持系统性能平稳

4.引入多个层级Cache,同时结合Cach回填和预取机制,利用精细化访问机制和缓存技术,弥补传统LSM-tree引擎的读性能短板,X-Engine的点查询能力几乎与Innodb持平下图是X-Engine与主流历史数据存储方案对比

实时历史数据库架构设计和实现

总体架构思路

基于上文对实时历史库和X-Engine的介绍,阿里云数据库团队推出以X-Engine引擎为历史数据存储核心,同时生态工具DTS作为在线/历史数据流转通道,DMS作为历史数据无风险删除的完整“实时在线-历史库”方案,针对不同的业务场景和客户需求,在具体实现上可能会有所不同,我们提供了多种实时历史库方案的具体实现。主体架构图如下,核心思路为:

  • 久经考验的Innodb引擎作为OLTP在线库核心引擎,主要处理高频查询/更新请求,满足在线活跃数据高并发,高性能,强范围查询的业务需求
  • 阿里巴巴数据库团队自研的高压测存储引擎X-Engine作为历史库核心引擎,主要响应历史数据入库/查询/更新请求,满足历史数据冷热数据频次不一,低存储成本,高性能的业务需求(范围查询可能性能受限)
  • 统一DB接入层,根据设置的业务时间属性将请求分别转发至不同的存储引擎。针对特殊场景下的跨引擎访问,在应用层做聚合展示
  • 在线-历史数据通过阿里云提供的生态体系工具做历史数据迁移和过期数据删除,确保链路更为稳定可靠

在线库/历史库拆分方案

一般来说,需要使用到实时历史库的场景,数据量都足够大到单台宿主机存放不了。在线数据库可能是根据业务水平或垂直拆分的多个RDS,也可能是一个规模较大的DRDS集群。为了尽可能地保证在线库的性能,推荐将在线库/历史库完全拆分解耦

历史库集群存储全量数据

通过DTS链路打通在线库和历史库,实时同步

DTS链路过滤Delete操作

可直接使用新版DMS配置历史数据定期删除

源端为DRDS集群

a.数据同步链路走RDS

多条DTS链路打通底层RDS节点,同步性能强

RDS数量较多可支持API批量创建和配置

链路稳定性更好

需要保证源端目标端库表数量一致,数据路由规则一致

b.数据同步链路走DRDS

只需要配置一条DTS链路,方便省钱

数据同步性能较差

源端DRDS扩容会影响到DTS同步链路

源端目标端的实例数量和数据路由规则可自由配置

源端为多个RDS

a.目标端为多个RDS

业务代码无需任何改造

运行后期历史库节点磁盘容量存在风险

b.目标端为DRDS集群

可能涉及到业务代码轻量改造,目标端不走分库分表键性能无法保证

可将多个在线库业务合并至一套历史库集群,架构更加简洁

DTS链路也分为走RDS和DRDS两种

数据同步链路走RDS

数据同步链路走DRDS

同实例混用存储引擎方案

在线库/历史库拆分方案相对较为复杂,RDS支持同一实例混用存储引擎。针对总数据量不是特别大的场景,可以考虑同一实例下Innodb&X-Engine引擎混合使用

  • 实现简单灵活
  • 混用存储引擎,在数据库内核参数优化上难以兼顾两者性能
  • 历史数据compact阶段可能对整个实例产生性能抖动
  • 同一实例下的库或者表无法重名,涉及到轻量业务改造

DTS赋能在线/历史数据流转

DTS不仅支持全量&增量同步,支持不同数据库产品之间的数据同步,在在线/历史库解决方案中,DTS强大的"条件过滤"功能是非常重要的一环,通过配置DTS任务可以非常便捷地实现过滤Delete操作,动动鼠标点亮下即可实现自定义的数据同步策略。

DMS赋能在线库过期数据删除

在线库的过期数据删除既要保障删除效率,也要保证删除过程中对在线库不会造成性能上的抖动,新版DMS支持创建“历史数据清理”的数据变更任务,通过该任务可以非常方便地完成以下工作

历史数据定期删除,指定调度时间和一次调度时长

大事务拆分,减少事务执行过程中锁表时间过长,避免主备延迟

清理遭遇异常中断可重试

支持查看任务运行状态和失败原因分析

配置方面简洁

过期数据清理思路

如果没有使用DMS生态工具,也自行实现过期数据删除,但实现较为复杂。一般较为通用的设计思路为将表的主键按照大小做拆分,保证一次删除"恰当数量"的数据,既保证删除效率又不影响线上服务

1 在线库的历史数据删除策略(假设主键为id,数据保存180天,时间属性列为date_col)

2 初始化数值Y=select min(id) from $table_name

3到了业务低峰期以后,DELETE FROM $table_name WHERE date_col< SUBDATE(CURDATE(),INTERVAL 180 DAY) and id >= Y and id <=Y+100000 ,执行成功后代码层重新赋值 Y=Y+100000

4程序sleep 3s,重复步骤b

5时间到了业务高峰期以后,停止执行,记录下当前的数值Y,第二天执行时直接从Y开始注意

6在线库历史数据清理注意点

代码上注意不要出现高并发删除的情况,即步骤b还没跑完,新的步骤b又进来了

程序sleep的具体秒数,要通过测试,取一个最合适的数值,主要看主备是否存在较大延迟,3只是估值

100000也是一个估值,实际取值最好也通过测试,取一个效率最高,对业务影响最小的数值。因为drds的序列不是单点递增1的,所以这里的10w不代表10w条记录。

假设删除程序中途崩溃了,或者执行很多天后发现部分数据没有删除。那么可以手工先删除一小部分残留的数据,比如预估下id<100w的记录还有多少条,不多的话直接执行DELETE FROM logs_trans WHERE reqdate < SUBDATE(CURDATE(),INTERVAL 30 DAY) and id<100w 然后初始化整个程序,这样保证重新初始化以后不会做很多无用功,即反复执行删除条目很少的sql

极端场景分析

在临界时间处理上,实时历史库方案可能遭遇极端场景导致业务可能存在历史库的脏读问题,假设在线库数据保存180天

更新179天前23时59分59秒的数据,请求路由至在线库

数据同步链路异常中断或链路存在延迟,该更新请求未能及时到达历史库

这时业务查询该数据时,由于已经数据已经"旧"到超过180天,请求路由至历史库,由于链路异常,历史库查到了脏数据

解决方法

配置链路异常告警,及时发现及时处理

预计影响的数据范围为DTS链路恢复前的临界时间点附近数据,建议从业务逻辑上订正数据

建议过期数据删除设置保守一点,比如临界时间为180天,过期数据只删除190天以后的数据,方便在极端场景下对比源端目标端的数据情况进行数据订正

最佳实践参考

1.X-Engine如何支撑钉钉跃居AppStore第一2.淘宝万亿级交易订单背后的存储引擎3.将DRDS中的InnoDB引擎转换为X-Engine引擎

直播预告6月23日15:00-16:00我们一起见证 Redis 史上最大更新

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
南通女孩离世后续!父母在事故地点跪地祭拜,同学妈妈发声惹泪目

南通女孩离世后续!父母在事故地点跪地祭拜,同学妈妈发声惹泪目

洛洛女巫
2024-05-13 12:06:08
杨钰莹亮相深圳机场,看着还是要着青春活力的,状态真不错!

杨钰莹亮相深圳机场,看着还是要着青春活力的,状态真不错!

娱乐圈酸柠檬
2024-05-13 22:21:33
财色行长朱国君:为让小三上位,甘当牛头人,雇人强奸自己老婆

财色行长朱国君:为让小三上位,甘当牛头人,雇人强奸自己老婆

历史八卦社
2024-05-08 17:00:52
记者谈新鹏城上座低:深圳本地意识淡薄,中国城市是反社区的

记者谈新鹏城上座低:深圳本地意识淡薄,中国城市是反社区的

懂球帝
2024-05-13 20:51:08
赚大了!美媒:3换4交易曝光,探花签将被交易,老鹰截胡

赚大了!美媒:3换4交易曝光,探花签将被交易,老鹰截胡

侃球频道
2024-05-13 19:18:06
向佐修图只顾自己帅 老婆脸变外星人

向佐修图只顾自己帅 老婆脸变外星人

阿芒娱乐说
2024-05-14 00:54:43
母亲拾荒培养出985儿子,婚礼仪式岳父听到母亲名字,竟当场下跪

母亲拾荒培养出985儿子,婚礼仪式岳父听到母亲名字,竟当场下跪

纸鸢奇谭
2024-05-08 08:51:32
苗苗救场《跑男》,三岁女儿活泼外向黏上雨琦,孟子义发文感谢

苗苗救场《跑男》,三岁女儿活泼外向黏上雨琦,孟子义发文感谢

木木夕木可
2024-05-13 18:50:43
男妇产科医生自述:帮隔壁独居少妇解决问题后,她说明天接着治

男妇产科医生自述:帮隔壁独居少妇解决问题后,她说明天接着治

怪诞事件簿
2024-05-08 18:05:09
联合国再一次站在了“全世界”的对立面!以色列:联合国是hms!

联合国再一次站在了“全世界”的对立面!以色列:联合国是hms!

朗威游戏说
2024-05-13 23:59:23
生涯最佳一年!西媒:皇马希望尽快续约卡瓦哈尔,甚至提供长约

生涯最佳一年!西媒:皇马希望尽快续约卡瓦哈尔,甚至提供长约

直播吧
2024-05-13 20:07:11
外交发言,不宜过分强调“自豪感”

外交发言,不宜过分强调“自豪感”

一枚小吏
2024-05-13 22:03:18
今麦郎桶面扫码二维码被曝藏付费陷阱,客服反复回复:100%中奖

今麦郎桶面扫码二维码被曝藏付费陷阱,客服反复回复:100%中奖

潇湘晨报
2024-05-13 20:58:14
时隔六年,韩外长再访华,却称中国经济转型,给韩国带来严峻挑战

时隔六年,韩外长再访华,却称中国经济转型,给韩国带来严峻挑战

影视解说阿相
2024-05-13 23:49:39
赖清德就职前,日本邀请中国军队访日,韩外长访华,释放重要信号

赖清德就职前,日本邀请中国军队访日,韩外长访华,释放重要信号

DS北风
2024-05-13 17:36:14
媒体人晒与女足新帅聊天记录:孙雯提问为何从澳大利亚国家队下课

媒体人晒与女足新帅聊天记录:孙雯提问为何从澳大利亚国家队下课

直播吧
2024-05-13 19:14:08
这谁顶得住嘛!王子文这身材,这才是尤物啊!

这谁顶得住嘛!王子文这身材,这才是尤物啊!

冷却爱情
2024-04-22 09:18:09
睁眼看世界!“洋妞”用零彩礼抢占中国婚恋市场,不势利又好伺候

睁眼看世界!“洋妞”用零彩礼抢占中国婚恋市场,不势利又好伺候

江峰聊情感
2024-05-13 15:02:49
著名演员石维坚在京离世,突发不适后送医不治,没遭多少罪

著名演员石维坚在京离世,突发不适后送医不治,没遭多少罪

娱乐郑在说
2024-05-13 06:26:12
“摸车一万”后续!警方通报老太被扒,现场群众发声,果然有情况

“摸车一万”后续!警方通报老太被扒,现场群众发声,果然有情况

影孖看世界
2024-05-13 23:11:00
2024-05-14 06:10:44
趣味搞笑大魔王
趣味搞笑大魔王
多元化的趣味引领你的生活!
1366文章数 3539关注度
往期回顾 全部

科技要闻

李开复:大模型创业狂奔一年 中美差距缩小

头条要闻

俄军称继续发动攻势 乌军哈尔科夫前线指挥官被撤换

头条要闻

俄军称继续发动攻势 乌军哈尔科夫前线指挥官被撤换

体育要闻

曼联的越位陷阱里,有只胖虎在溜达

娱乐要闻

湖南卫视回应韩红请战,文案堪称一绝

财经要闻

放开买房租房落户 超大特大城市绷不住了

汽车要闻

纯电增程并行 长安马自达EZ-6实车曝光

态度原创

亲子
手机
教育
艺术
公开课

亲子要闻

给娃买了 4 辆,才知道儿童自行车选啥好!

手机要闻

曝苹果三星敲定合作!可折叠iPhone或配备三星显示屏

教育要闻

上海月入百万怎么鸡娃?幼儿园学三年级课程,晚上十点睡觉直接打

艺术要闻

新绎美术馆价值体系1+1=3?张子康激活“梦廊坊”社会化艺术生态

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版