【问题标题】:What is the best strategy for retainment of large data sets?保留大型数据集的最佳策略是什么?
【发布时间】:2010-09-06 09:23:41
【问题描述】:

我正在领导一个项目,我们将记录指标数据。我想保留数据多年。但是,我还希望避免主表因数据而变得臃肿,这些数据虽然对于长期趋势是必要的,但对于短期报告来说却不是必需的。

处理这种情况的最佳策略是什么?只是将旧数据归档到另一个表?还是通过对数据本身进行一些整合来“汇总”(然后将其存储到不同的表中)?还是完全不同的东西?

附加信息:我们使用的是 SQL Server 2005。

【问题讨论】:

    标签: database-design dataset


    【解决方案1】:

    这些选项中的任何一个都非常好,但这实际上取决于问题域。对于现金余额或统计数据之类的东西,我认为汇总记录并合并它们是最好的方法,然后您可以将汇总的记录移动到并行存档表中,以这样一种方式键入它们,以便您可以“展开”如果必要的。这使您的主数据表保持干净和快速,但允许您保留额外的数据以进行审计或其他任何事情。关键问题是,您如何实施“汇总”流程。是自动通过触发器或服务器端进程,还是通过应用程序级别的用户干预?

    【讨论】:

      【解决方案2】:

      我们在工作中使用这两种方法,但略有不同,我们将所有销售数据保存在主表中 30 天,然后在晚上(夜间工作的一部分)将这些天的销售额汇总到汇总中(n 个x 产品今天销售等)出于报告原因在单独的表中,超过 30 天的销售被存档到不同的数据库中,然后每年一次(我们继续纳税年度)启动一个新的存档数据库。不完全完美,但是..

      通过这种方式,我们可以快速获取摘要数据,将所有当前销售数据保存在手边,并为详细的存档数据提供无限空间。我们确实尝试将它们全部保存在一个数据库中(在不同的表中),但是数据库的文件大小(interbase)会变得如此之大,以至于会拖累系统。

      我们唯一真正的问题是访问跨多个数据库的详细数据,因为连接和断开连接很慢,并且必须在代码而不是 sql 中进行分析

      【讨论】:

        【解决方案3】:

        如果您使用的是 SQL Server 2005,这可能是使用 partitioned tables 的不错选择。

        【讨论】:

          【解决方案4】:

          @Jason - 我看不出将数据保存在普通的旧文本文件中如何让您轻松地对数据进行长期趋势分析。

          @jason - 我猜我的观点是,如果需要在商界人士的数据上进行任何类型的ad-hoc分析(即趋势),则将数据汇总或将数据归入到文本文件中真正无法解决任何问题问题。当然,编写代码来消耗文本文件很容易以多种语言,但解决问题已经解决了。另外,我认为今天的 RDBMS 在正确设置和维护时都非常耐用。如果它们不是,您为什么要在一个基础上开展业务(更不用说将数据归档到其中了)?我只是不明白存档到纯文本文件的意义,因为声称文本文件的持久性优于数据库。

          【讨论】:

            【解决方案5】:

            根据预算等限制,这听起来像是数据仓库应用程序的完美候选者。这通常会引入一个新的服务器用作数据仓库。 SQL Server 2005 支持很多开箱即用的活动,此外,您还可以利用其他 SQL Server 服务(例如 Analysis Services、Reporting Services)为您的用户提供额外的价值。 (见http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-02-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-02-18
              • 2015-12-13
              • 2014-05-29
              相关资源
              最近更新 更多