0

A) 是否可以进行祖父-父-子归档?例如,我们希望始终预先计算以下内容,而不预先计算其他内容:

  • 上周的每日总计
  • 前 5-6 周的每周总计
  • 以前所有月份的每月总计

请注意,我们希望例如 2 个月前的一天的每日总数。我们希望删除每日总数。

索引视图是否足以满足此目的?我们希望预先计算和存储所有字段。

B) 我们希望有一些特性,比如 StackExchanges(通常是 Wikis)版本控制。有没有办法在生产环境中以某种方式归档旧版本,并使新版本的东西更容易获得?我们一直在研究分区,但它似乎无法处理如此复杂的场景(我们不希望 X 日期之前的所有帖子都被分区,而不是我们需要所有比最新版本更旧的版本)

在这些问题上的最佳做法是什么?

4

1 回答 1

1

答:您正在描述具有不同保留期/粒度的时间序列数据的存储,SQL Server 本身不以任何形式提供的功能。您当然可以相当轻松地自己构建此策略,幸运的是,您在开源项目中有一些很好的示例可供指导:

  1. RRD Tool - 时间序列数据库和图形库。
  2. Graphite - 受 RRD Tool 启发,由

B:这么笼统的说法很难说,但也许你可以在你的桌子上维护一个版本列,其中 0 总是反映最新版本。每次提升新版本时,您都会通过增加此值来降级所有其他版本。随着版本变老而增加版本允许您在确定性值(版本 = 0)上创建过滤索引,从而获得当前版本非常高效。
然后,您可以根据之前的版本数而不是日期进行清除。只是delete yourTable where Version > 5。分区方案也可以使用这种方法工作。

于 2012-08-08T01:42:10.503 回答