Db2

“符號連結”數據到新數據庫

  • July 20, 2016

我只是想找出一些方法來管理數據庫中部分/大部分應用程序數據的歸檔,並想知道這樣的事情是否可能:

  1. 歸檔任何狀態為已解決且數據更新超過 3 年的內容
  2. 將 MOST(但不是所有數據)移至存檔數據庫,並將目前生產數據庫中的值替換為指向存檔數據庫的“SymLink”?

這是一個簡化的範例:

#######################################################################################################
###                                         Active_Prod                                             ### 
####################################################################################################### 
#  ALIASAPPTYPE     ALIASAPPREASON  PZINSKEY                PZPVSTREAM                                #
#  App_Type_1234    New Enrollee    132387Something6357997  <SYMLINKED to Archive_Prod.pzpvstream>    #
#                                                                                                     #
#                                                                                                     #
#######################################################################################################
###                                     Archive_Prod                                                ###
#######################################################################################################
#  ALIASAPPTYPE     ALIASAPPREASON  PZINSKEY                PZPVSTREAM                                #
#  App_Type_1234    New Enrollee    132387Something6357997  [BLOB Data]                               #
#######################################################################################################

因此查詢select * from Active_Prod將返回以下結果:

ALIASAPPTYPE    ALIASAPPREASON  PZINSKEY                PZPVSTREAM
App_Type_1234   New Enrollee    132387Something6357997  [BLOB Data]

我們不會關心更新或插入數據,因為Archive_Prod無論如何數據庫都將設置為只讀。我的想法是,我們可以Active通過歸檔大部分日期來大幅減少 DB2 實例(無論如何,大部分數據都駐留在 BLOB 中),但將“Key”欄位保留在“Active”數據庫中以加快查找速度。但是通過創建數據的符號連結,我們可以提高 PEGA 的性能,並通過顯著減小數據庫的整體大小來縮短備份/恢復時間。

您可以使用聯合視圖來實現類似的目的。按照手冊中的說明配置聯合數據源後,您將為歸檔表創建一個暱稱。

CREATE NICKNAME Archive_Prod FOR archive_server.archive_schema.Archive_Prod;

之後,您將創建一個連接兩個表的視圖:

CREATE VIEW v_active_prod AS 
 SELECT local.aliasapptype, local.aliasappreason, local.pzinskey, remote.pzpvstream
 FROM Active_Prod local
 INNER JOIN Archive_Prod remote
 ON (local.aliasapptype, local.aliasappreason, local.pzinskey) 
  = (remote.aliasapptype, remote.aliasappreason, remote.pzinskey)

假設aliasapptype, aliasappreason, pzinskey是你的主鍵。

如果您想獲取您的 BLOB,而不管它們位於何處,您可能需要選擇外部連接:

CREATE VIEW v_active_prod AS 
 SELECT local.aliasapptype, local.aliasappreason, local.pzinskey, 
        COALESCE(local.pzpvstream, remote.pzpvstream)
 FROM Active_Prod local
 LEFT JOIN Archive_Prod remote
 ON (local.aliasapptype, local.aliasappreason, local.pzinskey) 
  = (remote.aliasapptype, remote.aliasappreason, remote.pzinskey)

不過,從聯合數據源讀取 BLOB 時,不要期望性能會非常出色。

引用自:https://dba.stackexchange.com/questions/144437