如何正确解决软件产品的“向前”及“向后”兼容问题?
2023-04-26 来源:飞速影视
一个软件产品的客户端版本升级之后,数据库的结构变化了,用户存储在老数据库中的数据会被丢弃吗?为了避免这种情况发生,一般在升级应用客户端的同时,我们需要把旧版本的数据库导入新数据库中。这是一种常见的向后兼容操作。先区分两个特别容易被混淆的概念:向后兼容和向前兼容。
![如何正确解决软件产品的“向前”及“向后”兼容问题?](http://fs.qqfile.top/re/aHR0cHM6Ly9waWNzNS5iYWlkdS5jb20vZmVlZC9iODM4OWI1MDRmYzJkNTYyOTE5NmYxMDEzOGVlZWZlOTc0YzY2YzQxLmpwZWdAZl9hdXRvP3Rva2VuPTY3OThhY2Q0YzFlY2ViMDkwZjNjZGQxMWRlODg1Nzhj0)
向后兼容指的是对已经发出去的老版本兼容,向前兼容指的是对还没有做好的版本兼容。显然,向未来兼容难上加难,理论上也是做不到的,因为我们永远不知道未来要做什么功能或需求。但向后兼容是一定能够做到的,程序员都可以面对老版本分析出当前的状态和兼容的办法。
那我们就介绍一下向后兼容数据库的处理方法。
![如何正确解决软件产品的“向前”及“向后”兼容问题?](/images/loading.gif)
版本升级大概面临几种情况:数据库增加字段、删除字段、修改字段等,其实都可以抽象为一类问题——如何在版本升级时重新整理数据库。版本升级时,免不了要做导入和导出,以新增字段举例,大概流程如下:
(1)建立新数据表;(2)查询旧表数据,并插入新表中。(3)启用新数据表。(4)删除旧数据表。
过程比较简单,因为版本升级,可能面临着程序首次启动会比较耗时的问题,这就涉及如何提升导入和导出的效率。同时,这种耗时过程需要在产品上设计交互来遮挡,跟用户数据丢失比较起来,这种产品交互上的设计是很廉价和值得付出的。例如,有时我们更新了手机QQ,首次启动的时候会有升级数据库的loading界面。
![如何正确解决软件产品的“向前”及“向后”兼容问题?](/images/loading.gif)
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号