数据库升级问题总计(一)
1:概念篇
在iOS技术应用开发中,数据库我们常用:比如FMDB、coredata、最新还出了一个数据存储的 技术具体叫什么名字我后期加上。现在忘了。 顺便再这里问大家一句:这个FMDB和coredata有什么区别?我个人觉得出了苹果提供给的coredata的api、自生的多线程不安全外,其他的还真没什么区别 这里请大家正确理解数据库升级和升级sqllite。 正常情况第一版发布数据库版本就已经构建。但我们在第二版发布的时候,有可能够重新修改数据表配置。 这里我们就要对数据库升级当然也可以说是升级sqllite。各位看官可千万别傻了吧唧的以为是把sqlite自己的的版本更新啊。你可别傻了。
2:设计升级数据库需要考虑的问题
在iOS开发中我们要升级数据库就要考虑以下几个问题
- 数据库中表的更改
- 数据不能清空,就是还要保留原有的数据内容
- 保证数据库中对表的查询不出问题
- 更新迭代问题
- 更新迭代问题
- 隔N代升级问题
- 升级数据库思路
在这里先用文字描述一下。
在升级数据库的时候程序只能在新版本app首次执行的时候执行,其他情况不执行。 于是乎我们开始吧!!! 思路如下:
- 创建数据库版本���号
- 创建数据库执行日志记录类
- 创建数据库版本号对应的数据库日志记录
- 写算法快速找到当前版本号到最新版本号数据库更新日志,并且执行对数据库的修改
- 跟新完成
问题可能会很多啊
简单说一个问题吧
假设洲洲哥的app已经发布了500个版本。 A用户用的app就是第一版的App(不要考虑不升级不能用的问题),此时用户突然升级了, 怎么解决从第一版到最新版的数据库升级的问题呢?
解决办法如下:
- 获取当前数据库版本号 currentV;
- 以当前版本号为起点,循环终点为当前app最新数据库版本号
- 循环执行数据库记录日志
注意这里要处理在根据数据库日志文件修改数据库结构时的等待时间。最简单我们可以用菊花装来提示用户这个等待时间。 等处理完毕以后处理后续程序 也有可能会出现快速修改数据库失败现象