If you design databases as part of your job, you’re not alone. Recently, the SQL Server Magazine ran an “insta-poll”, where they asked “Do you consider database design to be part of your job function?” The results from the 102 responses:
– Yes, I’m primarily a database designer–1%
– Yes, I consider myself to be a database designer/developer–52%
– Yes, I consider myself to be a database designer/BI pro–8%
– Yes, I consider myself to be a database designer/DBA–28%
– No, I don’t consider database design to be part of my job–11%
Now, despite the fact that with any opt-in poll there’s a high probability of skew due to differential interest in the topic at hand, and the count of persons polled was really very low (some would say statistically insignificant), 89% of respondents claim that database design is part of their job function. That’s impressive.
So, if you’re a DBA or a database developer and you’re expected to “do” design as part of your job, do you know what the downside of inadequate design could be? Let me count the ways…. lost performance for the database group and lost revenue for the company are just a starting point.
If you check the stats in the list, Dev is the component with the highest level of design overlap, but not necessarily because it’s creative. Developers in the pre-database world built their own file structures to hold the input data needed by the programs they wrote, and to store the output data. That mentality has (gawd help us) been carried forward into today.
There are a lot of managers who just don’t get (or who don’t want to get, because it’ll cost more) that developers may not have the skill set to create efficient, effective, and long-lasting (extensible) database schemas. It’s easier (and cheaper in the short run) to just whip the Dev donkey to get the job done. Developers want to do it right and, left to their own devices, they want to do a good job — and they will. But if you have a supervisor or manager who’s not invested in anything except making the numbers on the bottom line, you, Mr. or Ms. Developer, are not even going to get a chance to do it right.
In addition to the Developer, any SQL Server DBA who’s been around for any length of time will be responsible for some database design… thus the 28% in their category. And any DBA who values performance will monitor and sign off on schema changes to the databases under his/her control.
Bad or inadequate design is arguably the #1 reason for poor performance, not only with SQL Server, but with any DBMS platform. But once the design is put into production, rectifying it may not be possible, so the DBA now has to tinker with index management, I/O throughput acceleration, adjusting and balancing memory resources, query optimization, etc.
That’s my opinion. What’s yours?