场景 :
系统中有一张会员表 (user) , 包含三个属性 id,name,pwd , 业务跑起来了
然后新需求来了, 要求在用户属性中增加性别 (grade) 和 年龄 (age)
实现 :
最常规的做法是 我直接在数据库表中增加两个字段 (grade和age) , 然后在模型层(model)中增加字段 , 然后一切如常 .
如果过两个星期 , 需求要求改变为不要年龄(age)字段了, 要生日(birthday) 信息 , 此时 , 又要重复上面的做法 , 去修改代码 , 修改查询条件 , 才能返回给应用使用 .
疑问 :
如何设计一个灵活的系统 , 可以自由的扩展的数据处理系统 .
目前没有满意答案 , 准备重启一个问题 , 写一下遇到的实际案例来寻求帮助
你的问题太大了,“如何设计一个灵活的系统 , 可以自由的扩展的数据处理系统”。这是软件工程研究的话题了。就你提出的问题而言我觉得:
属性 | 值 | 父表Id |
---|---|---|
姓名 | 张三 | 1 |
生日 | 2020年4月20日 | 1 |
或者考虑NoSQL存储
问题范围有点大 , 这个是我提问方式的问题 ,
控制客户不改需求那是不可能的 , 就只能提高自己系统的灵活度了 , 本质是想要实现一个可随意扩展字段的系统 (并且已经实现,但是效率以及扩展性不理想[无法分库分表以及执行复杂操作],普通使用还是没问题的) , 所以想用第三方例如 ef , suger 等第三方库 , 并且建立在映射关系上的这种机制
如果你想要free scheme,可以考虑mongodb
现在的业务还是需要用关系型数据库的
ef codefirst+migration
关注模型就完事了,也不用考虑这么多啊
有关于这方面的最佳实践么? 我看了下 , 貌似是自动更新模型的 ?
@kaolasz: 是啊,自己更新模型,你去搜索一下这方面的文章,ef自己检查模型的更新,自己生成脚本去更新数据库,但是你得自己试试,没记错的话 ,一般建议是不用ef自动更新,要手动更新,不过手动更新的代码都通过迁移ef自己生成的
将可变属性,放在一个Map中。系统启动时从配置文件读取有哪些属性,同时提供一个接口来动态增加或删除属性。
– 。淑女范erり 4年前@。淑女范erり: 有这方面的最佳实践可以学习一下么
– kaolasz 4年前