Retail Monster

Tuesday, 3 November 2009

Parameters in Application Development

This is my first blog post in months and been spurred on by my good friend JRJ blogging here about his latest consultancy jolly to Seattle for PASS09.

I've been getting my fingers dirty for the last few months in hardcore application development. A bit of a blast from the past for me as I've mostly been management for the 5/6 years, but you'll be pleased to know, I've still got it when it comes to application development.

This bueaty of a project is pretty hardcore. A complex statistical database app crunching hourly data for a retailer (no surprises there). Given my background in repeatable application deployment, the application is massively configurable by parameters. However where we've ended up is very different from where we originally started, and has caused me to re-consider my whole approach to defining parameters for applications.

To cut the story short, we originally had parameters defined at higher level, ie system wide parameters. But in almost all instances have now dropped the granularity of the parameters, to match the grain of the fact. This means we have a lot of parameters! and you don't want to be typing them in by hand (or adjust them manually), so along with the increase in granularity, comes along a little sql engine that we use to set and adjust the parameters. If you use SQL to set the parameters, then there's little difference in overhead between a single row where parameter x = 12, or 25000 rows where the value of x = 12 ie

Update Parameter
set x = 12;

You could consider this an overhead, but if you build it in from the start, you never know any different and you build the system to work this way. Then if you need to start setting seperate values, you have the functionality and can go do it. I'm sure this is less effort than changing your mind during the build, or worse, after go -live.

I'm so sure in fact, that this is now my new default approach to designing parameters into applications, and I'll be testing it out in anger as I've now taken on a another apps dev project where I can again flex my system designing muscle.

0 Comments:

Post a Comment

Links to this post:

Create a Link

<< Home