码迷,mamicode.com
首页 > 其他好文 > 详细

持续交付4-数据管理

时间:2020-07-11 00:18:40      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:可见   指定   修改   耦合   运行   约束   使用   两种   操作   

数据管理

解决什么问题

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

怎么做

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

  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. 数据进行功能性隔离.专项专用.

持续交付4-数据管理

标签:可见   指定   修改   耦合   运行   约束   使用   两种   操作   

原文地址:https://www.cnblogs.com/chengmuyu/p/13281902.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!