写点什么

云小课|GaussDB(DWS) 数据存储尽在掌控,冷热数据切换自如

  • 2023-02-06
    中国香港
  • 本文字数:2233 字

    阅读完需:约 7 分钟

云小课|GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如

本文分享自华为云社区《【云小课】EI第50课 GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如》,作者:阅识风云。



阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处


背景信息


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


冷热数据主要从数据访问频率、更新频率进行划分。


  • Hot(热数据):访问、更新频率较高,对访问的响应时间要求很高的数据。

  • Cold(冷数据):不允许更新或更新访问频率较低,对访问的响应时间要求不高的数据。

冷热切换策略


冷热切换的策略支持 LMT(last modify time)和 HPN(hot partition number),LMT 指按分区的最后更新时间切换,HPN 指保留热分区的个数切换。


  • LMT:表示切换[day]时间前修改的热分区数据为冷分区,将该数据迁至 OBS 表空间中。其中[day]为整型,范围[0, 36500],单位为天。


如下图中,设置 day 为 2,即在冷热切换时,根据分区数据的最晚修改时间,保留 2 日内所修改的分区为热分区,其余数据为冷分区数据。假设当前时间为 4 月 30 日,4 月 30 日对[4-26]分区进行了 delete 操作,4 月 29 日对[4-27]分区进行了 insert 操作,故在冷热切换时,保留[4-26][4-27][4-29][4-30]四个分区为热分区。



  • HPN:表示保留 HPN 个有数据的分区为热分区。分区顺序按照分区的 Sequence ID 来确定,分区的 Sequence ID 是根据分区边界值的大小,内置生成的序号,此序号不对外呈现。对于 RANGE 分区,分区的边界值越大,分区对应的 Sequence ID 越大;对于 LIST 分区,分区边界枚举值中的最大值越大,分区对应的 Sequence ID 越大。在冷热切换时,需要将数据迁移至 OBS 表空间中。其中 HPN 为整型,范围为[0,1600]。


如下图中,设置 HPN 为 3,即在冷热切换时,保留最新的 3 个有数据的分区为热分区数据,其余分区均切为冷分区。


准备工作


  • 已注册华为云账号,且在使用 GaussDB(DWS) 前检查账号状态,账号不能处于欠费或冻结状态。

  • 已下载客户端并连接到 GaussDB(DWS) 集群。

创建冷热表


创建列存冷热数据管理表,指定热数据有效期 LMT 为 100 天。


CREATE TABLE lifecycle_table(i int, val text) WITH (ORIENTATION = COLUMN, storage_policy = 'LMT:100')PARTITION BY RANGE (i)(PARTITION P1 VALUES LESS THAN(5),PARTITION P2 VALUES LESS THAN(10),PARTITION P3 VALUES LESS THAN(15),PARTITION P8 VALUES LESS THAN(MAXVALUE))ENABLE ROW MOVEMENT;
复制代码

冷热数据切换


切换冷数据至 OBS 表空间。


  • 自动切换:每日 0 点调度框架自动触发,无需关注切换情况;

    可自定义自动切换时间:根据业务情况调整自动触发时间,修改为每天早晨 6 点 30 分:;

    select * from pg_obs_cold_refresh_time('lifecycle_table', '06:30:00'); pg_obs_cold_refresh_time -------------------------- SUCCESS (1 row)

  • 手动切换

    执行如下操作手动切换单表:

    alter table lifecycle_table refresh storage; ALTER TABLE

    执行如下操作批量切换所有冷热表:

    select pg_catalog.pg_refresh_storage(); pg_refresh_storage -------------------- (1,0) (1 row)

查看数据分布


查看冷热表数据分布情况。


查看单表数据分布情况:


select * from pg_catalog.pg_lifecycle_table_data_distribute('lifecycle_table');schemaname |    tablename    |   nodename   | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize------------+-----------------+--------------+--------------+---------------+---------------------+-------------+--------------+-------------------- public     | lifecycle_table | dn_6001_6002 | p1,p2,p3,p8  |               |                     | 96 KB       | 0 bytes      | 0 bytes public     | lifecycle_table | dn_6003_6004 | p1,p2,p3,p8  |               |                     | 96 KB       | 0 bytes      | 0 bytes public     | lifecycle_table | dn_6005_6006 | p1,p2,p3,p8  |               |                     | 96 KB       | 0 bytes      | 0 bytes(3 rows)
复制代码


查看所有冷热表数据分布情况:


select * from pg_catalog.pg_lifecycle_node_data_distribute();schemaname |    tablename    |   nodename   | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize------------+-----------------+--------------+--------------+---------------+---------------------+-------------+--------------+-------------------- public     | lifecycle_table | dn_6001_6002 | p1,p2,p3,p8  |               |                     |       98304 |            0 |                  0 public     | lifecycle_table | dn_6003_6004 | p1,p2,p3,p8  |               |                     |       98304 |            0 |                  0 public     | lifecycle_table | dn_6005_6006 | p1,p2,p3,p8  |               |                     |       98304 |            0 |                  0(3 rows)
复制代码

点击关注,第一时间了解华为云新鲜技术~


发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
云小课|GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如_开发_华为云开发者联盟_InfoQ写作社区