← 所有文章

FIELD NOTES / 資料記錄與報表

資料封存後如何抽樣驗證仍可回查原始事件

資料記錄與報表作者:站長預估 5 分鐘閱讀

從封存清冊、分層抽樣到隔離還原,驗證事件與工程意義仍能回查並留下可重複證據。

本文目錄

封存完成不等於日後找得到

檔案已搬到封存磁碟,容量也少了,仍不能證明半年後能查回某件產品。封存驗收要回答四件事:檔案是否完整、內容能否解析、事件是否在內、相關欄位能否還原工程意義。只確認壓縮檔可開啟,還少了後面三項。

先列封存範圍、來源資料表或檔案、時間欄、時區、資料截止點與封存版本。原始事件若還有明細、品質、單位或點位字典,也要列入相依資料;只搬走數值主表,日後可能看得到253卻不知道是25.3度還是253公斤。

本文適用於歷史事件與報表資料的封存回查,資料庫備份以PostgreSQL官方文件為例。專用歷史庫的封存格式、授權與還原相容性要依產品核對;本文不保證任意版本都能開啟舊檔,也不以抽樣通過宣稱全部資料零缺陷。

在移除線上副本之前建立來源基準,包含唯一事件數、時間範圍、分來源筆數與必要的數值核對。基準應來自明確截止點,避免封存後又收到遲到事件,卻拿新的線上總數與舊封存檔比較而誤判遺失。

建立可重複的抽樣名單

不要只抽最近十筆。至少包含區間開頭與結尾、每個來源、正常與不良品質、空值、中文備註、重送處理後的事件,以及跨日或跨月邊界。這些分層樣本能測到不同格式與查詢路徑,避免大量正常值掩蓋特殊資料問題。

再從剩餘事件中隨機抽樣,保存抽樣方法、種子或完整事件名單,讓之後可以重做同一組檢查。樣本數依資料規模、重要性與風險設計,本文不提供一個固定數量就保證可靠的門檻;高風險事件可另要求全數驗證。

教學案例封存一萬筆事件,先全數核對唯一數與各來源數,再選二十筆覆蓋特定邊界,另隨機抽三十筆。若兩組有重疊,記錄實際唯一抽查數,不要直接寫抽查五十筆。抽樣結果只對已檢查範圍提供證據。

每個樣本保存預期事件鍵、時間、值、單位、品質與明細數。回查時逐欄比對,不能只找到同一產品號就算成功;同產品可能有多次加工與修訂,必須確認是同一事件版本,並核對空值與零值沒有互換。

完成後應有一份能逐項勾對的名單,列出找到、缺少、內容不一致或無法解析。失敗項附查詢條件與錯誤訊息,不能只寫「抽查九成正常」而把剩下一成問題藏在總百分比裡。

在隔離環境實際走一次還原路徑

先驗證檔案清冊與校驗值。SHA-256可檢查目前位元組是否與建立基準時一致,但若封存一開始就漏掉一個檔案,對剩餘檔案算雜湊仍會全過。清冊、來源範圍與內容核對要搭配,雜湊不能單獨證明資料完整或真實。

使用隔離的唯讀查詢或還原環境,確認工具版本、必要元件與權限。不要為了驗證直接把舊備份覆蓋正式資料庫。測試環境也不要啟動會寄出正式通知或寫回設備的工作,封存回查的目的是讀取證據。

PostgreSQL的純文字SQL備份與非純文字封存使用不同還原路徑,pg_restore用於其支援的非純文字pg_dump格式。一般CSV不是pg_restore備份。先辨認實際格式與建立工具,不能只把副檔名改成backup就當成可還原資料庫。

檢查角色、擴充套件、表結構與外部檔案等相依條件。單一資料庫的pg_dump不包含所有叢集層級角色與表空間資訊,若回查流程依賴這些設定,另保存重建資料。檔案本體完好但缺少必要環境,仍可能無法使用。

還原時讀取完整錯誤紀錄與完成狀態,不能因最後能連線就認定全部成功。某些執行方式遇錯仍繼續,可能只還原部分物件。確認所需資料表、明細與字典都存在,再執行預先定義的事件查詢。

比較內容並留下可用性證據

除樣本逐欄比對,另核對封存範圍的唯一事件數、最早與最晚時間及分組總數。最早最晚一致不代表中間無缺口;總數一致也可能是一筆遺漏加一筆重複,所以保留事件集合檢查或更細分的基準能提高判別能力。

若原始資料與封存格式做過合法轉換,先定義允許差異,例如時間統一UTC但代表同一時刻、文字換行按契約正規化。數值截短、品質消失或單位遺失不是單純格式差異,應視為需處理的內容變更。

失敗時先查是否選錯封存版本與時間範圍,再查清冊漏件、工具相容性、權限與相依字典。找到事件卻解讀不出數值時,優先查型別、倍率與定義版本;查詢不到則分清是資料不存在,還是索引、路徑或權限限制。

記錄取回檔案、解壓、還原與查詢各自耗時。能還原但要三天,可能不符合現場半天內追查的需求;時間目標由使用需求訂定。定期重做代表性回查,尤其工具升級、磁碟搬移或帳號調整後,不能只依賴多年前的一次通過。

回查報告另列未驗證的來源與日期,不把這次成功樣本延伸成所有年份都可用。後續換人操作時,依同一清冊與步驟重做,可檢查流程是否只依賴原操作者的記憶。

練習與常見問題

練習:封存清冊原有十個檔案,現存九個且九個雜湊都一致。結果應判為缺少一個檔案,不能說封存完整。若還原後主檔一千筆、明細少十筆,也應查明差異,即使抽查的五筆主檔都能找到。

問:抽樣全部通過可證明每筆都正確嗎?答:不能,需明示抽查範圍並搭配全體一致性檢查。

問:壓縮檔測試成功等於可查事件嗎?答:還要解析或還原內容並執行實際查詢。

問:有雜湊值就不需要清冊嗎?答:需要,雜湊不會告訴你原本應有幾個檔案。

問:只保存數值和日期足夠嗎?答:通常還需要事件身分、品質、單位與版本,才能還原原始意義。

參考:PostgreSQL 18 SQL Dump:備份一致性、還原方式與叢集資訊範圍。

參考:PostgreSQL 18 pg_restore:可處理的封存格式與還原功能。

參考:Python hashlib:SHA-256摘要工具;完整性判讀另依本文清冊與來源核對。

延伸閱讀