2010-09-27 83 views
3

我想存儲大量的時間序列(時間vs值)數據點。我寧願使用MySQL。現在我打算將時間序列作爲二進制Blob存儲在MySQL中。這是最好的方法,最好的方法是什麼。在MySQL中存儲時間序列的最佳方式是什麼?

+3

接受一些答案您以前的問題,你會更容易得到,如果有更好的響應你做。 – fredley 2010-09-27 13:41:54

回答

2

您應該將值存儲爲任何類型的他們(INT,布爾char),並且您的倍任一個日期,或int包含UNIX時間戳,任何適合您的應用程序更好。

+0

不會導致縮放問題?在我的情況下,行數會大幅增加。 – sheki 2010-09-27 16:30:24

1

如果你想使用MySQL來以任何方式處理的信息,你應該把它保存爲一個日期類型,數值類型。 我看到的唯一縮放問題(如果您只打算存儲信息)是額外的磁盤大小。

0

由於湯姆和永旺說,如果你想要做的是什麼數據,你應該存儲在MySQL中的原生格式的數據( - >程序與SQL數據)。

另一方面,如果你不想處理這些數據,但只是存儲/檢索它,那麼你正在將MySQL用作一個blob容器,其中每個blob都是一團糟或多個時間組/數據點,而且它不可能成爲這項工作的最佳工具:這就是文件的設計目的。

你可以調查的混合方法,你可能存儲數據的非結構化,但您存儲時間戳作爲離散值。換句話說,一個以您的時間戳爲關鍵字的鍵/值存儲。這應該打開了NoSQL解決方案合作的可能性,也許你會發現,他們更適合(例如,想想在Riak集羣直接在數據庫運行map/reduce jobs

0

根據您的應用程序,使用空間數據MySQL的擴展可能是一個選項。然後,您可以使用空間索引來快速查詢數據。 要表示一個時間序列,LineString類可能是最合適的選擇。它代表了一系列可以用來存儲時間和價值的元組。 Here它說:「在世界地圖上,LineString對象可表示河流。」 創建線串很簡單:

-- if you see a blob, use Convert(AsText(...) using 'utf8') 
SELECT AsText(GeomFromText('LineString(1 1, 2 2, 3.5 3.9)')); 

一些鏈接上手:

https://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html https://dev.mysql.com/doc/refman/5.1/en/populating-spatial-columns.html

相關問題