What should be the role of the DBA in the application development process?
This is a somewhat loaded question. Application folks generally don’t want to turn over too much control of their applications to the DBA. And many DBAs don’t want to get too ingrained in writing code. But the two functions need to be joined at the hip in order to produce efficient database applications. And this can be done without stepping on the toes of either the DBA or the application developer.
The long and the short of it is that DBAs must understand and participate in application design, not necessarily the actual coding though. Application design includes database concerns such as interfacing SQL with traditional programming languages and the type of SQL to use. But every aspect of program coding will affect the usability and effectiveness of the application. Furthermore, each application program must be designed to ensure the integrity of the data it modifies.
Designing a proper database application system is a complex and time-consuming task and the choices made during that process will impact the usefulness of the final delivered application. An improperly designed and coded application may need to be redesigned and re-coded from scratch if it is inefficient, ineffective, or not easy to use. To properly design an application that relies on databases for persistent data storage, the system designer must match the application development languages and tools to the physical database design and the functionality of the DBMS being used. The first thing to be mastered, though, must be a sound understanding of SQL. And, unfortunately, many application folks just do not have enough SQL knowledge to formulate the most efficient query in every situation. SQL is changing and growing, and the DBA will usually know what is possible and what SQL formulations perform best when. The application developer and the DBA need to work as a team to make sure that this knowledge gets built into each and every database application.
Of course, there are other issues, such as the interface to the programming language, drivers, procedures for compilation, and so on. But let’s just summarize by saying the DBA needs to be involved in application design to ensure efficient database usage – and therefore efficient applications.
And be sure to involve the DBAs in all of the design reviews for the code, too. I wrote a blog entry here on the importance of design reviews in March 2011.
What do you think? How involved should the DBA be in the application development process?