Read an Excerpt
PREFACE:
Preface
The Informix object relational technology consists of the integration of the Informix dynamic system architecture (DSA) relational database management system (RDBMS) with the extensibility features acquired from the Illustra database. It first came out around January 1997 and has since been through heavy testing and functionality improvements.
Since Informix Dynamic Server.2000 (IDS.2000) is a superset of a relational database system, legacy systems using a relational database system can run without modification, preserving IT investment. This is a double-edged sword: On the one hand existing systems can continue to support the corporation while improvements can be implemented gradually to take advantage of the new functionality to increase applications performance. However, since IDS.2000 is a full-featured relational database system, it is easy to continue developing within the well-known context of relational database systems and their limitations.
IDS.2000 is an excellent relational database. Of course, if this technology is used to develop relational database solutions, we can only expect our systems to perform as well as any relational database solution�no more, no less. So the real challenge of this technology is for us to imagine better solutions to our business problems through more creative use of its object-relational features.
The main goal of this book is to show how to use the DataBlade API to exploit the object-relational features of IDS.2000. This way, you can augment the database system to better fit your business environment instead of compromising your design to fit the database. Another goal is to providepractical examples that stimulate a new way of thinking about better solutions to your business problems. The pay-off will be simpler applications, faster development, and increased performance. Furthermore, if the application is simpler, it should also reduce the effort required for maintenance.
Book Organization
This book approaches the subject on different fronts. It includes tutorial, "how to," and reference material. I�ve tried to organize it logically so that it first provides the information needed to understand the product as a whole and then delves into more technical details, beginning with the simpler features and building up to the most complex ones.
Chap. 1. IDS.2000 = Business Advantage: Chapter 1 puts this technology in perspective and gives an overview of its main features, along with examples that show practical use of these features. It also discusses the advantages of using this technology. This overview should help you figure out how to take advantage of object-relational technology in your environment.
Chap. 2. User-Defined Routines: User-defined routines implement your business rules and the support functions for your business types (user-defined types). This chapter describes how they are implemented and the context of their execution. This information is essential to understanding the rest of the book.
Chap. 3. SQL Statements: This reference material describes the syntax of the SQL statements needed to take advantage of the extensibility features. You may skip this chapter at first and come back to it when studying specific features.
Chap. 4. Handling Data Types: A big part of this technology is to add business rule processing to manipulate the database data. This means that a large part of the utilization involves calling a function at the SQL level. The function must receive and return any SQL types. This reference material describes how to receive and return any SQL types.
Chap. 5. Computational Functions: There are some issues that apply to any user-defined routines. These issues are presented within the context of computational functions that are simple user-defined routines intended to do simple processing by taking an argument and returning a computed result. This chapter is essential to understanding the rest of the book.
Chap. 6. User Defined Types: This chapter discusses mainly complex types and the execution of SQL statements within user-defined routines. It complements the information provided in Chaps. 4 and 5.
Chap. 7. Opaque Types: Opaque types are really user-defined types. They are covered in their own chapter because they are the heart of the type extensibility of IDS.2000. They require a set of support functions so that the database server can store, retrieve, and handle them.
Chap. 8. Iterator Functions: It is possible to write a function that returns a set of values instead of a single result. This chapter explains how to write such a function.
Chap. 9. The Fastpath Interface: A user-defined routine cannot always call another user-defined routine directly. Sometimes it must be done using a special API provided by the DataBlade API. This chapter discusses why and when this interface should be used.
Chap. 10. Smart Blobs and Multirepresentation: IDS.2000 provides new types of large objects for storing business types that cannot fit a table row. This chapter shows how to manipulate them and how to use them within opaque types.
Chap. 11. Aggregate Functions: An aggregate function takes values from a set of rows and returns a result. The AVG() SQL function is an aggregate function. This chapter shows how to extend the existing SQL aggregate functions to handle new data types and how to create totally new aggregate functions.
Chap. 12. Tracing and Debugging: The database server is a totally different development environment. This chapter gives some pointers on problems you may encounter and shows how to trace and debug your functions to solve the problems rapidly.
Appendix. Functions Reference: This Appendix describes all the Informix functions available to you when writing user-defined routines.
How to Approach Extensibility
IDS.2000 provides some very powerful features. You may find very quickly that features such as opaque types and user-defined aggregates are perfect for your business solution. In any case ask yourself what little extra functionality in the database would greatly simplify your application and significantly improve performance. In other words, what is the least effort needed for the biggest return? Thinking this way, you can get a fast return on your investment and gain some experience with the product before diving into larger, more complex projects. If you can quickly prove the value of this new technology, you will have more time to experiment and become familiar with how this technology works. Then you will really be ready for more complex solutions.
What�s in a Name? A Brief History
The Informix object-relational technology started from the Illustra database product. The first implementation based on the Informix dynamic server architecture was called Informix Universal Server (IUS). The name lasted until a decision was made to reflect the common base architecture of the Informix products. IUS was then renamed Informix Dynamic Server with Universal Data Option or Informix-UDO for short.
Informix had been working on merging the IDS 7.x code line with the UDO 9.x code line. It took a few years because both products were still evolving. In July 1999, Informix announced a new product, code name Centaur, that completed this task, rendering the IDS 7.x code line irrelevant. The decision was made to rename the product once again to reflect the fact that all IDS 7.x customers can safely use this new product, keep their current systems intact with all the benefits they currently enjoy, and also take advantage of the new functionality. The new product is now Informix Dynamic Server.2000, or IDS.2000 for short. It is the core database server for Informix Internet Foundation.2000 also announced in July 1999.