2010-09-27 84 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

相关问题