已经上线的游戏,玩家的数据会已经存在了数据库中。随着后续功能的迭代,不得不修改一些之前实体的字段定义。那么老玩家的存库中的数据就变成了脏数据,如何做数据刷新呢?假设A实体上挂着10个同类型的B子实体。删除,或者重命名了B类型实体的几个字段,那么要如何批量操作数据库中的数据呢。请教做过的大佬赐教下优雅的解决方案。拜谢了。
laoyao 我瞎想一个:给角色一个字段,叫数据库结构版本号。每次角色上线的时候判断这个版本号,对比当前系统最新版。然后每个版本变化,都有一个对应的处理逻辑。比如版本18-19,角色的 BagComponent 需要做一个处理,将 BagComponent.A 的值 赋给 BagComponent.A2。
laoyao 我猜有一种方法是新写个迁移程序连到Mongodb,遍历所有的人把旧字段赋值到新字段上。
hualin 要是变了多个版本,18-21,其中19版本新加的字段又给删了🤣。是不是得写一堆垃圾代码。
mark
IxbxAx 杜绝垃圾判断代码,现在我纠结的是有没有批量操作方法能修改的子实体身上的字段。直接批量改父实体的字段已经实现了。
蹲个最佳解决方案😀
这是个很重要的问题,即使是开发阶段也会经常遇到,开发时可以直接删库,上线了真不知道咋办
做冗余字段,废弃的就废弃了呗
做版本变化处理啊,数据库有版本号,要升级则跑一段修正代码