【发布时间】:2013-11-20 14:08:36
【问题描述】:
最近几天,我打电话来替代我公司的一名前 dba 总结一下,该公司负责气象数据的存储。 也就是说,自 1996 年以来,已经以不同的方式(txt、xls、然后访问等)测量和存储了许多变量 去年,所有这些数据都必须存储在 sql db (sql server 2008 r2) 中,但我发现了一个奇怪且不简单的情况 实际上,大约有 30 个表,每个表都有不同的列数。 每列都是一个变量,在我们的数据库中存在 300 多个变量 表的结构类似: id, siteid, date_of_meas, var1, var2,...,varN(复制 30 次)
首先,变量没有按逻辑分组(压力与温度等),但最糟糕的是,每次创建新变量时(取决于实际因素,这里没有什么有趣的讨论),前 dba 采取行动这边走: 1. 向现有表添加新列(...如果表已经有 50 列...?) 2.写入数据 正如你所知道的那样,在我看来,这种方式真的很疯狂
我会从头开始重新设计数据结构。 情况是这样的:有一个包含所有现有变量的表(添加新变量没问题) 我可以使用变量的 id 号,创建新表(对它们进行逻辑分组......但总会有很多表)并使用这些外键插入数据。 类似于以下内容:
CREATE TABLE [dbo].[MyMeteo](
[id_meteo] [int] IDENTITY(1,1) NOT NULL,
[varid] [int] NOT NULL,
[siteid] [int] NOT NULL,
[date] [smalldatetime] NOT NULL,
[value] [float] NULL,
....
另一个问题是数据量非常大...由于每 30 分钟测量一次数据,因此在 1 年内有 17520 或 17568 次测量。 将其乘以 15 年,300 个变量和 200 个站点……我正在考虑 sql 数据库是否仍然是正确的选择。 非常感谢 迭戈
【问题讨论】:
-
不用担心数据量。只要您的硬件符合要求并且您购买了正确版本的 SQL Server,这方面就可以了。
-
“未按逻辑分组(压力与温度等)”——但是,
PV = NkT。对我来说,这实际上似乎是合乎逻辑的。 -
查看表分区以获得更快的查询访问,但数据量是 SQL Server 无法处理的。
标签: sql sql-server-2008 database-design