閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。 摘要: GaussDB(DWS)支持根據業務系統的不同使用需求,對膨脹的數據進行冷熱分級管理,將數據按照時間分為熱數據、冷數 ...
閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。
摘要: 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)
瞭解更多華為雲數據倉庫GaussDB(DWS),請點擊這裡。