我們有一個數據收集系統,用於收集測量流經河流或河道的水流速度的環境傳感器的測量值。每次測量都會生成固定數量的值(例如日期,時間,溫度,壓力等)以及速度值列表。
最初,傳感器提供三個速度值,所以我只是將每個值存儲在FireBird數據庫中單個表的自己的列中。後來傳感器被引入,可以輸出多達九個速度值,所以我簡單地添加了六個列。即使大多數傳感器使用少於9個值,但我認爲如果大多數列只包含零,這不會成爲問題。
但是現在我正面臨着可以輸出1到256個值的新一代產品,我認爲添加另外247個色譜柱並不是非常有效,特別是因爲大部分測量值仍然只包含3到9個值。
由於每10分鐘收集一次測量數據,並且數據庫包含30到50個傳感器的所有數據,所以在數年後總數據量相當重要,但必須能夠生成任意隨機時間段的概覽/圖表時間。在數據庫中存儲可變數量字段的測量結果的最有效方法是什麼?
那麼什麼是最有效的方式來存儲變量值列表?
由於每條記錄都有自己的唯一ID,因此我假設我可以將所有速度值存儲在單獨的表格中,每個值都用它的記錄ID標記。我只是覺得這樣做效率不高,而且會在一段時間後變得非常緩慢。
當我需要它們生成圖表或報告(可能包含數千個測量結果)時,您不認爲對這些值進行反序列化會不會是一個巨大的性能問題? – 2009-10-27 12:04:05
不是真的 - 它們通過線路串行傳輸,並且由您的數據庫庫進行反序列化。性能問題出現在您希望數據庫使用這些值進行智能處理時出現的問題 - 因爲它只是將它們傳遞給您的代碼,您應該不會遇到性能問題。 – orip 2009-10-27 12:28:59