【问题标题】:Storing time-temperature data in DB在 DB 中存储时间-温度数据
【发布时间】:2009-05-12 03:40:55
【问题描述】:

我将时间-温度数据存储在数据库中,这实际上只是 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。不需要对此数据进行搜索或索引,因为它只是在另一个表中引用。

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

【问题讨论】:

    标签: sql mysql database postgresql


    【解决方案1】:

    是否有任何理由认为存储空间会成为您应用程序的限制因素?与访问和使用的便利性相比,在将其置于更高优先级之前,我会尽量确定情况是否如此;出于什么目的,听起来你所拥有的东西是令人满意的。

    【讨论】:

    • 正如我爷爷常说的,磁盘空间很便宜
    • 可能是我试图过早优化的另一种情况。但是,我想看看是否还有其他我完全错过或没有想到的东西。谢谢。
    【解决方案2】:

    我实际上不太明白您所说的“压缩情节”是什么意思。意思是,您正在压缩 2000 个测量值还是正在压缩每一行?

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

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

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

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

    这将为您提供最大的压缩。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-10
        • 1970-01-01
        • 1970-01-01
        • 2011-02-26
        相关资源
        最近更新 更多