2012-01-18 51 views
1

我一直在尋找關於如何將數據存儲在數據庫中以實現歷史數據挖掘的建議。如果我能夠在某個特定時間獲得實體的狀態,那麼存儲它的最佳方式是什麼,以便我可以歷史地挖掘這些數據,並根據過去的狀況預測該狀態的可能性?如何存儲歷史服務器數據?

有關更具體的示例,我可以獲取服務器的上/下狀態以及該服務器的當前負載。我可以定期安排。我想存儲這些數據,以便我可以輕鬆查詢特定時間段的上/下狀態或負載,或獲取該服務器的整個歷史記錄。我沒有太多的經驗,如果有的話,在數據庫設計。

回答

1

這就是爲什麼Ralph Kimball(和其他人)發明了數據倉庫。

您的星型架構的尺寸類似於服務器和時間。你有一個記錄狀態變化的事實表(Up和Down)和一個記錄Load在給定時間點的事實表。

第1步。找到一個關於星型模式設計的好教程。如有必要,可以購買一兩本書。每一刻你都需要學習如何進行星型模式數據建模。

第2步。儘可能便宜,快速地構建原型架構。加載數據,以便您可以編寫一些查詢並查看工作情況。犯錯誤。修復它們。

第3步。當你得到一些工作,然後寫下一個很好的設計。

第4步。建立你的「真正的」數據集市。

第5步。建立你的「生產」負載。

第6步。查詢。

+0

所以它聽起來像我有2個事實表(上或下和負載)爲每個服務器,是否正確? – s73v3r 2012-01-18 00:53:41

+0

現在,當涉及到存儲數據時,我應該在發生某些更改時添加記錄,或者獲取每個數據點的記錄嗎?例如,假設我每15分鐘獲取一次服務器數據。在下午1點,服務器從高負載轉換到中負載,並且在轉換到另一個狀態之前停留一個小時。所以我有4個數據點,都說中等負載。我是否應該將此存儲爲4個條目,全部包含測量時間和中等負載,還是應該有一箇中等負載條目,開始時間爲13:00,結束時間爲14:00? – s73v3r 2012-01-18 02:20:18

+0

第1步。獲取Kimball的書。以特定的時間間隔存儲數據,因此您不必插入數據。收集大量數據。最後使用平面文件並加載RDBMS--並且只有當您想要使用SQL查詢子集時。大多數處理可以通過組織CSV文件來完成,以便於加載。 – 2012-01-18 10:50:14

0

這就是爲什麼有新版本的標準SQL:2011。

只需將適當的開始日期和結束日期屬性添加到您的實體和/或適當的列到表中,基本上就完成了。

當然,如果你有一個支持新功能的引擎,那麼新的SQL會爲你做很多討厭的工作(但不是全部)。