Informix Universal Server

Introduction

INFORMIX-Universal Server is an object-relational database management system that allows developers to extend the range of available data types, add routines that operate on those data types, and access methods to ensure good performance.

Traditional relational database systems restrict the user to character string and numeric data types. Some systems support the storage of binary large objects (blobs) but cannot manipulate the contents of these objects or perform searches based upon their content. INFORMIX- Universal Server allows the developer to define new types of data and build routines to allow user access to the data via SQL statements.

Architecture

In INFORMIX-Universal Server, information about data types, functions, and access methods is stored in catalog tables, rather than being hard-coded in the server. This means that all types, functions, and access methods, when registered, are treated in the same way whether they are user-defined or built-in objects provided with the server.

New Data Types

New data types provided by INFORMIX-Universal Server include row types, collections, and user-defined data types that can be distinct or opaque, as well as the new built-in types lvarchar, boolean, blob, and clob.

Row types provide the capability of grouping multiple columns together for ease of access and processing.
For example, an address row type could include elements for street address, apartment number, city, state, and zip code. If the whole address is required, a simple SQL statement such as

select name, address from employee;

will retrieve all the fields. If only one element is required, dot notation is used, as in

select name, address from employee where address.state = `CA';

Collections allow for the definition of repeating elements within one column, addressing a common "normalization" dilemma. Using a combination of collections and row types, you could store the various phone numbers for a customer contact in one row by creating a table like this:

create table customer_contact (name char(20),
                               phone set (row (phonetype varchar(10),
                                               phoneno char(10))
                                          not null)
                               );

Developers can define new data types to suit their particular needs. These can either be:

  • Distinct data types allow the developer to differentiate between different types of business data, even when the underlying storage mechanism is the same. INFORMIX-Universal Server supports strong typing, which means that data of different types cannot inadvertently be compared or operated upon without the appropriate conversion being performed. For example, by defining types for different currencies (dollar, franc, yen, and so on), you can ensure that a column defined as type dollar cannot be added to a column defined as franc without some conversion (or casting) being performed.
  • Opaque types, also known as abstract data types, are generally used to represent complex internal structures for storing rich data, such as text, audio, or video objects. Developers with domain expertise in some particular area can construct opaque types to hold data and define functions, operators, and access methods to operate on them. Opaque types support the object-oriented notion of private data, which means that users can access the contents only via associated functions.

Inheritance

User-Defined Routines

Access Methods and Indices

Smart Large Objects

DataBlade Modules

Configuration Changes

User-Defined Virtual Processor Classes

Sbspaces

Extspaces

System Catalog Changes

Systems Monitoring Interface

Application Programming Interfaces

DataBlade Application Programming Interface

New Object-Oriented Application Programming Interfaces

User-Defined Routines

Data Types

Built-In Data Types

Complex Data Types

Inheritance

User-Defined Data Types

Large Object Support

Access Methods

B-Tree Indexes

R-Tree Indexes

Functional Indexes

DataBlade Indices

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.