大数据集保留的最佳策略是什么?

9
我正在领导一个项目,我们将记录指标数据。我希望保留这些数据多年。然而,我也想避免主表因为那些虽然对长期趋势分析有必要但是不需要短期报告的数据而变得臃肿。
那么,处理这种情况的最佳策略是什么?仅仅将旧数据存档到另一个表中?还是通过某种数据本身的汇总(然后将其存储到不同的表中)来“滚动整理”?或者完全采用其他方法?
附加信息:我们使用的是 SQL Server 2005。
5个回答

4
我们在工作中使用这两种方法,但略有不同。我们将所有销售数据保存在主表中30天,然后在晚上(夜间任务的一部分)将当天的销售汇总为摘要(例如今天销售了n个x产品等),并存储到另一个表中以便于报告。超过30天的销售数据则被归档到不同的数据库中,然后每年(按税年计算)启动一个新的归档数据库。虽然不完美,但是这样可以快速获取摘要数据,保留所有当前销售数据,并拥有无限的详细存档数据空间。我们曾尝试将所有数据保存在一个数据库中(不同的表中),但是数据库(Interbase)的文件大小会变得非常大,导致系统速度变慢。
我们唯一真正的问题是访问涵盖多个数据库的详细数据,因为连接和断开连接很慢,而且必须在代码中进行分析,而不是SQL。

4
如果您正在使用SQL Server 2005,则可以考虑使用分区表

2

@Jason - 我不知道将数据存储在普通文本文件中如何能够让你轻松地对数据进行长期趋势分析。

@Jason - 我的观点是,如果需要由业务人员对数据进行任何形式的即席分析(即趋势分析),将数据滚动起来或归档到文本文件中并不能解决任何问题。当然,在许多语言中编写消耗文本文件的代码很容易,但这个问题已经得到解决。此外,我认为今天的关系型数据库一旦设置和维护正确,就都非常耐用。如果它们不耐用,为什么还要在其上运营业务(更不用说将数据归档到其中了)?我只是看不懂将数据归档到普通文本文件中的意义,因为声称文本文件的耐久性优于数据库的说法是站不住脚的。


2
根据预算等限制条件,这似乎是数据仓库应用的理想候选。通常会引入一个新服务器作为数据仓库使用。SQL Server 2005支持很多这方面的操作,此外您还可以利用其他SQL Server服务(如分析服务、报告服务)为用户提供更多价值。(请参阅http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx

1

这两个选项都很好,但实际上取决于问题域。对于现金余额或统计数据等事物,我认为滚动记录并将它们合并是最好的方法,然后您可以将滚动记录移动到一个平行存档表中,并以一种使您可以在必要时“展开”的方式进行键入。这样可以保持主数据表的清洁和快速,但允许您保留用于审计或其他目的的额外数据。关键问题是,如何实施“滚动”过程。可以通过触发器或服务器端进程自动执行,也可以通过应用程序级别的用户干预来执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接