1. 关联与冗余
数据库第三范式种约定,数据没有传递依赖性,但是在互联网应用中,会存在非常多冗余的情况。冗余的目的主要有几个:
性能
将所有需要的数据冗余到一起可以提高性能。
解耦
一般来说,互联网行业一般都希望一个应用的逻辑尽可能简单,依赖方尽可能的少。冗余数据可以将多个数据源的数据整合到一个数据源,那么应用本身就无需关心这部分逻辑了。
允许变更
如果系统A使用了B的数据之后,又有自己独立变更的需要,那么冗余就必不可少了。
其实从某种意义上,我觉得2比1更重要。而3则是根据需要来决定。从优先级来说是3>2>1。
冗余的坏处有几个:
有同步的成本
如果冗余的是一个会发生更新的数据,那么数据同步的成本就不得不考虑了。
增加整体复杂度
其实这个是基于1的基础上的。如果只是冗余了数据,后续无需同步,其实系统会相对简单。但是如果有同步的需求,那么可能会有很多个同步的逻辑甚至系统,最后会让整个系统变得复杂和不可控。
其实第1条的同步机制总归是可以实现的,但是第2条的复杂度才是最需要考虑的地方。