• 持续交付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. 数据进行功能性隔离.专项专用.
  • 相关阅读:
    在 ASP.NET 中实现会话状态的基础
    STL 备忘录
    ASP.NET开发环境的详细配置
    COFF 文件的格式
    mbstowcs and MultiByteToWideChar
    苦心人天不负
    CString GetBuffer() and ReleaseBuffer()
    c语言的函数指针
    如何架设流媒体服务器(2)
    再谈从vc6迁移到vs2005
  • 原文地址:https://www.cnblogs.com/chengmuyu/p/13281902.html
Copyright © 2020-2023  润新知