3

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

4

4 回答 4

2

您应该将您的值存储为它们的任何类型(int、boolean、char),并将您的时间存储为日期或包含 UNIX 时间戳的 int,无论哪种方式更适合您的应用程序。

于 2010-09-27T13:43:05.080 回答
1

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

于 2010-09-27T16:38:04.783 回答
0

正如 Tom 和 aeon 所说,如果您想对数据执行任何操作(-> 使用 SQL 处理数据),您应该将数据以其本机格式存储在 MySQL 中。

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

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

于 2012-06-28T10:29:23.213 回答
0

根据您的应用程序,可以选择使用 MySQL 的空间数据扩展。然后,您可以使用空间索引来快速查询数据。要表示时间序列,LineString 类可能是最合适的选择。它表示您可以用来存储时间和价值的元组序列。 这里它说“在世界地图上,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

于 2015-07-22T17:29:57.350 回答