背景
最近工作不怎么忙,就梳理了下营销系统。结合业务现状以及自己的思考,本篇对【适用范围数据】设计方案做了一个设想,还望大家提出观点和意见,相互交流学习。
痛点
先说目前的【适用范围数据】方案设计有哪些痛点。 目前的方案设计主打一个抽象,从模型到数据库表可以说是高度抽象。
一张适用范围表存储了所有适用范围数据,通过类型加以区分。在业务层没有具象化的模型与之对应,业务模型依然是【适用范围】,也就是说一眼是看不出适用范围表达的是什么。
个人认为,数据库表是抽象的没有问题,但业务模型也是抽象的,在可读性,可维护性上个人觉得不太友好。
新方案
针对痛点,产生了两种新的设计方案,如下图所示:
方案一
方案二
两个方案的主要差别在于存储层。个人观点是系统设计应当聚焦在业务模型上,重业务模型设计轻数据库设计,当然轻数据库设计并不是说数据库表不重要,只是相对来说而已。数据库的设计只要能够满足业务需求,系统性能需求即可。
首先说方案一,隔离的适用范围业务模型和数据库之间的关系,数据库表是抽象的。
优点: 是当增加新的类型数据时,也就是增加新的业务模型,以及一个与之相关的存储适配层即可,无需建表。
缺点: 缺点还是比较明显的,每种类型的数据增长速度不同,数据放在一起,对于数据检索性能的影响是全局性的,若涉及分库分表的话,可能还会有如何选择合适的分片键的问题,分库分表方案可能会比较复杂。
方案二的优缺点其实和方案一是反过来的。
总结
望请大佬各抒己见,相互交流学习。