如何在SQL Server上处理季节性数据库值的存档

如何在SQL Server上处理季节性数据库值的存档,sql,sql-server,database,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Database,Sql Server 2008,Sql Server 2008 R2,我使用的是SQL Server 2008 R2,目前正在开发一个数据库结构,其中包含一些产品的季节值 季节性我的意思是,在特定日期之后,这些值在客户使用方面将不再有用。但是,这些值将由内部人员用于统计结果 在销售网站上,我们将为产品搜索添加一个功能,我的目标之一是尽可能优化此搜索。但是,数据库表中的行越多,搜索速度就会越慢。因此,我考虑存档未使用的值。< /P> 我可以自动处理SQL Server作业的自动存档。没问题。但我不确定该如何归档这些价值观 我能想到的最好办法是在同一个数据库中创建另一

我使用的是
SQL Server 2008 R2
,目前正在开发一个数据库结构,其中包含一些产品的季节值

季节性
我的意思是,在特定日期之后,这些值在客户使用方面将不再有用。但是,这些值将由内部人员用于统计结果


在销售网站上,我们将为产品搜索添加一个功能,我的目标之一是尽可能优化此搜索。但是,数据库表中的行越多,搜索速度就会越慢。因此,我考虑存档未使用的值。< /P> 我可以自动处理SQL Server作业的自动存档。没问题。但我不确定该如何归档这些价值观

我能想到的最好办法是在同一个数据库中创建另一个具有相同列的表,并将它们放在那里

示例:

我的主表名是
ProductPrices
,其中有一个主键 为此数据库定义的。然后,我创建了另一个名为
产品许可证存档
。我为此表创建了一个主键字段 以及与
ProductPrices
表相同的列,除了
ProdutPrices
主键值。我认为这样做没有用 将该值存档(我认为正确吗?

内部使用时,我考虑把两个表值放在一起。 使用

联合
(这是正确的方法吗?

这个数据库是要长期使用的,它应该以最佳的结构设计。我不确定从长远来看我是否错过了什么


任何建议都值得赞赏。

< P>我首先考虑两个选项之一:

  • 用于将单个表分隔为当前工作集和存档数据。
    不需要使用归档表

  • 将validForm、ValidTo添加到列以实现一个
    然后为ValidTo添加索引视图,使其为NULL,以获取当前数据集

如果所有数据都必须“在线”在一个数据库中,我就不会有两个单独的表

这导致了第三种选择:一个包含所有数据的完全独立的数据库。只有“当前”数据处于活动状态。(正如@Mike_Walsh的回答所解释的)


索引视图选项是最简单的,并且使用标准版(带有No展开提示)<

< P>我会考虑最初的两个选项

  • 用于将单个表分隔为当前工作集和存档数据。
    不需要使用归档表

  • 将validForm、ValidTo添加到列以实现一个
    然后为ValidTo添加索引视图,使其为NULL,以获取当前数据集

如果所有数据都必须“在线”在一个数据库中,我就不会有两个单独的表

这导致了第三种选择:一个包含所有数据的完全独立的数据库。只有“当前”数据处于活动状态。(正如@Mike_Walsh的回答所解释的)


索引视图选项是最简单的,可以与标准版(带有NOEXPAND提示)一起使用。

gbn提供了一些很好的方法。不过,我认为“正确”的长期答案是第三种选择

听起来您有两个数据的业务用例-

1.)实时在线事务处理(OLTP)。这是POS交易、库存管理、quick“今天的收据如何,库存如何,我们是否有任何运营问题?”之类的问题,并保持业务的日常运行。在这里,您需要执行操作所需的数据,并且需要针对更新/插入等进行优化的数据库

2.)分析型问题/报告。这是看月环比数字,年环比数字,运行平均数。这些都是你要问的问题,因为这是一个战略性的问题,看看你的历史的全貌——你会想看看去年圣诞节季节性商品与今年的情况如何,甚至可能会将这些数字与5年前同期的季节性商品进行比较。在这里,您需要一个比OLTP包含更多数据的数据库。您希望丢弃尽可能少的历史记录,并且希望数据库在很大程度上针对报告和回答问题进行优化。可能更非规范化。您希望能够看到特定时间的事物,因此gbn提到的2类SCD在这里很有用

听起来你需要创建一个报告数据库。你可以称之为数据仓库,但这个术语现在让人们感到害怕。不必害怕,如果你计划得当,你不必花6年时间和600万美元来赚钱;-)


这肯定是一个长期的答案,但在几年内,你会很高兴你花时间创造了一个。这是一本理解维度建模概念、思考数据仓库及其术语的好书。

gbn提出了一些很好的方法。不过,我认为“正确”的长期答案是第三种选择

听起来您有两个数据的业务用例-

1.)实时在线事务处理(OLTP)。这是POS交易、库存管理、quick“今天的收据如何,库存如何,我们是否有任何运营问题?”之类的问题,并保持业务的日常运行。在这里,您需要执行操作所需的数据,并且需要针对更新/插入等进行优化的数据库

2.)分析型问题/报告。这是看月环比数字,年环比数字,运行平均数。这些都是你要问的问题,因为这是一个战略性的问题,看看你的历史的全貌——你会想看看去年圣诞节季节性商品与今年的情况如何,甚至可能会将这些数字与5年前同期的季节性商品进行比较。这是你想要的一个数据库