关于数据冗余的一点思考

来源:互联网 发布:双11网络推广策划案 编辑:程序博客网 时间:2024/05/16 10:05

此处我暂且把对数据冗余的思考限定于数据库中的数据和代码中的数据,数据备份不算作冗余。

以前写代码从来不会考虑到数据冗余,是我的第一个头儿年看了我的代码后提醒了我,在此表示感谢,今天立文记录下头儿给我的忠告和自己的一些体会,以免他日陷入数据冗余的深渊苦苦挣扎。

数据冗余主要来源有两个。一是在多处保存实际上是相同的数据,比如,表A存储了书S的书名、价格、作者、页码、版次等基本属性,表B存储的是书S在每个城市的销量,本来表B中只要存一个外键指引S在表A中的位置即可,有些猿可能就为了方便,把书S的书名、价格等在表B又存了一遍,觉得这样在时候就不用读表A了);二是有些数据其实是既有数据的计算结果,比如在一个数据结构中存储了开机时间和关机时间,同时又专门用一个变量存储机器使用时间;

数据冗余一个显而易见的缺点就是浪费空间,无论是内存还是外存,一个地方存了数据干嘛还要在另一个地方存?或才明明可以通过已有数据的简单计算得到的为何还要另存一份?

由于在多处保存着实际上是相同的数据,我们必须时刻保存各处数据的一致性,改了一处的数据还必须修改另一处相同的数据,一旦忘了维护某些数据的一致性,代码就会产生非预期的结果,此时如果我们没有注意到数据的一致性问题,那就等着的进入无止境的调试吧。所以冗余会带给我们多余的工作量,让我们在维护数据一致性上耗费时间,而且还极容易陷入数据不一致的危险中。

不可否认有时候适当的数据冗余可以给我们带来很大的便捷性,比如某结果值需要计算大量的数据才能得到,而用来计算的原始数据又几乎不会变更即计算结果几乎不会变更,此时将结果值存储下来,代码在以后的运行过程中便能节省部分时间和空间。

0 0
原创粉丝点击