2016-04-21 41 views
0

我工作的程序存储有关整个大学的网络连接的信息,并且我被要求创建一个报告,显示这些连接随着时间的变化。我正在考虑添加另一个表,其中包含当前的连接信息和添加数据的日期,因此当报告运行时,它只是抓取该日期的数据,但我担心在一对夫妇之后报告可能会变慢几个月,因为它会增加每月约50,000行。有一个更好的方法吗?我们使用Microsoft SQL Server。在SQL中保存大型月度数据备份的最佳方式是什么?

+0

50K行/月是*不是*大数据。在数据仓库方面,它几乎是静态的。数据仓库通常使用数百GB的数据。 –

+0

我意识到,我只是添加标签以获得更广泛的回复 –

回答

0

这取决于你拿着事实的历史数据的原因

如果原因是:

  • 因采访报道需要,那么你可以通过 保持在同一个表中增加了两个日期列FromDateToDate这将删除 需要加入活动和历史数据表格后面。
  • 仅供参考,将其放在不同的 表中会有意义,因为它可能会降低您的 活动表上索引的性能。

我还是要强调渐变维度(SCD)2型的方法,通过保持记录的多个版本跟踪历史数据和使用给EndDate或标志来识别活动记录。此方法允许跟踪任何数量的历史记录,因为每次插入新记录时,旧的记录都会填入EndDate

第1步:重新加载事实UPDATEIsActive = 0备案成为历史保存和填充EndDate为当前日期。

merge ActiveTable as T 
using DataToBeLoaded as D 
    on T.ID = D.ID 
     and 
     T.isactive = 1 -- Current active entry 
    when matched then 
    update set T.IsActive = 0, 
       T.EndDate = GETDATE(); 

步骤2:插入与IsActive = 1FromDate作为当前日期的最新数据到ActiveTable。

免责声明:以下使用SCD 2的方法可能会使您的数据仓库变得巨大。不过,我不相信这会影响你的场景的性能。

相关问题