我正在領導一個項目,我們將記錄指標數據。我想保留這些數據多年。不過,我還想避免主表中的數據變得臃腫,而這些數據雖然對於長期趨勢來說是必要的,但對於短期報告並不需要。保留大數據集的最佳策略是什麼?
處理這種情況的最佳策略是什麼?簡單地將舊數據歸檔到另一個表中?或者通過對數據本身進行整合(然後將其存儲到不同的表格)?還是其他什麼東西?
附加信息:我們使用SQL Server 2005的
我正在領導一個項目,我們將記錄指標數據。我想保留這些數據多年。不過,我還想避免主表中的數據變得臃腫,而這些數據雖然對於長期趨勢來說是必要的,但對於短期報告並不需要。保留大數據集的最佳策略是什麼?
處理這種情況的最佳策略是什麼?簡單地將舊數據歸檔到另一個表中?或者通過對數據本身進行整合(然後將其存儲到不同的表格)?還是其他什麼東西?
附加信息:我們使用SQL Server 2005的
我在工作中使用了這兩種方法,但略有不同,我們將所有銷售數據保留在主表中30天,然後在晚上(夜間工作的一部分)將銷售日彙總爲摘要(n qty的x產品今天出售等)在一個單獨的表中出於報告的原因,超過30天的銷售被存檔到一個不同的數據庫,然後每年一次(我們去稅年)開始一個新的檔案數據庫。不完全的,但..
這樣我們快速得到摘要數據,保持所有當前的銷售數據在手,並有一個無限的空間,詳細的檔案數據。我們嘗試將它全部保存在一個數據庫中(在不同的表格中),但是數據庫的文件大小(interbase)會變得非常大以至於會拖累系統。
我們正在訪問跨越多個數據庫的詳細數據,作爲連接,唯一真正的問題斷開緩慢,分析了在代碼中完成,而不是SQL
無論這些選項是優秀的,但它確實取決於問題域。對於諸如現金餘額或統計數據之類的東西,我認爲彙總記錄併合並它們是最好的方法,然後您可以將彙總的記錄移動到並行歸檔表格中,以可以「展開」的方式鍵入它們必要。這使您的主數據表保持清潔和快速,但允許您保留額外的審計數據或其他數據。關鍵問題是,您如何實施「總結」流程。自動,通過觸發器或服務器端流程,還是通過應用程序級別的用戶干預?
如果您使用的是SQL Server 2005中,這可能是使用partitioned tables的理想選擇。
@Jason - 我沒有看到如何將數據保存在普通的舊文本文件中,這將使您能夠輕鬆地對數據進行長期趨勢分析。我想我的觀點是,如果商業人士需要對數據進行任何類型的臨時分析(即趨勢分析),那麼將數據捲入或歸檔到文本文件中並不能解決問題任何問題。當然編寫代碼來消費文本文件在很多語言中很容易,但是這個問題已經解決了。另外,我認爲今天的RDBMS在正確設置和維護時都非常耐用。如果他們不是爲什麼要在一個頂部運行一個業務(更不用說歸檔數據了)?由於聲明文本文件的持久性優於數據庫,我只是看不到歸檔爲純文本文件的意義。
根據預算等約束條件,這聽起來像是數據倉庫應用程序的完美候選者。這通常會引入一個新的服務器用作數據倉庫。 SQL Server 2005支持許多此開箱即用的活動,此外,您還可以利用其他SQL Server服務(例如Analysis Services,Reporting Services)爲用戶提供額外的價值。 (見http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx)