zoukankan      html  css  js  c++  java
  • 持续交付8-数据管理

    数据管理

    解决什么问题

    企业中,数据是实际业务的核心是企业价值的体现.数据的管理也是非常重要的事情.实际数据的版本化管理可以有效的降低版本迭代风险.同时针对测试数据的管理,通过一些初始化数据来快速完成测试,可以有效的提高迭代效率.

    怎么做

    实际通过下面方式来进行数据版本管理:

    1. 数据库脚本化
    2. 增量式修改
    3. 数据库回滚和无停机发布
    4. 测试数据的管理
    5. 数据管理和部署流水线
    • 数据库脚本化

    数据库的初始化和所有的迁移都需要脚本化,并提交到版本控制中.同时数据库也应该版本化,可以和对应的应用版本相匹配.

    • 增量式修改.

    增量式修改在多版本环境中是必须的,如果要修改已存在的内容,就要评估下具体影响.持续交付还要求数据库可以自动化数据迁移.实现方式如下:

    1. 在数据库中创建版本号
    2. 对数据库修改时创建两个脚本,1个是升级脚本,一个降级脚本
    3. 创建配置项指定应用的版本

    实际升级时,通过应用版本就可以知道数据库版本,再找到对应的升级脚本执行即可;降级则执行相反操作的降级脚本即可.

    如果数据库降级删除数据会触发约束条件,则降级就会变得复杂.
    所以数据库增量式修改,能有效的保障升级和降级的正常执行.实现数据库的自动化迁移.

    数据库管理书籍:
    refactoring database
    recipes for continuous database integration

    • 数据库回滚

    增量式修改,虽然让数据库回滚更简单,但是它还涉及一些数据库难以回滚的情况.这时就要考虑重用原来版本,并进行数据补填.具体方式如下:

    1. 通过缓存事务记录回放来避免回滚时数据丢失问题.
    2. 记录UI事件或复制事务日志.
    • 无停机发布

    应用在数据库版本迭代时进行版本兼容处理,来支持持续迭代.

    • 测试数据管理

    测试性能
    测试独立性

    单元测试:

    单元测试不与真正的数据库交互,全部通过模拟数据来快速验证业务处理.

    1. 使用测试替身对象来模拟数据
    2. 使用模拟数据库数据

    管理测试与数据的耦合

    测试设计方式有三种:

    1. 独立性测试:每个测试数据只对该测试可见
    2. 适应性测试:每次运行时先检查环境,使用检查的数据进行测试
    3. 顺序性测试:按已知顺序,每个测试输入是前一个的输出

    实际三种方法都可行,但是后两种扩展性比较差.数据问题经常会影响测试.

    测试独立性:

    每个测试都是原子性操作:

    1. 最简单的方式通过事务操作,执行完即回滚当前操作,以保证数据库数据不被修改.
    2. 数据进行功能性隔离.专项专用.
  • 相关阅读:
    x64 平台开发 Mapxtreme 编译错误
    hdu 4305 Lightning
    Ural 1627 Join(生成树计数)
    poj 2104 Kth Number(可持久化线段树)
    ural 1651 Shortest Subchain
    hdu 4351 Digital root
    hdu 3221 Bruteforce Algorithm
    poj 2892 Tunnel Warfare (Splay Tree instead of Segment Tree)
    hdu 4031 Attack(BIT)
    LightOJ 1277 Looking for a Subsequence
  • 原文地址:https://www.cnblogs.com/chengmuyu/p/13281902.html
Copyright © 2011-2022 走看看