云上如何做冷热数据分离

前言

随着业务的发展和持续运行,系统会产生大量的数据,数据的增长伴随而来的是对数据库的考验,在达到一定的数据量之后数据库的访问性能就会持续下降,为了系统的稳定运行,得要么提高数据库访问性能,要么把数据限定在一定的量上。前者会导致IT系统的不断投入,投入产出比不高,且早晚会达到系统的瓶颈,后者需要抛弃旧的数据,从历史数据的完整性上来说也是我们不愿意看到的。

如果暂时没有上分析性数据仓库的需求,那么做冷热数据的分离就是一个比较好的解决办法。将热数据剥离开来,保证热数据的读写性能,冷数据相对来说访问量少,可以降低服务等级,这样就减少在IT方面因为数据量增长带来的投入。

如何区分冷/热数据

我们一般有两种方式来区分冷热数据:

  • 按数据创建时间:一般情况我们会使用数据的创建时间来区分数据冷热,按常理说越久时间前创建的数据访问越少,这对于交易类数据很明显,很可能一周内某笔交易会被频繁查询,一个月内也许只是偶尔查询,三个月后可能在极偶然的情况下才会被用到,有可能绝大多数数据在几个月后再也不会被访问到。
  • 按访问热度:有些数据访问频度并非按时间,比如某个热门文章也许发表一年之后还会有大量的人访问,新发表的文章反而很少有人浏览。或者某个事件会引发某些很少阅读的文章或者信息在某一个时间段突然大量的被访问到,这样冷数据也会变成热数据。这个时候再按时间区分就不科学了,需要按业务情况、数据规律来区分冷热。

本文主要讨论前一种情况的冷热数据分离,对于后一种情况,要结合业务来处理,很难有普适的方案。

冷数据的特点

  • 数据量大:冷数据要求保存较长时间甚至所有时间的,这可能是热数据的数十倍到数百倍的数据量。
  • 业务场景简单:只需要读取指定的数据即可,一般不会有复杂的查询。写入、删除都会批量处理,基本没有更新操作。
  • 性能要求不高:不像一般应用要求查询数毫秒到数秒内返回,冷数据的查询可以容忍数十秒甚至更长时间才出结果,甚至可以做到异步处理,启动一个任务然后等待结果。
  • 成本敏感:因为数据量庞大且访问频度低,不适合大量的投入。

冷数据的处理

对于冷数据,根据不同的应用场景建议使用不同的方式来处理。

场景一:极低频度的查询

通常数据只是备份,但在偶然的情况下需要查询指定的数据,这种查询有可能数天到数月才发生一次。

对于这种情况,推荐直接使用oss来存储冷数据,然后在需要查询的时候启动运行一个RDS实例并导入数据,查询完成后销毁RDS实例,此方案优点是成本非常低,但在使用的时候会比较繁琐。

下面以RDS MySQL版为例来说明如何处理。

冷数据备份

启动一个ECS,在其上部署定时任务,任务步骤包括:

  • 使用mysqldump命令导出指定时间段的数据:mysqldump -h hostname -u username -p password tablename > dbname-tablename-年月日时分秒.sql –where querystatement
  • 打包上传备份数据到oss
  • 备份完成后删除RDS中已备份的数据(注意非drop或者truncate命令删除的数据,可能需要定期执行optimize table命令来释放空间)

使用冷数据

  • 启动一个RDS按量实例
  • 登录ECS,从oss下载指定时间的备份包
  • 执行数据恢复命令,如:mysqldump -h hostname -u username -p password -h host tablename < xxx.sql
  • 登录控制台DMS或者MySQL客户端,查询数据
  • 释放MySQL实例

场景二:需要经常查询

冷数据经常被查询,比如每天不同时间段都有人在查询数据,这个时候如果每次查询都重复启动数据库或者导入数据的操作就太过繁琐,此时建议以下两个方案备选(下面也都以RDS MySQL版为主数据库来做示例)。

方案一:冷热RDS

建立冷/热数据库,热库仅保留短时间的数据,超出的数据定时批量移到冷库中。应用系统内部做好区分,热数据可以直接通过应用系统访问,如果需要访问冷数据则需要走冷库查询。

热库面对大量的高频查询写入请求,因此配置高规格的RDS,冷库的数据查询频率一般非常低,可以配置低规格的RDS并提供大存储容量。例如对某种应用热RDS使用8核16G内存200G磁盘空间的话,那么根据冷数据访问的频度和性能要求,冷RDS可以用1核2G、2核4G内存等低规格的实例,并提供最大到2T的存储空间。

