以前谈过重用的粒度问题,今天也谈谈冗余的粒度。
1. 数据库字段的冗余
好处1:合适字段的冗余,对于提供数据库的查询速度会有很大提升,因为可以不用于其他表join去获取数据
好处2:在垂直分库的情况下,丧失了join数据表的能力,为了不让业务受伤害,在表上加上一些冗余,同样可以满足业务的需求
坏处:需要在多个表中维护数据的一致性
2. 业务中多个表的冗余
一个最简单的道理,对于大型互联网,比如一次交易,数据会放入不同的业务系统中。比如:买家的交易信息、卖家的交易信息、支付订单的信息、收费的信息、账务的信息、会计的信息。
好处:其实这就是数据的冗余,因为对于SOA化的系统来说,每个业务系统都需要处理自己的数据。
坏处:同样需要保持数据的一致性,而且由于数据可能分散于不同的数据库中,还需要两阶段事务或者补偿事务去保持数据的一致性。
3. 数据库备份的冗余
好处:对于大型互联网公司,需要保持高可用,就必须保持一份数据的备份,以防master数据库down机
坏处:备份数据库和主数据库之间的数据,可能会有短时间间隔的数据没有同步。
4.应用服务器的冗余
好处:与负载均衡结合,破除单点问题,使我们的服务是高可用、可伸缩的
坏处:无非是多个服务器的运维问题,代价很低。
总结:冗余的原因有2点
1:提高业务的处理速度
2:在不能join的情况下,保持业务不受伤害
3:防止单点,高可用、可伸缩