如何将不同的测量组存储在数据库表中



这是一个关于在数据库中存储大量数据的难题。

假设我有一个装满机器的设施,每个机器都测量多个量的时间序列。我试着用一个玩具的例子来解释。

CCD_ 1测量四个温度和一个湿度。CCD_ 2测量一个温度和五个电压。MachineC测量风速和风向。测量一直在自动进行。

每台机器同时进行自己的所有测量,但时间间隔和偏移量因机器而异。这意味着一行只能包含一台机器在一个时间戳进行的测量。

实际上有两千台机器。这意味着为每台机器或每种类型的机器使用一个单独的桌子是不切实际的。

一直在添加不同的机器。一组跨越所有可能测量值的列是不可行的,因为如果我添加一个带有咸度测量值的MachineD,我就不会提前考虑咸度,我必须在一个非常大的表中添加一个新列,只供那台机器使用。

典型查询:

最近90天MachineA的最高温度是多少
  • MachineB过去7天的测量结果是什么
  • 在所有进行温度测量的机器中,昨天测得的最低温度是多少
  • 对于每台进行温度测量的机器,昨天测量的最低温度是多少
  • 在过去的一年里,哪些带有咸度检测器的机器也进行了测量
  • 根据MachineC的风速和MachineB的温度,风寒是多少
  • 如何在这些约束条件下组织?

    此数据中有几个维度

    • 机器(位置?):产生测量的东西
    • "分析物":被测量的东西
    • (显然)时间:测量的时间

    这三个项目,在某种形式上,必须是主键的部分。唯一的功能相关属性是*measurement":测量过程的实际结果。它的单位并不重要(因为它在功能上也依赖于三个关键字段;尽管可能是一个额外的伪维度"仪器类型",或者它甚至可能取决于位置。甚至时间。叹气…)。

    在这样的现实世界问题中,总是存在一种隐藏的依赖性:位置X使用测量设备Y测量{温度、风速、湿度},而总是

    这就是BCNF进入画面的地方。我不知道你的数据。如果我确实知道你的数据,我也无法判断:3..4个关键元素之间的相关性可能会随着时间的推移而变化。

    相关内容

    最新更新