AntDB数据冷热分离方案

news2024/11/26 7:27:35

数据冷热分离

数据的存在价值,在于其被使用的程度,即被查询或更新的频率。在不同的业务系统中,人们对处于不同时期的数据有着不同的使用需求。比如,在网络流量行为分析系统中,客户会对最近一个月公司发生的安全事件和网络访问情况感兴趣,而很少关注几个月前的数据;在电商订单系统中,用户会经常访问最近三个月的订单,而更久远的数据则几乎不会去关注。针对这样一些业务场景,我们将数据按照时间纬度划分为二个阶段:Hot、Cold。

区分冷热数据的根本目的,在于控制成本。

为什么这么说?

因为通常情况下,为了支持热数据的操作特性,需要有较好的硬件配置,比如高性能CPU、大内存、SSD硬盘等等。随着时间的推移,系统里会积累越来越多的历史数据,如果依然采用高配置机器来存放这些使用频率非常低的数据,势必会带来非常高的成本。

目前比较常见的冷热分离方案是将冷热数据分离到两套不同的系统,这两套系统拥有不同的存储特性、访问方式等,从而在保证热数据访问性能的同时,将冷数据的成本降低下来。而随着冷热分离方案的普及,很多框架也开始考虑类似的事情,尝试在自己的体系下支持将数据进行冷热分离,避免两套系统带来的复杂性。我们姑且将这两种方案分别称为“冷热分离异构系统”和“冷热分离同构系统”。酬金项目建议使用冷热分离同构系统。

实践中,通常需要结合具体的业务,考虑下面几件事:

  • 冷热数据存储的选型
  • 确定冷热数据分割线
  • 如何进行数据的迁移

冷热数据存储的选型

绝大部分场景,数据都可以分为“冷数据”和“热数据”。数据划分的原则,可以根据时间远近、热点/非热点数据等等。例如在以往项目中的实例,用户通常只访问一段时间之内的数据,例如近一周或一个月。如果数据不做划分,必然会导致一定程度上的性能、成本损耗。

在存储选型上,对于热数据存储,需要重点考虑读写的性能问题,诸如闪存、SSD等会成为首选;而对于冷数据存储,则重点关注低成本存储问题,通常会选择存储在低端磁盘阵列中。

确定冷热数据分割线

数据有冷热划分,那么就会有界限、生命周期。新的数据写入时,其属性是“热”的;当到达某个时间节点或预设阈值时,就需要把数据迁移到“冷”数据存储。

浙江移动酬金项目的冷热数据是按照时间推移来区分的,因此必然要敲定一个时间分割线,即多久以内的数据为热数据,这个值通常会结合业务与历史访问情况来综合考量。对于超过时间线的数据,会被迁移到冷数据中,迁移过程需要确保两点:

  • 不能对热数据产生性能影响
  • 不能影响数据查询

冷热数据标记

酬金业务的数据库模型中,大部分的表名都加上了月份,可以根据表名轻易标记冷热数据。根据酬金业务统计,95%以上的请求访问的是最近3个月的数据,因此热数据保留3个月的数据,其他的迁移到冷数据存储。

如何进行数据的迁移

冷热数据已经根据月份表做了标记,只需要将这部分月表迁移至冷数据存储。

AntDB支持表级别和表空间级别的数据迁移,数据迁移时采用直接将源表空间的数据文件硬拷贝至目标表空间的方式,相比传统的新建临时表/导出导入数据/新建索引或者流复制的模式(增量数据怎么处理?),AntDB的迁移效率要快的多。

表级别数据迁移

标记为冷数据的月份表及索引迁至冷数据存储。标记单位:月份表

/*pg*/alter table test01 set TABLESPACE tbs2;

/*pg*/alter index test01_idx set TABLESPACE tbs2;

表空间级别数据迁移

标记为冷数据的热表空间内的所有月份表/索引一次性迁至冷数据存储。标记单位:表空间

/*pg*/alter table all in tablespace tbs1 owned by test set tablespace tbs2;

/*pg*/alter index all in tablespace tbs1 owned by test set tablespace tbs2;

2种迁移级别对比

 

