我正在领导一个项目,我们将记录指标数据。我想保留数据多年。但是,我还希望保持主表不会因为短期报告不需要长期趋势所需的数据而变得臃肿。
处理这种情况的最佳策略是什么?只需将旧数据存档到另一个表中?或者通过对数据本身进行一些整合来“卷起”(然后将其存储到另一个表中)?或完全不同的东西?
其他信息:我们正在使用SQL Server 2005。
答案 0 :(得分:4)
我们在工作中使用这两种方法,但略有不同,我们将所有销售数据保留在主表中30天,然后在晚上(部分夜间工作)将销售日累计成摘要(n数量)由于报告原因,今天出售的x产品ect)在一个单独的表中,超过30天的销售被存档到一个不同的数据库,然后每年一次(我们进入纳税年度)一个新的存档数据库被启动。不完全但是......
通过这种方式,我们可以快速获取摘要数据,保留所有当前的销售数据,并为详细的存档数据提供无限空间。我们确实尝试将它们全部保存在一个数据库中(在不同的表中),但数据库(interbase)的文件大小会增大到会拖累系统。我们唯一真正的问题是访问跨越多个数据库的详细数据,因为连接和断开连接很慢,并且分析必须在代码而不是sql中完成
答案 1 :(得分:4)
如果您使用的是SQL Server 2005,这可能是使用partitioned tables的理想选择。
答案 2 :(得分:2)
@Jason - 我不知道如何将数据保存在普通的旧文本文件中,这样您就可以轻松地对数据进行长期趋势分析。
@Jason - 我想我的观点是,如果商务人士需要对数据进行任何形式的临时分析(即趋势分析),那么将数据汇总或归档到文本文件实际上并不能解决任何问题。问题。当然,在许多语言中编写使用文本文件的代码很容易,但这个问题已经解决了。另外,我认为今天的RDBMS在设置和维护时都非常耐用。如果他们不是为什么你会在一个企业之上运营一个企业(更不用说将数据归档到它)?我只是没有看到归档到纯文本文件的重点,因为声称文本文件的持久性优于数据库。
答案 3 :(得分:2)
根据预算等限制,这听起来像是数据仓库应用程序的完美候选者。这通常会引入一个新服务器用作数据仓库。 SQL Server 2005支持大量此类活动,您可以进一步利用其他SQL Server服务(例如Analysis Services,Reporting Services)为用户提供额外的价值。 (见http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx)
答案 4 :(得分:1)
这些选项中的任何一个都很优秀,但它确实取决于问题域。对于诸如现金余额或统计数据之类的东西,我认为汇总记录并合并它们是最好的方法,然后您可以将汇总的记录移动到并行存档表中,以这样的方式键入它们以便您可以“展开”必要。这可以使您的主数据表保持干净和快速,但允许您保留额外的数据以供审计或其他任何内容。关键问题是,如何实施“汇总”流程。是自动,通过触发器或服务器端进程,还是通过应用程序级别的用户干预?