Control the Data, Not Just the Code

?

Control the Data, Not Just the Code

Chad LaVigne

SouRCE CodE ConTRol And ConTinuouS inTEgRATion are excellent tools for managing the application build and deployment process. Along with source code, schema and data changes are often a significant part of this pro- cess and thus warrant similar controls. If your build and deployment process includes a list of elaborate steps required for data updates, beware. These are the lists that always have you crossing your fingers. They look something like this:

1. Create a list of scripts that need to be run, in order.

2. E-mail scripts to special database person.

3. Database person copies the scripts to a location where they’re executed by a cron job.

4. Check script execution log and pray that all scripts ran successfully since you’re not exactly sure what will happen if you rerun them.

5. Run validation scripts and spot-check the data.

6. Regression test the application and see what blows up.

7. Write scripts to insert missing data and fix blow-ups.

8. Repeat.

OK, so that might be a slight exaggeration but it’s not that far off. Many a proj- ect requires this type of acrobatic workflow for successful database migration.

?

??For some reason the data portion of the migration plan seems to be easily overlooked during architecture planning. As a result, it can become a brittle, manual process that gets bolted on as an afterthought.

This complex web-work creates many opportunities for process breakdown. To make matters worse, bugs caused by schema and data changes don’t always get caught by unit tests as part of the nightly build report. They like to rear their ugly head in a loud, boisterous manner immediately after a build has been migrated. Database problems are usually tedious to reverse by hand and their solutions tend to be more difficult to validate. The value of a completely automated build process that is capable of restoring the database to a known state will never be more evident than when you’re using it to fix an extremely visible issue. If you don’t have the ability to drop the database and restore it to a state that is compatible with a specific build of the application, you are susceptible to the same type of problems you’d have if you couldn’t back out a code change quickly.

Database changes shouldn’t create a ripple in your build’s time-space contin- uum. You need to be able to build the entire application, including the data- base, as one unit. Make data and schema management a seamless part of your automated build and testing process early on and include an undo button; it will pay large dividends. At best it will save hours of painful, high-stress prob- lem solving after a late night blunder. At worst it will give your team the ability to confidently charge forward with refactoring of the data access layer.

时间: 2024-10-21 20:08:11

Control the Data, Not Just the Code的相关文章

关于keil单片机编程中的data,idata,xdata,pdata,code数据类型

从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述).与ANSI-C稍有不同,它只分SAMLL.COMPACT.LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果. 在51系

Oracle Applications Multiple Organizations Access Control for Custom Code

文档 ID 420787.1 White Paper Oracle Applications Multiple Organizations Access Control for Custom Code Checked for relevance on 12-JAN-2011 See Change Record This document discusses how to update the customization code that is affected by the access co

ARM MAP文件解析(1)-Code (inc. data)、RO Data、RW Data、ZI Data、Debug

From:http://www.keil.com/support/man/docs/armlink/armlink_pge1362065942464.htm 5.3 Example of using the --info linker option This is an example of the output generated by the --info option To display the component sizes when linking enter: armlink --

Method, apparatus, and system for speculative abort control mechanisms

An apparatus and method is described herein for providing robust speculative code section abort control mechanisms. Hardware is able to track speculative code region abort events, conditions, and/or scenarios, such as an explicit abort instruction, a

[Angular2 Form] Create custom form component using Control Value Accessor

//switch-control component import { Component } from '@angular/core'; import { ControlValueAccessor, NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators} from '@angular/forms'; @Component({ selector: 'switch-control', templateUrl: './switch-control.componen

Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization

A code sequence made up multiple instructions and specifying an offset from a base address is identified in an object file. The offset from the base address corresponds to an offset location in a memory configured for storing an address of a variable

二维码详解(QR Code)

作者:王子旭链接:https://zhuanlan.zhihu.com/p/21463650来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 2016.7.5 更新:长文多图代码预警,电脑食用效果更佳. 完整版代码已上传 GitHub,后续一些有的没的的代码更新也都在GitHub上(https://github.com/LaytonW/qrcode) 给结尾的几个被自动识别的QR码做了防自动识别..顺便也检测一下我们这不怎么高的容错率(7%).要是再被知乎自动识别了

Software development skills for data scientists

Software development skills for data scientists Data scientists often come from diverse backgrounds and frequently don't have much, if any, in the way of formal training in computer science or software development. That being said, most data scientis

Overview of Form Control Types [AX 2012]

Overview of Form Control Types [AX 2012] Other Versions 0 out of 1 rated this helpful - Rate this topic Updated: October 11, 2011 Applies To: Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Micro