gpt4 book ai didi

sql - 频繁记录小事情的高效数据库设计

转载 作者:行者123 更新时间:2023-12-02 06:43:50 25 4
gpt4 key购买 nike

我有一个数据库,用于存储来自各种仪器的温度记录数据。数据可能每分钟记录一次。设计日志表的一种方法是将每个日志条目与设备 ID、时间戳和序列号一起放在自己的行中(即使设备上的时钟发生变化,也应该可以对条目进行排序按照实际进行测量的顺序)。然而,这似乎非常低效,因为除了系统为索引添加的任何内容之外,每个 16 位测量值可能还附加了 16 个字节的其他数据。我认识到,尝试优化数据库中的每个最后字节通常是毫无意义的,但将数据扩展 9:1 或更糟的比例似乎很愚蠢。

目前,我将记录聚合成等间隔读数的组,并以可变长度不透明二进制格式存储每条记录一组,以及设备 ID、时间戳和第一次读数的序列号,以及间隔读数之间。这很好用,据我所知这可能是最好的方法,但它不允许太多查询。

有没有什么好的方法可以在没有过多冗余的情况下处理此类数据集?

最佳答案

您的数据不会扩展 9 倍。您的数据大致保持不变,因为您没有开始时的 16 位测量。您的测量值是特定设备在特定时刻的第 N 次测量值。因此,您的数据确实有一个序列号、一个设备 ID 和一个时间戳,甚至在您将它们添加到数据库之前,无论您是否愿意考虑。

如果您将数据存储在关系表 (SQL) 中,请将其存储为关系格式:规范化。每行一条记录。以可查询的格式存储信息。以不透明的二进制格式“聚合”记录会使您的整个数据库变得无用,因为无法查询、聚合、过滤数据,什么也做不了。您对“这很好用”的定义基本上是“我可以编写数据,但没有人可以使用它”,这很难说是“好”。您也可以将数据转储到 /dev/nul...

将数据存储为适当的记录。将数据存储为适当的数据库类型,不要使用“不透明的 blob”。并且“数据可能每分钟记录一次”对于任何数据库标准来说都不是“频繁”的。如果您说“每秒 100 次”,那么我们就有话要说了。

关于sql - 频繁记录小事情的高效数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com