美文网首页
数据库架构

数据库架构

作者: ArcherZang | 来源:发表于2019-12-30 15:06 被阅读0次

    数据库升级,升级信息来源:xml、json之类都可以。
    升级之后会应用为bean没有升级而某些功能不能使用。
    跨版本,可以使用当前版本覆盖,就像下图;
    V001版本直接使用V003直接覆盖。
    V002版本使用updateStep升级。


    捕获.PNG

    升级逻辑:
    当前版本逻辑: 即本地没有当前版本,视为新安装或者APP内部版本等视各家情况决定。如果保存的版本文件被删除,也视为新安装处理。
    新安装,视
    最新版本逻辑:一般从网络获取,或者从xml获取,如果服务器返回空或者当前版本来表示最新版本,视各家服务器决定。
    覆盖升级逻辑: 先自己删除所有数据库,然后调用UpdateManager.executeUpdateDb(UpdateManager.MODEL_CREATE),未实现
    1.createVersion负责新建表如果数据库不存在也会新建数据库

    1. updateStep负责将原表修改成备份表,然后插入数据到新表,删除备份表---
    2. updateStep的新建表语句要到createVersion中拿
      放在createVersion好处:如果是新app就不需要到updateStep中拿建表语句
    3. 分步升级,不同版本CreateTableSQL不支持放在同一个版本中(即最新版包含当前版本支持的表的所有建表SQL),考虑到不同版本,相同业务表的名称不一样;
      如果需要找不到的SQL去上一版本或者最新版本找,自行修改
      5.只要有一次出错,全部回滚,不存在容错升级,即USER库V1版、LOGIN库V2版
      UpdateManager负责升级
      DaoFactory 新建表对应的DAO层,并缓存DAO层
      DaoSplitFactory 分库后新建表对应的DAO层,是按用户分库,工厂模式根据DAO类型创建不同类型的DAO并缓存DAO层;根据数据类型,确定获取哪个数据库;用到了高级泛型。
      BaseDao 负责表增删改差,以及新建
      UserDao 负责用户表增删改差,以及新建
      bean类 通过运行时注解,修改表名或者字段名
      UpdateManager 负责通过XML新建表(executeUpdateDb(UpdateManager.MODEL_CREATE))或者升级(executeUpdateDb(UpdateManager.MODEL_UPGRADE)),两者都要执行才是正常升级流程(executeUpdateDb(UpdateManager.MODEL_CREATE_UPGRADE))
      UpdateSourceXML 读取XML
      DbPath 存放Db的路径和rootdb名字,已经升级xml路径
      DbControl 负责新建数据库和缓存数据库,通过数据库全路径,相对路径和相对路径无后缀名获取数据库

    跨版本:1. 从updateStep逐一升级,2.直接createVersion覆盖;当然跨大版本会出现推荐用户直接升级APP

    XML:

    1. updateStep的新建表语句要到createVersion.
    2. updateStep的versionFrom支持V1,V2,V3,且不能为空
    3. updateStep的versionTo只支持一个版本,且不能为空
    4. 不同版本CreateTableSQL不要一起放入最新版本(除非多个版本使用一套类似:6),需要按版本提供升级所需CreateTableSQL
    5. createVersion最新版本需要最新版本所有表的CreateTableSQL,保证覆盖升级或者初次使用APP时通过xml建表
    6. createVersion version支持多版本使用同一套CreateTableSQL V1,V2,V3
    7. createTable必须有if not exists

    关于:安装升级和过程升级(APP不升级只升级数据库)?
    (1)都是APP启动时检测是否需要升级,然后进入升级页面或者后台静默升级
    (2)过程升级有可能字段显示不了因为bean类未修改
    (3)防用户误删除,只能将版本写到数据库文件名或者表中。
    过程升级,需要有代码版本的存在,因为代码版本和数据库版本不一致
    (4)需要搭配热修才能做到无缝升级
    具体代码地址https://github.com/zchw904/DbUpgradeSplit

    相关文章

      网友评论

          本文标题:数据库架构

          本文链接:https://www.haomeiwen.com/subject/nzpmnctx.html