How do I develop database-utilizing application in an agile/test-driven-development way?

Posted by user39019 on Programmers See other posts from Programmers or by user39019
Published on 2012-10-08T01:03:15Z Indexed on 2012/10/08 3:47 UTC
Read the original article Hit count: 171

Filed under:

I want to add databases (traditional client/server RDBMS's like Mysql/Postgresql as opposed to NoSQL, or embedded databases) to my toolbox as a developer. I've been using SQLite for simpler projects with only 1 client, but now I want to do more complicated things (ie, db-backed web development). I usually like following agile and/or test-driven-development principles. I generally code in Perl or Python. Questions:

  1. How do I test my code such that each run of the test suite starts with a 'pristine' state? Do I run a separate instance of the database server every test? Do I use a temporary database?
  2. How do I design my tables/schema so that it is flexible with respect to changing requirements?
  3. Do I start with an ORM for my language? Or do I stick to manually coding SQL? One thing I don't find appealing is having to change more than one thing (say, the CREATE TABLE statement and associated crud statements) for one change, b/c that's error prone. On the other hand, I expect ORM's to be a low slower and harder to debug than raw SQL.
  4. What is the general strategy for migrating data between one version of the program and a newer one? Do I carefully write ALTER TABLE statements between each version, or do I dump the data and import fresh in the new version?

© Programmers or respective owner

Related posts about database