“历史”数据的数据设计与实践

时间:2012-07-23 15:25:02

标签: database database-design

在处理短时间内非常短暂的数据时,有人会说'普通做法'或一般的“可接受的做法” - 但必须有多年的历史存在......

比如一家小型旅游公司 - 预订旅行团。 乘客舱单将非常流畅,直到旅行结束。 一旦旅行完成 - 数据在技术上已经过时,但对报告或趋势有用......

使用高音量 - 游览的“搜索”或“创建” - 数据库将变得更加强大,数据只会很少变化。

具有相似结构的表是否常见 - 将数据从一个状态“移动”到另一个状态(PRE / POST事件)...就像在将数据存储到“纯”的半平面结构之前的临时报告

这是可取的,常见的还是正确的?有没有更好的方法来做到这一点......或者圆顶DBA会进来并且去“WTF你在想什么”

2 个答案:

答案 0 :(得分:1)

标准是有某种标志来表示记录过时。有几种方法可以让您很好地处理性能问题,例如修剪和索引技术。这些可能还包括某种归档策略。您可能会从表中移动旧数据(频率和时间将取决于性能要求),或者将某种批量插入到具有相同结构的历史记录表中(实际实现方式将取决于您的DBMS但是选择最多如果您的DBMS具有健壮的分区系统,那么使用某种排序或分区策略可以提供更好的方法。如果需要历史数据的分析师与运行操作系统的人员不同,您也可以考虑某种多数据库归档策略。

答案 1 :(得分:0)

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

更好的选择是在记录上设置有效日期和结束日期。所以,如果有人报名参加巡回演出,那么他们的唱片会以该日期的结果开始。如果他们辍学,那么那个人就会结束约会。如果他们再次注册,他们会获得一个新的记录,并有一个新的生效日期。

这允许您在过去的任何时间点重建历史记录。