【发布时间】:2015-12-03 19:01:46
【问题描述】:
我正在尝试找出存储测量数据的最佳方式:
- 我有超过 50 种乐器
- 仪器独立,无需链接数据
- 每台仪器每分钟生成一条记录
- 每条记录大约有 1400 个测量值(浮点值)
- 每条记录都有唯一的测量时间
- 我将使用查询来选择时间之间的数据(在 99% 的情况下)
- 我将使用查询来选择最多一个月的测量类型(5 - 30 种测量类型)
- 有时我会查询特定日期和时间的所有测量值
- 并非所有数据都同等重要。在大多数情况下,将选择大约 100-200 种测量类型
- 我将录制至少 6 个月
- 插入不是问题
- 我使用的是 SQL Server 2012
最好的方法是什么?
我正在考虑为每种乐器创建 7 个表。第一个表只能包含最重要的测量类型(200 列)。其余表将包含大约 200 列。如果我将使用 Join 从多个表中进行选择,如何最有效地索引数据?这样我每天就有 1440 行。
其他方法是创建两个表。首先将包含从时间创建的主键。对于每个测量,我会在第二个表中放一行。这样我每天就有 200 万行。
【问题讨论】:
-
是否需要存储所有 1400 个测量值?如果只存储汇总数据会怎样?如果报告将使用汇总数据,则会减少存储需求,并允许更快地生成报告。
-
我必须存储所有测量值。我可以选择将记录间隔缩短到一个月。
-
空间要求不是问题。我每天对每台仪器进行 200 万次测量。我有类似的系统运行了将近一年,但我每 10 分钟存储一次数据。我正在使用 MySQL 服务器作为数据库引擎。数据库已增长到近 20 GB。
-
我预计当项目进入生产阶段(最多 300 台设备)时仪器会大量增加。记录设置将受到每年 100 GB 数据库大小的限制。
-
您打算如何提取数据?有了这么多记录,您可能会希望忽略规范化,转而支持数据仓库式架构。从 100GB 的数据库中检索应该是一个考虑因素。
标签: sql-server database sql-server-2012