Agile Database Design

The Agile Database Design course takes your team into the previous netherworld of issues previously relegated to the DBA group. Agile tend to shun the old fashioned Big Design Up Front that DBAs have cherished over the years when it comes to database design. We now understand that development efficiency requires increased amounts of collaborative team effort, with a database design that evolves, rather than one which is designed once at the beginning, with barriers placed in the way of a better understanding of requirements and the refactorings that are engendered because of that. But iterative database design requires new skills and tools to be done in a fashion that lessens the operational risks on production versions of the system, not to mention the mental health risks on the development team. This course teaches these skills in a mixture of classroom lectures and related lab exercises.
Students will use Java, Eclipse, JUnit, Ant, and LiquiBase during the course.

 

Topics Included
• Thinking Agile
• Iterative and Incremental Database Design
• Table Migration Strategies
• Data Migration Strategies
• Deployment in an Agile environment

 

Course Details
Prerequisites: Agile Foundations, Java programming background and some database theory, exposure to relational database
Audience: Developers, DBAs, Architects
Duration: 3 Days
Lab to Lecture Ratio: 60/40

Course Outline
Day 1
Lectures
• Why BDUF is the prevailing methodology used by 20th century DBAs
• Why Agile is the way to go to meet today's development challenges
• What the Agile team needs to understand to build fully production ready databases for their applications
• How the Agile process gets modified to incorporate database issues, specifically schema iterations and production migrations
• The tools landscape and the dearth of tools available (but how this is changing)
• Introduction to LiquiBase
• The issues related to team development of a database schema
• Solving the issues by a BDUF (bad!)
• Solving the issues by doing database diffs (not so great)
• Solving the issues by using schema versioning (not too bad)
• Solving the issues by using LiquiBase (best)
Labs
• The Image Gallery application
• Use of LiquiBase to hold tables behind Hibernate
• Local application testing
• Enhance the Image Gallery by targeting MySQL instead of HSQLDB
• Use LiquiBase for the new database target
• Deploy the application locally
• Deploy the application on a "production" machine manually, using LiquiBase artifacts


Day 2
Lectures
• LiquiBase's DBDoc - the database equivalent of JavaDoc!
• Support for relentless refactoring changes into the database, as well as into the codeforma
• Migration issues related to database schema changes
• Migration issues related to data scrubbing issues
• How data scrubbing issues are solved with database migration programs and how they are coded
Labs
• Enhance the Image Gallery to extract EXIF data from the images placed into the database
• Enhance the Image Gallery to allow for arbitrary tagging of images
• Use LiquiBase to enable us to keep the database current with the codebase
• Deploy the application on a "production" machine manually, using LiquiBase artifacts
• Enhance the Image Gallery to now require EXIF information
• Code a database migration program to go with our new release
• Deploy the application on a "production" machine, and deploy the database migration program, too!


 

Day 3
Lectures
• Database refactoring categories in depth: structural, data quality, referential integrity, and architectural
• LiquiBase support for the various refactoring categories
• Refactor the Image Gallery application's database in various ways
• Code a database migration program to go with our new release
• Deploy the application on a "production" machine, as well as the database migration program
Labs
• Test Driven Development With Agile Tendencies - Iteration 2 - Adding Functionality and Fixing Abominations.
• Add deployment targets to the Image Gallery application build
• Deploy the application on a "production" machine with automation support