拉鍊表的實現原理與查詢方式

2021-10-04 15:15:01 字數 1470 閱讀 2365

@author  : spinach | ghb

@link :

實現原理

查詢方式及總結

針對資料倉儲設計中表儲存資料的方式而定義的,即記錄歷史。

記錄乙個事物從開始,一直到當前狀態的所有變化的資訊。

記錄生命週期

所以,任何一條記錄(行資料)必定在歷史上某天新生(start),

並在其後的某一天死亡(end),

那麼這個start-end生存週期便定義為該記錄的生命週期。

活躍資料

死亡資料

一般的資料表只會記錄當前修改的時間,因此能得到某實體最新的狀態快照

name

status

date張三1

2020-01-01李四5

2020-01-01張三3

2020-01-02李四6

2020-01-03

拉鍊表巧妙增加了產生(start_date)日期和死亡日期(start_date),用來回溯狀態歷史快照。

name

status

start_dt

end_dt張三1

2020-01-01

2020-01-01李四5

2020-01-01

2020-01-02張三3

2020-01-02

_infinity李四6

2020-01-03

_infinity

查詢方式

select * from table where start_dt=<『2020-01-01』 and end_dt>』2020-01-01』

name

status

start_dt

end_dt李四5

2020-01-01

2020-01-02張三3

2020-01-02

_infinity

select * from table where end_dt=』_infinity』

name

status

start_dt

end_dt張三3

2020-01-02

_infinity李四6

2020-01-03

_infinity

應用條件

需要檢視某個時間點和時間段的歷史快照;

有個資料量很大的表;

表中的記錄變化比例很小;

表中的部分字段需要變化; 總結

拉鍊錶能滿足檢視最新快照和歷史快照的需求;

查詢檢索效能沒有明顯提高,但可以將start_dt和end_dt當成分割槽字段,已提高檢索效能;

拉鍊表的實現過程

主要總結一下實現過程 分析 拉鍊表就是用來儲存變化的資料的,每乙份資料都有對應的有效期,我們需要進行的操作就是將變動的資料進行新增,同時將變動對應的前一條資料的有效期進行變更。在這之前需要熟悉一下需要用到的表 表1 訂單表 記錄原始的資料 表2 增量資料表 記錄每日變更的資料 表3 歷史拉鍊表 我們...

數倉 拉鍊表(原理 設計以及在Hive中的實現)

舉乙個具體的應用場景,來設計並實現乙份拉鍊表,最後並通過一些例子說明如何使用我們設計的這張表 因為現在hive的大規模使用,我們會以hive場景下的設計為例 拉鍊表的使用場景 為什麼使用拉鍊表 拉鍊表的設計和實現 在hive中實現拉鍊表 拉鍊表和流水表 查詢效能 總結所謂拉鍊,就是記錄歷史 使用者i...

資料倉儲 拉鍊表 增量表抽取的實現

業務部門提了使用者分層的需求,其中有一點,業務放需要我們數倉提供歷史資料,並且業務庫里的部分表還沒有資料更新時間字段。所以本篇文章主要解決兩個問題 1 問題一 怎麼再hive裡實現拉鍊表 2 問題二 怎麼再沒有資料更新時間欄位的情況下獲取增量資料 個人認為這個方式也是一種通用的方式 1 是什麼?拉鍊...