【发布时间】:2011-11-08 00:23:06
【问题描述】:
我接手了重新开发供 Web 界面使用的科学数据数据库的任务,其中原作者采用了“每个数据集一个表”的方法,这种方法不能很好地扩展,现在相当已创建的 200 多个表难以管理。我花了很多时间试图弄清楚如何解决这个问题,但是数据集包含异构值,因此不可能将它们组合到一个具有列定义模式的表中。
我已经探索了 EAV、XML 列的可能性,并最终尝试使用具有许多稀疏列的表,因为数据库在 SQL Server 2008 上运行。DBA 对我最近创建的稀疏列有一些问题对他们的备份脚本造成了一些破坏,所以我再次想知道是否没有更好的方法来做到这一点。我知道 EAV 不会带来不错的性能,而且我对 XML 数据类型的实验也表明性能很差,这可能要归功于某些表中的大量记录。
总结如下:
- 大约 200 个表,其中大部分有几列包含浮点数和小字符串
- 有些表的记录多达 15,000 条
- 表格架构不一致,因为列取决于原始实验数据中的样本数量。
- SQL Server 2008
我将在我正在开发的新版本中将这些数据中的大部分视为遗留数据,但我仍然需要能够显示和查询它——我宁愿不必通过动态指定来这样做我的存储过程中的表名,就像当前的多表方法一样。有什么建议吗?
【问题讨论】:
-
如果这主要是科学数据,大多数列是数字吗?另外,每个数据集的典型列数是多少,数据集中的最大列数是多少?
-
dba 遇到了什么问题?稀疏列不应该影响备份,除非它们正在执行表副本或其他操作。
-
大部分列都是浮点数,但也有一些短字符串。每个表的列数从 1 到 23 不等。它们的备份失败是因为稀疏列上的索引不可压缩。他们认为他们已经解决了这个问题,但现在由于其他一些他们认为服务包可以修复的原因而失败,但它是用于其他事情的生产服务器,因此避免停机会很好。
-
这似乎更像是您的 DBA 需要解决的问题。此外,浮点数非常难以预测...docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
标签: sql sql-server sql-server-2008