首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >时序数据库设计

时序数据库设计
EN

Stack Overflow用户
提问于 2014-01-29 03:00:26
回答 3查看 2.3K关注 0票数 2

我是数据库设计的初学者,研究实现时间序列数据的方法.基本上,我想设计一个数据库来存储电池指标,即电流、电压和用户的时间。我想得越多,我就越迷惑自己。请帮助我指出正确的方向。到目前为止,我想出了以下psuedo代码:

代码语言:javascript
运行
复制
   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关系数据库。它有优化设计吗?

谢谢你在我的研究中的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-29 03:05:04

您可以为BatteryLog表创建一个自动增量主键:

代码语言:javascript
运行
复制
[BatteryLogID] [int] IDENTITY(1,1) NOT NULL

这将为每个记录提供唯一标识符。

或者,您可以在BatteryID[DateTime]上创建一个复合主键,如果它们对每个记录也是唯一的(通常是时间序列的情况)。

票数 2
EN

Stack Overflow用户

发布于 2015-07-24 08:23:07

为什么不使用一个现成的时间序列数据库设计和优化,以有效地存储和分析时间戳观测。

初学者数据库列表:database

票数 0
EN

Stack Overflow用户

发布于 2017-07-31 06:41:13

我为关系数据库建议的唯一优化是:

代码语言:javascript
运行
复制
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

基本上,这张表的每一行都包含了一分钟的电流和电压测量。您可以缓存设备上的数据并将其立即发送到数据库一次。缺点是该方案只适用于一种分辨率(在这种特殊情况下为一秒)。它可以调整,以支持可变分辨率,但它不能支持可变分辨率或稀疏时间序列。

实时序列数据库易于处理,具有较好的性能特点.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21421215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档