方案设计一定要有前瞻性,要从方方面面考虑,比如性能、扩展性等,这个是开发人员必备的一个素质,但是这次方案设计却是关于存储容量的考虑。
需求背景
商品的信息比如价格、优惠券字段是通根据淘宝的api来更新,这个更新是个定时任务,一小时更新一次,由于偶尔会有商品的信息不符合要求,为了更好的排查类似这样的问题,一个月前产品提了一个需求,对所有的抓取信息添加抓取日志,并且可以在商品列表页定位到这个日志。
设计的方案
我设计的方案是只记录变更的抓取日志,没有变更的抓取日志就是上一次抓取的日志信息,这样就可以只入库变更的记录,没有变更的就可以不入库。
比如下图:
8:00整抓取的信息为AAA,9:00、10:00、11:00抓取到的和8:00抓取的值一样,9:00、10:00、11:00就不入库,日志展示时按照8:00的内容展示。
但是,领导不同意,说我怎么知道中间的变更是否正确呢,万一变更,你没有记录怎么办,虽然我的理由是变更了没有记录就是代码的问题,根本不是这个设计的问题,不能通过记录所有的日志来保证代码没有问题,应该使用其他方式保证代码问题,A就是A,B就是B,不能混为一谈。
但是胳膊拗不过大腿,领导说怎么办,就怎么办吧,把所有的抓取信息都入库,不管有没有变更,然后上线。
一个月之后
一个月之后,DBA开始找麻烦了,你们这个表记录的啥,怎么才一个月就上百个G,你们当磁盘是白菜呀,赶紧解决。
怎么解决这个问题,找了几个资深开发来讨论,最终还是使用了我的方案,终于扬眉吐气了一把,当然还是很低调的,只是心里暗暗爽而已。
总结
设计方案要从各个方面,方案的可行性、扩展性、并发性、资源占用量等等,都考虑清楚了,才能选择一个合适的方案。