在DB中存储时间 - 温度数据

时间:2009-05-12 03:40:56

标签: sql mysql database postgresql

我将时间 - 温度数据存储在数据库中,这实际上只是CSV数据。第一列是以秒为单位的时间,从零开始,以下(一个或多个)列为温度:

0,197.5,202.4 
1,196.0,201.5
2,194.0,206.5 
3,192.0,208.1 ....etc

每个图表代表约2000秒。目前我正在压缩数据,然后将其存储在output_profile longtext字段中。

CREATE TABLE `outputprofiles` (
  `id` int(11) NOT NULL auto_increment,
  `output_profile` longtext NOT NULL,
PRIMARY KEY  (`id`)

这有点帮助...我可以将10K纯文本的图表压缩到大约2.5K。此数据不需要搜索或索引,因为它只是在另一个表中引用。

我的问题:有没有其他方法可以存储这些数据我还没考虑哪种方式在存储空间方面更有效?

3 个答案:

答案 0 :(得分:3)

有没有理由认为存储空间会对您的应用程序造成限制?与易于访问和使用相比,我会在确定优先级之前确保情况更加优先;为了这个目的,听起来你所拥有的是令人满意的。

答案 1 :(得分:1)

我实际上并不太清楚“压缩情节”是什么意思。意味着,您正在压缩2000个测量值,或者您正在压缩每一行?

无论如何,空间很便宜。我会用传统方式制作它,即两列,每次测量一个条目。

如果由于某种原因这不起作用,并且如果你想将2000个测量值保存为一个记录,那么你可以做得更好。

。使用您的测量值创建一个csv文件。 。压缩它(gzip -9为您提供最大压缩) 。将其保存为 blob (或 longblob ,具体取决于您使用的数据库)不作为长篇文章

然后将其保存在数据库中。

这将为您提供最大压缩。

答案 2 :(得分:0)

PostgreSQL的存储空间开销很大,因为每个元组(表中一行的预表示)都是28字节,不包括数据(PostgreSQL 8.3)。有2个,4个和8个字节的整数,时间戳是8个字节。我认为浮点数是8个字节。因此,在PostgreSQL中存储1,000,000,000行将需要比MySQL多几个GiB(取决于您在MySQL中使用的存储空间)。但与MySQL相比,PostgreSQL在处理大量数据方面也很出色。尝试对一个巨大的MySQL表运行一些DDL查询,你会明白我的意思。但是你存储的这个简单数据应该很容易分区,所以maby一个简单的MySQL可以很好地处理这项工作。但是,正如我经常说的那样,如果你真的不确定你需要一个特定的MySQL功能,你应该选择PostgreSQL。

我将此帖仅限于MySQL和PostgreSQL,因为这个问题只标记了这两个数据库。

编辑:抱歉,我没有看到您确实将CSV存储在数据库中。