在MySQL中存储时间序列的最佳方法是什么?

时间:2010-09-27 13:15:08

标签: mysql time-series

我想存储大量的时间序列(时间与值)数据点。我更喜欢使用MySQL。现在我打算将时间序列存储为MySQL中的Binary Blob。这是最好的方法,最好的方法是什么。

4 个答案:

答案 0 :(得分:2)

你应该把你的值存储为它们的任何类型(int,boolean,char)和你的时间作为日期,或者包含UNIX时间戳的int,以及更适合你的应用程序的任何类型。

答案 1 :(得分:1)

如果要以任何方式使用mysql处理信息,则应将其存储为日期类型,数字类型。 我看到的唯一缩放问题(如果您只打算存储信息)是额外的磁盘大小。

答案 2 :(得分:0)

正如Tom和aeon所说,如果你想对这些数据做任何事情,你应该以MySQL的原生格式存储数据( - >用SQL处理数据)。

另一方面,如果您不想处理该数据,只是存储/检索它,那么您使用MySQL就像一个blob容器,其中每个blob都是一个混乱/多个时间组/数据点,它可能不是最好的工具:这就是文件的设计目的。

您可以研究一种混合方法,在该方法中您可能存储非结构化数据,但您将时间戳存储为离散值。换句话说,键/值存储时间戳为键。这应该开启了使用NoSQL解决方案的可能性,也许您可​​以发现它们更适合(例如,考虑直接在map/reduce jobs集群中的数据库上运行Riak)< / p>

答案 3 :(得分: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

相关问题