更新时间:2024-12-24 GMT+08:00

冷热分离概述

海量大数据场景下,随着业务和数据量的不断增长,数据存储与消耗的资源也日益增长。根据业务系统中用户对不同时期数据的不同使用需求,对膨胀的数据本身进行“冷热”分级管理,不仅可以提高数据分析性能还能降低业务成本。

背景

在数据分析的实际场景中,冷热数据面临着不同的查询频次及响应速度要求。而随着历史数据的不断增多,如果我们将所有数据存储在本地,将造成大量的资源浪费。冷热分离特性可将冷热数据分开存储,将冷热数据分别存储在成本不同的存储介质上。热数据提高时效数据的查询速度和响应能力,冷数据降低存储成本。我们还可以根据实际业务需求进行灵活的配置和调整,以满足不同场景的要求。冷热数据主要从数据访问频率、更新频率进行划分。

  • Hot(热数据):访问、更新频率较高,未来被调用的概率较高的数据,对访问的响应时间要求很高的数据。
  • Cold(冷数据):不允许更新或更新频率比较低,访问频率比较低,对访问的响应时间要求不高的数据。

用户可以定义冷热管理表,将符合规则的冷数据切换至OBS上进行存储,可以按照分区自动进行冷热数据的判断和迁移。

原理介绍

  • 创建表:创建含有冷热分离策略的数据表,其中存储策略值必须为hot_to_cold。
  • 写数据:新数据会按照信息导入到对应的数据表中。在ClickHouse中,每次数据写入都会生成一个新的Part,以保证冷数据的Part在不受影响的情况下写入新数据,满足冷热数据同时存储的需求。
  • 冷热分离:数据存储在热存储上,随着容量或时间的推移往冷存储上迁移。ClickHouse的冷热分离粒度是基于Part的,当达到容量上限或冷却时间时会将当前满足条件的Part全部上传到OBS并删除本地数据,之后新导入的数据生成的新Part达到容量上限或冷却时间后也会上传到OBS。
  • 查询数据:用户在数据表上进行对应的查询,ClickHouse会根据对应表的存储策略信息查询到对应Bucket的根目录,并根据不同表下Part信息下载查询所需的数据到本地进行运算。