天天看點

雲小課|GaussDB(DWS)資料存儲盡在掌控,冷熱資料切換自如

作者:華為雲開發者聯盟

本文分享自華為雲社群《【雲小課】EI第50課 GaussDB(DWS)資料存儲盡在掌控,冷熱資料切換自如-雲社群-華為雲》,作者:閱識風雲。

雲小課|GaussDB(DWS)資料存儲盡在掌控,冷熱資料切換自如

閱識風雲是華為雲資訊大咖,擅長将複雜資訊多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視訊(雲視廳)總有一款能讓您快速上手華為雲。更多精彩内容請單擊此處【雲小課合集】華為雲小課最全合集來了,讓您上雲無憂-雲社群-華為雲。

雲小課|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]四個分區為熱分區。

雲小課|GaussDB(DWS)資料存儲盡在掌控,冷熱資料切換自如
  • HPN:表示保留HPN個有資料的分區為熱分區。分區順序按照分區的Sequence ID來确定,分區的Sequence ID是根據分區邊界值的大小,内置生成的序号,此序号不對外呈現。對于RANGE分區,分區的邊界值越大,分區對應的Sequence ID越大;對于LIST分區,分區邊界枚舉值中的最大值越大,分區對應的Sequence ID越大。在冷熱切換時,需要将資料遷移至OBS表空間中。其中HPN為整型,範圍為[0,1600]。

如下圖中,設定HPN為3,即在冷熱切換時,保留最新的3個有資料的分區為熱分區資料,其餘分區均切為冷分區。

雲小課|GaussDB(DWS)資料存儲盡在掌控,冷熱資料切換自如

準備工作

  • 已注冊華為雲賬号,且在使用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)           

點選下方,第一時間了解華為雲新鮮技術~

華為雲部落格_大資料部落格_AI部落格_雲計算部落格_開發者中心-華為雲

#華為雲開發者聯盟#

繼續閱讀