Forum Moderators: open
I assume I need provide the following information to a database programmer:
Beyond the above list I really don't know what basic or essential information I should have available to make the database programmer's job easier.
Is there information, common to the creation of most databases, that a database programmer needs to start the process? What is common?
For website development purposes are most/many database programmers able to not only craft the backend database but also the user interface? SQL + ASP.Net? PHP + SQL?
What information should I assemble before seeking the assistance of someone to develop a database driven website? Field names, queries, what?
Are there "frequently overlooked issues", that non-dbprogrammers fail to consider, when they first seek to "set up a database driven site"? (My non-expert way of describing what I have in mind.)
Forgive the multiple questions or several versions of the same. I really know little about what I'm asking for when it comes to asking a programmer to develop a database for me. ;(
So, I ask: How do I make myself a resource, not a hindrance, to the db developer?
Have all my questions already been answered or all the issues already addressed here: [webmasterworld.com...]
You say:
"This system is primarily driven by commercial transactions. It needs to handle an average load of 20 transactions per minute, and may peak to ten times that volume. The users are expecting instantaneous confirmation of transactions, so response time is a consideration."
The database guy hears:
"The usage pattern is biased toward INSERTs. INSERT performance under load will be a critical performance metric."
You say:
"This system is mainly for content management. A team of six authors will add articles on a relatively infrequent basis using a set of screens built for the purpose. Catalog pages and articles will be built out of the database dynamically."
The database guy hears:
"Usage biased toward SELECT statements. INSERT will be comparatively rare and not performance-critical since it's not public-facing."
You say:
"We import between ten and twenty thousand customer records each night from a different system. That system finishes its batch job between midnight and oh two hundred most nights. Users expect the system to be up by oh seven hundred. Once a quarter we update all 1.2 million customer records with a different batch feed. We can run that job over a weekend, but we have to lock users out of seeing their balances until it's done."
The database guy hears:
"Batch loading performance is normally important but not critical, and may be a problem for the quarterly loads. This has specific index implications for the tables holding the relevant data."
You say:
"We need to keep a five year history of all transactions for regulatory reasons. We aren't allowed to aggregate those. The users expect to be able to query aginst history with reasonable performance, but it isn't something they do daily."
Database guy hears:
"At least one table is going to grow absurdly large. Without careful attention to the history queries, performance is headed for the dumpster. Backups and restores will take forever."
...and so on. The main thing is that you need to be able to describe patterns of usage, and service level expectations. The database individual should be recommending specifics based on those requirements. Anyone who's been at this a while will have fallen into a lot of traps and be eager to avoid them in the future.