关于IO影响:迁移过程是有读有写的过程,从热数据的ssd读出来,往冷数据的普通盘写进去。根据经验,在一条由ssd+普通盘组成的IO读写链上,普通盘的顺序写速率如果在200MB/s左右,操作系统为了均衡服务器资源使用情况,此时ssd的读速率基本也保持在200M/s左右。而此时普通盘已经到瓶颈,但ssd远未达到瓶颈,还预留了大量带宽,且此时也只影响ssd的读的带宽。(此方案中,可以通过限制普通盘的写速率,来达到降低迁移ssd热数据时的IO影响,待验证)

测试数据/初步结论/改造点

alter table/index set tablespace的测试内容:

tbs1下面创建1张 13GB的表 进行迁移

tbs1下面创建3张 13GB的表 进行迁移

1.不管哪种方式,都要减少WAL日志

2.表空间置换,需要降低锁表时间 或者 降低锁级别,在迁移期间允许 select 查询

3.表置换,需要将alter table/index set tablespace 命令合并为一条,降低迁移复杂度

4.如何减少IO影响

分区置换(ATTACH/DETACH PARTITION) 和 表空间置换(SET TABLESPACE) 性能对比

由于alter table/index set tablespace锁表时间太长,业务不太能接受,所以采用下述方案

最终的方案(最终的需求):

1、采用insert into select临时过渡表进行数据迁移

2、迁移表提供一个函数,迁移索引提供一个函数。再提供一个函数,封装前面2个函数,用户只需要提供表名,该函数即可以自动完成表及该表上所有索引的迁移。​​​​

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

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

相关文章

树莓派系统卸载桌面环境及系统瘦身

在我们刚入门树莓派时使用都是带桌面环境的系统,系统自带了非常多的实用软件,在学习和使用了一段时间后,我发现已经完全用不到桌面环境了,平时几乎都是通过 ssh 远程工具进行交互,并以命令形式来对系统进行操作。 Ras…

PHP日期时间函数date() 详解

**date()函数是我们在php开发中常碰到并且会使用到的一个日期函数,下面我来给大家介绍date()函数的一些基本扮靓和方法,有需要了解的朋友可进入参考. 日期时间函数是PHP 的核心组成部分。无需安装即可使用这些函数。下面来详细说说date函数的具体用法&a…

Python(request)爬虫有多强大?

requests是Python中的一种HTTP客户端库,用于发送HTTP请求并获取服务器响应。使用requests库可以轻松地进行常见的HTTP操作,如GET、POST、PUT、DELETE等,支持HTTPS和HTTP连接以及摘要验证、基本认证等身份验证方式。 因此,Python的…

嵌入式QT 树形浏览 - navListView

目录 1、什么是树形浏览 2、示例 3、树形浏览设计依赖文件 4、navListView 使用过程 4.1 添加文件 4.2 QListView提升为树形浏览 4.3 树形浏览设计 4.4 树形浏览功能实现 4.5 界面切换 4.6 树形浏览实现界面切换 1、什么是树形浏览 像下图这种左侧带有可以点击切换…

“小白“如何理解数据库

目录 前言 1.什么是数据库 2.数据库的用处 2.1数据库与文件的对比 3.使用数据库 3.1建立数据库 3.2建立表 3.3存储数据 4.服务器,数据库,表关系 5.数据库的分类 5.1MySQL架构 5.2SQL分类 5.3存储引擎 5.3.1什么是存储引擎 5.3.2如何查看存…

Lucene(9):Lucene优化

1 解决大量磁盘IO config.setMaxBufferedDocs(100000); 控制写入一个新的segment前内存中保存的document的数目,设置较大的数目可以加快建索引速度。 数值越大索引速度越快, 但是会消耗更多的内存 indexWriter.forceMerge(文档数量); 设置N个文档合并为一个段 …

easyexcel多行不同的表头导出

