Taking Advantage of Database Extensibility
Relational databases are dead: Most major vendors now claim to have an object-relational database system (ORDBMS). Of course, relational databases will be around for a long time and will continue to provide the expected services and performance. Business problems are becoming more complex and the amount of information that must be processed keeps increasing. Application designers must find better ways to solve the business problems within a more aggressive schedule. This increasing pressure has forced the software industry to find new approaches to software development.
It is interesting to see that most developers continue to use object-relational databases as relational database systems. This sheds some light on the major challenge of ORDBMSs: They are supersets of relational systems. This means that everything we used to do before still works in ORDBMS. People automatically apply the relational limitations to ORDBMSs.
If you continue to solve business problems using a relational approach, you can only hope for a relational-level performance. Because this is a lowest common denominator, it does not give you a strategic business advantage. To win in business, you must use all the advantages you can get.
This chapter addresses this issue. It introduces the ORDBMS features and shows new approaches that can yield major benefits. These benefits can be in implementation simplifications that speed up time to market and reduce maintenance costs. They can also be in the form of significant performance improvement.
The software industry has always worked on finding ways to make its products flexible. This flexibility adds value to the users by providing a way to tailor the software product so it better fits a particular business environment. It only made sense that it would eventually reach database servers. Here are some examples of software extensibility:
User exits. The ability to add user code to software products has been available in mainframe software for a long time. The software designer includes a few points in the code where a specific subroutine is called. By default, this subroutine simply returns. The software user can decide to replace this default behavior with custom code that will answer some business needs such as authentication or custom operations when writing to and reading from disks.
Device drivers. Operating systems include a way to add new device support. These device drivers come from either the operating system vendor or third-party providers. Device drivers can add support for new hardware or add some software capabilities such as new types of file systems.
Web server. When Web servers first came out, they were designed to return the content of the file identified in the query. Shortly after, the common gateway interface (CGI) was added to allow for application support. Finally, application programming interfaces (APIs) were added to allow for custom code in the Web server.
Application server. Application servers were created to further improve the capabilities of integrating custom applications in a Web environment. It continues to evolve into a standard execution environment using the Java Enterprise Java Beans environment.
These few examples demonstrate that extensibility has been used to provide more flexibility in customizing software environments. This results in more efficient business solutions, shorter time to market, and added value to the software offering.