数据库设计之冗余字段

表中增加冗余字段是很常见的设计技巧,常见的冗余的场景如下:

报表

主要是做大数据量的报表,如果不添加冗余的字段,做报表的时候需要关联几张大表,由于存在多个表的读取,不仅IO多,而且更关键的是无法进行连续的IO操作这对于机械磁盘来说性能会差很多。

这种通过冗余字段做报表的方式,确定也很明显,场景固定,如果业务变化后报表中没有需要的字段,这个大报表就起不到作用了。

不同的持久化时间需求

一般来说系统中的告警数据量不大,而且需要保存很长时间,比如几年,而系统中的数据可能量很大,可能保存几个月就需要进行冷备份甚至删除掉。这个时候,在告警中冗余保存下产生告警时候对应的数据就很有必要了,否则如果只保留个数据的记录ID,可能过一段时间数据被删除了,或者冷备份,就不好关联到了。

关联信息可能动态变化

还是告警的例子,假设一个场景,告警都是由设备产生的,而设备的名字是在变化的,用户希望看到告警产生的时候设备的名字,如果在告警记录中,只存储设备的记录的id,关联来看,看到的可能是设备的最新的名字,而不是告警当时的名字。

Table of Contents