easyexcel多行不同的表头导出(多表格不同表头) 一、效果展示 二、代码 /*** 导出月度报表数据信息*/ApiOperation(value "导出月度报表数据信息")Log(title "导出月度报表", businessType BusinessType.EXPORT)RequestMapping(…

linux 下 sqlserver 连接 与开发准备

最近需要再linux下开发一个服务链接SQLserver。但是没有相关经验,然后参考了网上的一些博客。有点心得记录如下。 主要参考了这个:linux连接到sqlserver命令行,Linux 下连接sqlserver (上)_廖俊涛的博客-CSDN博客linux连接到sqlserver命令行,Linux 下连…

【网络安全】这份近 200 页应急响应文档,不会还有人没看过吧?

前言 成为伟大黑客的关键在于做自己喜爱的事,要把一件事情做好,你必须热爱它。所以只要你能坚持对安全技术的热爱,到了这种程度,你就会做得更好。 本文档注重理论与实战结合,不仅提供关键源代码供读者快速实践&#…

UnityVR--UIManager--UI管理1

目录 前言 UI节点的结构 需要用到的组件 1. CanvasGroup 2. Button等控件的OnClick()监听 3. EventTrigger 建立UI工具集 1. 管理UI节点 2. UIBase包含了以下的工具 建立分面板的管理工具——以主面板MainUi为例 前言 UI在项目中的重要性不言而喻,并且UI控件的…

将conda环境导入pycharm教程(史上最详细版)

一个不知名大学生,江湖人称菜狗 original author: Jacky LiEmail : 3435673055qq.com Time of completion:2023.6.15 Last edited: 2023.6.15 目录 将conda环境导入pycharm教程(史上最详细版) 步骤一:打开你的pychar…

Esxi直通A40显卡给ubuntu20.4系统驱动安装过程记录

Esxi直通A40显卡给ubuntu20.4系统驱动安装过程记录 背景描述 PowerEdge R750(esxi虚拟化) 服务器已有一张T4显卡,后期新增一张A40显卡,开一台ubuntu20.4系统直通A40显卡无法开机! 开机问题解决后安装显卡驱动也各种报…

可防撞抗震的海格里斯HEGERLS四向穿梭车立体库货架系统

随着经济的高速发展以及科学技术的不断进步,现代仓储和物流行业的发展都有了质的飞跃,技术融入到仓储的研发与生产中,促进了自动化仓储设备的出现。提到自动化仓储设备,那就无法忽视智能搬运机器人四向穿梭车,四向穿梭…

【Spring学习之生命周期】什么是生命周期?什么是作用域?了解六种作用域

前言: 💞💞从前⾯的课程我们可以看出 Spring 是⽤来读取和存储 Bean,因此在 Spring 中 Bean 是最核⼼的操作资源,所以接下来我们深⼊学习⼀下 Bean 对象。 前路漫漫,希望大家坚持下去,不忘初心&…

让你不再疑惑如何转换音频格式

你是否曾经遇到过这样的问题?你有一些wav格式的音频文件,但是它们不能在你的设备上播放,或者你需要将它们转换为其他格式以便更好地编辑和分享。别担心,转换wav格式并不是一件麻烦的事情。如果你还不知道wav格式怎么转换的话&…

今天面了个阿里拿27K出来的测试,真是砂纸擦屁股,给我露了一手啊

2023年春招已经结束,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好,他山之石…

如何判断测量所得的CSI是视距还是非视距

1、视距(LOS)传播 无线电波沿直线传播的方式称为视距传播。 2、非视距(NLOS)传播 当CSI接收机与基站(BS)之间的直射路径被障碍物挡住后,无线电波只能在经过反射和衍射后到达接收端,此时测量到的数据&…

由于找不到msvcp120.dll怎么办,msvcp120.dll一键修复方法

运行软件程序或游戏,提示由于找不到msvcp120.dll,遇到这种问题要怎么办呢?一般都是计算机系统的dll动态链接库损坏或者文件丢失,不用慌,这个只要修复一下就可以,下面小编就一一道来,还可以实现一…

PMP证书没过期的同学吃香了,直接对标CSPM国标证书二级

2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项…

使用dmhs veri手动比对ORACLE同步到DM数据

使用dmhs veri手动比对ORACLE同步到DM数据 veri介绍 在进行数据库数据的实时同步的时候,需要了解同步的结果是否正确,因此需要有数据对比工具进行数据的对比,并生成详细的对比报告,提供用户参考。对比工具仅仅生成报告&#xff…