版本化数据的表结构

时间:2010-11-08 21:42:46

标签: database data-structures versioning

我有一个存储手机数据的表格,它有大约50列..........应该在一年内平均插入3000万部手机........但是,有必要存储这些手机的历史记录,例如,如果我想在给定日期更改手机中的字段,后者我需要在任何给定时间知道具有此手机的值。 在我看来,有一个历史和一个主表,在主要的,我有最新的细胞价值,并在历史上所有的变化。现在这是一个重复的数据,因为如果你只更改一个字段,我会在历史表中插入所有值,甚至是那些未更改的值,在主要的最后一条记录中,所以历史表会大大增加。 如何设置不存储太多可能无法更改的信息并在任何给定时间从手机检索数据?

2 个答案:

答案 0 :(得分:2)

如果您希望能够轻松查询历史数据,那么我会复制。通过触发器复制到历史表或者系统是否具有停机时间创建具有ID和带时间戳的唯一约束的表,并且在该停机时间期间使用调度的批处理将旧数据移出。例如,这些较旧的数据将存在于其他地方,可以被压缩,和/或从主磁盘移动到磁带备份。

另一方面,正如您在问题中建议的那样,您可以单独对每个字段进行版本控制 - 只有那些更改的字段 - 这将需要更少的存储空间,但是在给定时间点重建数据然后及时我更可能不会使用SQL,而是依赖于编程语言。

答案 1 :(得分:0)

根据您的描述,您似乎需要在每次更新/插入之前查询历史数据,以检查之前是否使用过手机详细信息。在这种情况下,你不能只是将历史数据移动到其他地方,就像之前的sugestested一样,你需要让它们永远保持活力。 获得历史表的查询获得一些合理性能的一种可能方法就是在问题上投入更多硬件 - 将存档表中的数据划分为尽可能多的物理驱动器。