My previous post focused on the contribution of the Database Administrator (DBA) to application performance. Even so, application performance depends upon many factors, some of which are beyond the control of even the most dedicated DBA. So if you were thinking of relying on your DBA to fix everything, this week’s performance principle provides is intended as a wake-up call:
Expecting a DBA to guarantee the performance of any application that uses the database is like asking a piano tuner to guarantee a flawless performance, regardless of the pianist.
What is Database Design?
In our industry, most terminology is imprecisely defined. There are no universally accepted boundaries between “architecture,” “design,” “development,” and “tuning”. In the case of databases, and the applications that use them, ensuring acceptable performance involves many design-related activities:
- Performance planning and analysis: Identifying how the users’ most critical processing requirements relate to application and database design decisions.
- Application design: Designing applications that will use the database(s) efficiently, including the best way to code data manipulation statements like SQL.
- Application partitioning: Distributing the processing components of applications for optimal performance given an existing geographical distribution of data.
- Application load testing: Testing and verifying the performance of complex SQL code and processing logic.
- Application profiling: Monitoring and analyzing application behavior to determine how a particular program uses database resources, or how a particular data manipulation request interacts with a particular database or set of databases
- Database design: Selecting among the logical and physical database structures offered by a particular database system, to meet application performance goals.
- Data distribution: Determining the optimal scheme for distributing data among database systems situated at various locations in a distributed enterprise.
- Database tuning: Adjusting the many software options provided by a database vendor to customize the behavior of a particular database system to best suit a particular mix of databases and application programs.
- Environment tuning: Adjusting the hardware or software environment within which the applications and database systems operate.
Who Does Database Design?
People’s titles, roles, and responsibilities vary widely, but very few people in our industry are actually given the title of designer. Where databases are concerned, a designer may be called an architect, an application developer, a performance analyst, a database specialist, or a DBA.
Sometimes a single individual carries out many of the activities listed above. But most enterprises implementing information systems have people in roles that correspond to analysts, developers, and DBAs:
- Application analysts and software developers certainly have a lot to say about how information flows among the various enterprise databases. They may even design some new databases.
- For small databases, it is reasonable to free database users from central MIS schedule and resource limitations by giving them reporting tools that can directly manipulate departmental application data where it resides. They may even design new “private” databases for themselves or their co-workers.
But, once a collection of information is identified as a corporate asset, to be shared by several applications, or queried by users from more than one department, then its ongoing care and management must become a community (or “system”) responsibility. And to ensure that very large databases can be used without running into performance problems, then someone with specialized database design and tuning skills must be involved. These types of design and tuning decisions are usually made by DBAs, not application developers.
Performance Takes a Team Effort
This does not mean that management can expect DBA’s to make all the right decisions concerning database design, tuning, and performance, while working in a vacuum. Decisions affecting the performance of applications that use database resources simply can’t be made without knowing how those applications need to use the data. And that’s an aspect of application design where the key variables are always going to be controlled by application designers and developers, not DBA’s.
So ultimately, application performance must become the joint responsibility of all concerned. Expecting a DBA alone to guarantee the performance of any application that uses the database is like expecting a piano tuner to guarantee a flawless performance, regardless of the pianist.
