2014-02-07 44 views
0

我目前正試圖設計一個數據庫來存放生產測試數據。每個單元都經歷相同的測試序列(12次測試),電壓,電流和溫度數據在每次測試運行期間以各種採樣率從多個位置採集。目標是通過測試類型和參數使用數據進行趨勢分析,以確定單元是否「在家庭中」。時間序列數據的關係數據庫

我的第一個想法是將一個'Units'錶鏈接到'Tests'表上,並鏈接到'Parameters'表,該表將鏈接到該特定運行的原始數據。關係數據庫是最好的方式去做這樣的事情,或者我會更好地使用像MongoDB這樣的應用程序?

+0

Mongo不是一個真正的數據庫。如果頂級文檔彼此獨立,但包含大量高度結構化的數據,這些數據在文檔中相關但不在文檔之外,那麼Mongo可能就是答案。對於任何你想要建模非等級關係的人來說,都堅持一個真正的關係數據庫。爲了更好的回答,請提供一些您想要存儲的示例。 –

+0

@JimGarrison「數據庫是有組織的數據集合。」 (http://en.wikipedia.org/wiki/Database)按照這個定義,Mongo肯定是一個數據庫。回答這個問題,經典答案適用:取決於。這很難說,因爲我們不知道你會如何處理你的數據。對於這樣的科學數據,如果我不認爲額外的桌子會給我帶來太多的收益,我可能會考慮將所有東西都放在一張帶有一些好的索引的單一表格中。考慮一下你需要對數據執行什麼類型的完整性約束以及你將要運行什麼種類的查詢。 – jpmc26

回答

1

傳統的RDBMS仍然是您的默認選擇。像MongoDB這樣的'NoSQL'系統只有在關係型數據庫無法滿足您的要求時纔會使用。這裏是關係型數據庫可能不是可行

兩個典型的案例有:

  • 其中數據unstructered,或結構是不知道或不能得到保證。文檔存儲或鍵值存儲本質上允許您向其中拋出任意數據,並將其存儲。

  • 哪裏有極高的併發性和/或讀寫要求的高度混合。在這種情況下,傳統的關係系統可能無法跟上,因爲它需要保持數據同步並保持其完整性。

這也有可能是數據量實在太大,但是這意味着數據的很多。在你的情況下,這聽起來像數據是高度結構化的,並以合理的速率到達(你不會接收數據點比可以測試的物理單元更快)。另外,聽起來不像整個系統會有沉重的並行負載(意味着許多用戶同時運行查詢)。

在這種情況下,您可能希望利用內置的完整性維護機制(輸入列,檢查約束等),傳統關係系統提供的大量文檔等。

正如你在你的問題中提到的那樣,爲你的數據設計一個可行的模式是絕對有可能的。

+0

+1「傳統的RDBMS仍然是您的默認選擇。」 – jpmc26