2012-07-23 42 views
3

有人可以在处理短时间高度瞬态的数据方面谈论'普遍实践'或一般“可接受的做法” - 但多年来一直存在历史存在......关于“历史”数据的数据设计和实践

以一个小型旅游公司 - 预订旅游为例。 旅客清单将高度流动,直到旅游.. 一旦旅游完成 - 数据在技术上已过时,但有用的报告或趋势...

与高音量 - '搜索'或'创造'一个旅游 - 数据库将变得厚实,只有很少会改变的数据。

是否具有类似结构的表格 - 将数据从一种状态“移动”到另一种状态(PRE/POST事件)......在数据仓库存储为“纯粹”的半扁平结构之前'报告

这是明智的,共同的还是正确的?有没有更好的方法来做到这一点......或是圆顶DBA会进来和去“跆拳道你在想什么”

+0

你在找什么是“数据仓库”。 – jva 2012-07-23 18:52:56

回答

1

标准将有某种标志来指示记录过时。有几种方法可以让你处理性能问题,如修剪和索引技术。这些可能还包括某种归档策略。您可能会从表中移出旧数据(多长时间和何时取决于性能要求),或者将某种批量插入到具有相同结构的历史记录表中(您如何实际实现这将取决于您的DBMS,但选择最多强大的方法),或者如果您的DBMS具有强大的分区系统,则可以使用某种排序或分区策略。如果需要历史数据的分析人员与运行操作系统的人员不同,您还可以考虑采用某种多数据库归档策略。

0

当然,这样的设计决定取决于其他因素。但总的来说,将数据从一个表移动到另一个表并不是一个好主意。

更好的选择是在您的记录上有效和结束日期。所以,如果有人报名参加巡回演唱会,那么他们的纪录就是以那个日期的潮流开始的。如果他们退出,那么这个人得到并结束日期。如果他们再次注册,他们会得到一个新的记录,并有一个新的效果日期。

这使您可以在过去的任何时候重建历史记录。

+0

是的,但是不要以db引擎必须在查询中处理的数据块为结束。让我们发疯,并说这是一家航空公司或一些这样的实体,每天有1000名乘客(记录)在1000条航班上......即使您过滤日期 - 是不是? 如果一个职员在x flt上查找x个人 - 并且您有两年的数据 - 其中大部分数据是不相关的 - 在数据库的db方面效率非常低 – jpmyob 2012-07-23 15:51:43

+0

您可以通过索引查询相关数据那就是O(logN)。 – jva 2012-07-23 18:49:33