冷热RDS方式部署简单,但数据库存储在RDS的内部存储上,成本还是相对比较高。另外单个RDS还是有磁盘空间上限的限制,最高只能到2T。如果想要降低成本或者需要更高的存储空间,除了采用分布式数据库外(分布式数据库成本也会比较高),可以考虑用以下另一种方式。

方案二:冷数据转存RDS PostgreSQL版 + OSS

冷数据从RDS MySQL版转存到RDS PostgreSQL版上,并用oss_ext扩展插件把数据以外部表的方式存入oss,使用oss的低廉成本和无限空间的特性来存储大量的冷数据,并且可以通过PostgreSQL直接查询。

准备工作

  • 创建RDS PostgreSQL版实例,选择合适的实例规格
  • 创建oss插件:create extension oss_fdw;
  • 创建 server :create server ossserver foreign data wrapper oss_fdw options (host 'oss-cn-hangzhou.aliyuncs.com' , id 'xxx', key 'xxx',bucket 'mybucket');
  • 在PostgreSQL中创建数据表(数据列是示例):create table example (date text, time text, open float, high float, low float, volume int);

转储冷数据

运行一个ECS,在上面部署定时任务,任务包括以下内容:

  • 导出数据到csv文件中:mysql -B -u username -p password database -h dbhost -e "SELECT * FROM xxxtable;" \ | sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > example.csv
  • 上传csv文件到oss中
  • (此步骤也可以在查询时候做)在PostgreSQL中创建oss外部表:CREATE FOREIGN TABLE oss-data-xxx (date text, time text, open float,high float, low float, volume int) SERVER ossserver OPTIONS ( filepath 'osstest/example.csv', delimiter ',' ,format 'csv', encoding 'utf8', PARSE_ERRORS '100');
  • 删除RDS中数据(注意非drop或者truncate命令删除的数据,可能需要定期执行optimize table命令来释放空间)

查询冷数据

  • 装载外部表中数据到数据表:insert into example select * from ossdata-xxx;
  • 查询数据表
  • 查询完后清除数据表中数据(PostgreSQL实例本身存储容量有限),预留空间给其他查询使用

总结

本文提供了三种冷热数据分离的方案,可以根据应用系统的特征和需求选取其中一种,也可以对系统中的不同数据使用不同的方案,甚至对于不同时间段的同样数据使用多种方案,比如短期的冷数据可能还会有一定的访问,可以使用冷热RDS方式,长期基本不怎么访问的冷数据直接导出放到oss上,可以进一步提高灵活性和降低使用成本。

<<完>>

时间: 2024-10-02 14:53:32

云上如何做冷热数据分离的相关文章

加快打造“云上贵州”,靠大数据实现“后发赶超”

"把大数据作为全省弯道取直.后发赶超的战略引擎,充分挖掘利用其商业价值.管理价值.社会价值,以大数据提升政府治理能力,引领产业转型升级,服务广大社会民生,带动大众创业.万众创新."26日,在贵州省十二届人大四次会议开幕式上,贵州省代省长孙志刚在做政府工作报告时说. 经过近两年的实践探索,贵州大数据产业规模总量已超过5000亿元,年均增长20%以上,成为新的支柱产业.全新的发展模式,正在培育贵州经济发展"新动能",为同步小康插上"翅膀". 截至20

健康云上如何进行大数据的挖掘与分析

本文旨在介绍区域医疗信息系统建设和大数据分析技术的发展,并总结出健康云上的大数据分析面临的特殊挑战和提出初步解决方案. 一.健康云的兴起 随着我国经济持续稳定的发展和现代科技的日益进步,越来越多的人们开始重点关注自身健康.在满足日常工作和生活的需求之外,规律的健身休闲活动.年度体检.健康饮食已经成为越来越普遍的想象.与此同时,随着国家新医改政策的颁布和实施,与健康直接相关的医疗行业也正在迅猛发展.这里重点介绍一下我国医疗行业IT解决方案市场呈现的发展趋势: 1. 渐增的多样医疗数据源:医疗数据的

畅享“云”上的未来 “大数据”时代我们如何生活

2016年10月9日下午,中央政治局集体学习,关注"实施网络强国战略"话题.习近平主持学习,并提出了建设国家大数据中心的要求. 互联网的东西,看得到,摸不着,说起来总是玄乎乎的. 那么,大数据又是什么来头?它能给我们老百姓带来什么?我们身边的大数据又有哪些? 我们试图尽量通俗易懂地告诉大家-- 国务院印发的<促进大数据发展行动纲要>是这样定义大数据的: 是以容量大.类型多.存取速度快.应用价值高为主要特征的数据集合,正快速发展为对数量巨大.来源分散.格式多样的数据进行采集.

