我是数据库设计的初学者,研究实现时间序列数据的方法.基本上,我想设计一个数据库来存储电池指标,即电流、电压和用户的时间。我想得越多,我就越迷惑自己。请帮助我指出正确的方向。到目前为止,我想出了以下psuedo代码:
Table: User
Column 1: UserID( Primary Key )
Column 2: UserName
Table: Battery
Column 1: BatteryID ( Primary Key )
Column 2: ManufactureSerial
Column 3: ManufactureDate
Column 4: UserID (Foreign Key )
Table: BatteryLog
Column 1: Voltage
Column 2: Current
Column 3: SOC
Column 4: DateTime
Column 5: BatteryID (Foreign Key)现在,我的问题是: BatteryLog表的主键应该是什么?电池日志可以在指定的时间内包含数百万行时间序列.我现在正在使用SqlServer关系数据库。它有优化设计吗?
谢谢你在我的研究中的帮助!
发布于 2014-01-29 03:05:04
您可以为BatteryLog表创建一个自动增量主键:
[BatteryLogID] [int] IDENTITY(1,1) NOT NULL这将为每个记录提供唯一标识符。
或者,您可以在BatteryID和[DateTime]上创建一个复合主键,如果它们对每个记录也是唯一的(通常是时间序列的情况)。
发布于 2015-07-24 08:23:07
为什么不使用一个现成的时间序列数据库设计和优化,以有效地存储和分析时间戳观测。
初学者数据库列表:database
发布于 2017-07-31 06:41:13
我为关系数据库建议的唯一优化是:
Table: BatteryLog
Column 1: SOC
Column 2: DateTime
Column 3: BatteryID (Foreign Key)
Column 4: Voltage00
Column 5: Current00
Column 6: Voltage01
Column 7: Current01
...
Column 124: Voltage59
Column 125: Current59基本上,这张表的每一行都包含了一分钟的电流和电压测量。您可以缓存设备上的数据并将其立即发送到数据库一次。缺点是该方案只适用于一种分辨率(在这种特殊情况下为一秒)。它可以调整,以支持可变分辨率,但它不能支持可变分辨率或稀疏时间序列。
实时序列数据库易于处理,具有较好的性能特点.
https://stackoverflow.com/questions/21421215
复制相似问题