我需要创建一个数据库来保存将要查询的传感器数据,以便稍后生成报告(显示给定时间范围内的图形和AVG / MAX / MIN值)。
数据点如下所示:
CREATE TABLE [dbo].[Table_1](
[time] [datetime] NOT NULL,
[sensor] [int] NOT NULL,
[value] [decimal](18, 0) NULL
)
可以按秒到几分钟的间隔添加数据(取决于传感器)。
当数年累积数据时,我是否应该担心我的数据库变得太大(数据库将在MS SQL Server 2008工作组版本上运行)?
答案 0 :(得分:3)
有专门的历史数据库,例如OSISoft的PI Historian,它比关系数据库更好地处理这类数据。使用PI,您可以为每个数据点配置压缩偏差,这样即使数据至少因压缩偏差而改变,也不会存档数据。当您查询给定点的历史数据时,您可以要求PI对指定时间内的值进行插值,即使您的时间段在存档值之间也是如此。
它能够提供更多功能,但您必须自己探索,因为我不打算成为OSISoft推销员。但是,这绝对是您希望存储大量传感器数据的方式。
答案 1 :(得分:1)
这一切都取决于你想要花费多少资源和精力。每秒1行,每个传感器每年仍然小于0.5GB,这是非常小的。如果您有数千个传感器,那么您可能需要考虑是否创建汇总表以帮助报告和分析数据。
像这样的传感器数据通常是非常重复的。有更方便的方法来存储重复值 - 例如,存储一行具有一定范围的行而不是多行具有不同的时间。
有许多软件包可以帮助存储和管理这种时间序列数据。关于这个主题还有大量的研究和文献,可能对你有所帮助。如果你还不熟悉谷歌,那就像“Process Historian”,“复杂事件处理”和“SCADA”这样的术语。
答案 2 :(得分:1)
这取决于您将如何使用数据,您还添加了哪些索引,传感器数量等等。
如图所示,该表可以在~6GB空间(假设堆)中存储1.5亿行(约1个传感器x每秒1次记录×5年)。 file size limit是16 TB,我不知道Workgroup版本对此有任何限制。
答案 3 :(得分:0)
如果您担心数据库变得过大,我建议您可以使用具有相同结构和归档数据的Archive_Table,例如每月或每月6次(完全基于数据量)。
因此,这将允许您检查表中的记录数。当然,存档表可以在您需要时生成报告。