基于云上分布式NoSQL的海量气象数据存储和查询方案

前言 气象数据是一类典型的大数据,具有数据量大.时效性高.数据种类丰富等特点.气象数据中大量的数据是时空数据,记录了时间和空间范围内各个点的各个物理量的观测量或者模拟量,每天产生的数据量常在几十TB到上百TB的规模,且在爆发性增长.如何存储和高效的查询这些气象数据越来越成为一个难题. 传统的方案常常采用关系型数据库加文件系统的方式实现这类气象数据的存储和实时查询,这种方案在可扩展性.可维护性和性能上都有一些缺陷,随着数据规模的增大缺点越来越明显.最近几年,学界和业界开始不约而同的转向利用分布式N

云上运行 Hadoop 会面临哪些挑战

在云上运行Hadoop,很多人担心性能.因为一提到虚拟化就会有人想到有成本,往往得出有偏见的结论-在云上运行肯定比物理机器上运行性能差.确实,在云上运行Hadoop对平台方还是面临一些挑战的,下面主要讲述这些挑战及平台方怎么解决的. 作者:阿里封神来源:云栖博客|2016-06-02 14:15 收藏 分享 前言 在云上运行Hadoop,很多人担心性能.因为一提到虚拟化就会有人想到有成本,往往得出有偏见的结论-在云上运行肯定比物理机器上运行性能差.如果单独把10台物理机虚拟化跑Hadoop,这肯

云上Hadoop之挑战

引言 在云上云行Hadoop,很多人担心性能.因为一提到虚拟化就会有人想到有成本,往往得出有偏见的结论-在云上运行肯定比物理机器上运行性能差.如果单独把10台物理机虚拟化跑Hadoop,这肯定是有部分性能的开销的.但是如果在公共云上,情况就不是这样了.因为公共云虚拟化的开销最终是由平台方来承担的,其一是平台方采购机器有规模优势,其二平台方可以在保证虚拟机性能的情况超卖部分资源.平台卖给用户8core32g的虚拟机就保证有这个规格的能力的.结合云上的弹性优势,企业的总体成本是会下降的. 在云上运行

架构分析、数据整合、负载均衡,梦想旅行解析云上实践

全面赋能,双11电商解决方案上新,全新75折:https://www.aliyun.com/solution/ecommerce/act/huhang1111 9月23日由阿里云主办的第三期<电商大咖直播:备战双11最佳实践>线上分享圆满结束,来自梦想旅行的CTO李帅分享了如何在大数据的云上实践过程中来把畅行全球的事做的更完美,主要介绍了分布式爬虫架构.数据整合与知识发现.遇到的阻碍.高可用与容灾. 本次视频直播的整理文章整理完毕,如下内容. 如何能够让云计算更好的帮助行业的发展.更好的服务行

从传统架构到云上数据,发生了哪些转变

 [51CTO.com原创稿件]在数据时代的今天,如何部署企业的大数据平台,充分挖掘数据.分析数据.发挥数据价值,成为摆在企业面前的重要难题.面对爆炸式增长的数据,传统的数据分析平台存在着诸多的问题,已经不能满足需求,借助云计算实现的云上数据分析平台,就能够非常灵活.轻松的实现企业的各种数据分析需求,并能够有效控制成本.这里,笔者就与大家简单的聊一下从传统架构到云上数据,到底发生了哪些转变. 首先,来分析一下传统数据分析平台存在的各种问题. 传统大数据分析平台面临的主要挑战 一)多租户支持.从H

你的数据在云上,安全吗?

在企业发展壮大的过程中,除了固有资产之外,数据也逐渐成为企业最核心的财富之一.重要的客户资料.产品规格.配置信息等数据同样会引起竞争对手或者黑客的注意.   图一 安全之战无处不在  也许你可能并不知晓,但数据安全之战每天确实在我们周围发生着.例如美国和以色列通过Stuxnet(蠕虫)病毒黑进伊朗的核武器研究数据库,并对离心机的转速做了更改,直接导致伊朗核武器的研究滞后两年之久:还有Linkin早在2012年数据就已经被窃,直到现在才发现并公布于众. 相比较于从外部攻入.具有一定技术难度的数据篡