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
database
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:
- 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?
- How do I design my tables/schema so that it is flexible with respect to changing requirements?
- 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.
- 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