Sql-Server

按年份歸檔關係 OLTP 數據庫

  • January 11, 2018

我們公司正在尋求存檔舊數據。

兩年後,我們將源:OLTP FinanceDB 放入 ArchiveDB。我們希望按客戶訂單日期的年份存檔。(例如,當年是 2018 年,任何 2016 年或以下)

訂單日期不同於 Etlcreatedate 和 Etlupdatedates。只有一張表 dbo.SalesOrder 有訂單日期。其餘相關(父、子、橋)表沒有訂單日期。這是一個 Inmon OLTP 關係數據庫,因此不會出現訂單日期冗餘。

例如:

CustomerApplicationtable(顯示客戶資訊/名稱),

MktgTable(顯示與訂單相關的行銷材料),

電話表(客戶關係表),

費用佣金表

這些沒有訂購日期。我將如何存檔?我們有 100+ 百萬行?

我認為除非每個表都有年份列,否則分區切換將不起作用。

我應該為每個表添加一個歸檔分區指示器並更新以查找分區嗎?

我是否應該使用傳統的 etl,查找與 SalesOrderdate 表連接的所有訂單日期並存檔?

這些沒有訂購日期。我將如何存檔?我們有 100+ 百萬行?我認為除非每個表都有年份列,否則分區切換將不起作用。

要使用分區切換方便按年歸檔,訂單相關的表不一定需要新的年份列。相反,您可以使用滑動視窗添加OrderDate到相關表並按年度邊界進行分區。OrderDate所有表都需要相同的分區OrderDate列並對齊(索引也分區)。

這確實會引入冗餘,並且會對數據模型和 OLTP 查詢性能產生重大影響。分區列需要是主鍵、唯一約束和索引的一部分。未指定分區列(例如WHERE OrderID = @OrderID)的查詢需要同時訪問活動表的兩個分區。

我在這裡的建議是對存檔使用傳統的 ETL 流程,而不是引入只會有利於年度存檔的重大更改。如果您的業務需求允許,請考慮每日或每月存檔,以使流程更易於管理。

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