持續交付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. 數據進行功能性隔離.專項專用.
相關文章
相關標籤/搜索