16

Click here to load reader

Informix Dynamic Server - Salle-URLusers.salleurl.edu/.../databases/Informix_Dynamic_Server.pdf · Informix® Dynamic Server™ Version 7.2x For Unix and Microsoft Windows NT Informix

  • Upload
    vothu

  • View
    213

  • Download
    1

Embed Size (px)

Citation preview

  • Informix Dynamic ServerV e r s i o n 7 . 2 x F o r U n i x a n d M i c r o s o f t W i n d o w s N T

    Informix Dynamic Server is the industryleading parallel-everywhere database thatdelivers the performance, scalability, andextensibility for meeting all informationchallenges facing companies today. It isideal for databases of any size, fromsmall development databases to largedata warehouses. It is capable ofsupporting thousands of concurrent users,centrally or distributed across multiplesites. Regardless of your processingrequirements, traditional on-line transaction processing (OLTP), decision support, packaged applications,Web/content management, etc., InformixDynamic Server is the most effectivedatabase solution available for addressingall your information needs, delivering thecompetitive advantage you require tosucceed in business.

    As your business evolves to demandmore complex processingaccomodatinglarge-scale data warehouses, analyticaldata marts, sophisticated Web sites, contentand knowledge management, and innov-ative OLTP environmentsInformixoffers a number of options that can beadded to Informix Dynamic Server.

    These options include:

    Advance Decision Support Option,which adds the ability to performmore complex decision support opera-tions such as bitmap indexes;

    Extended Parallel Option, whichprovides the ability to run on clusterand MPP hardware; and

    Universal Data Option, which addsextensibility, SQL3, and support forDataBlade modules.

    These configuration options extendthe functionality of Informix DynamicServer, enabling it to address the evolvingneeds of todays complex, dynamic businessenvironment.

    Informix Dynamic Server is Informixs powerful, multithreaded database server designed to deliver breakthrough

    database scalability, manageability, and performancewhile exploiting the capabilities of uniprocessor,

    symmetric multiprocessor (SMP), SMP clusters, and massively parallel processing (MPP) architectures.

    Informix Dynamic Servers core technology is based on the industry leading Dynamic Scalable Architecture

    (DSA), which provides the most advanced parallel database architecture available for empowering todays

    distributed enterprisefrom the desktop to departments to the data center. DSA is designed explicitly to help

    you manage increasingly larger and more complex databases while substantially improving overall system

    performance and scalability.

    I n f o r m i x

    CPU 1 CPU 2 CPU 3 CPU n

    DB Bu f f e r Ca che Sha red Da ta

    Sha red Memor y

    V i r t ua lP ro ce s s o r s

    Figure 1: Informix Dynamic Server consists of a configurable pool of database server processes,called virtual processors, that can respond to any clients request.

  • 2

    hardware. The architecture uses adynamically configurable pool of data-base server processes (called virtualprocessors) and multiple on-linethreads to service multiple concurrentclient requests in parallelwhilerequiring very little overhead.

    As a result, Informix DynamicServer allows the number of concurrentusers to grow significantly while main-taining both high performance levels andreducing costs. The underlying architec-ture sustains consistent throughput byutilizing all available processors within thesystem and ensures linear scalability asmore system resources are added.

    Reduced Operating System Overhead

    Informix Dynamic Server minimizesthe unnecessary use of operating systemresources by requiring fewer databaseprocesses to support large numbers ofconcurrent users, and by using databaseserver threads rather than database serverprocesses to service client requests.Informix Dynamic Servers multithreadedalgorithms intelligently schedule contextswitches (a database server thread canmove from one virtual processor toanother) and locksmaking InformixDynamic Server more efficient forprocessing database requests than non-multithreaded database servers.

    Informix Dynamic Server Advantages

    Key advantages of Informix DynamicServer include: maximum performance and

    scalability through a superior multithreaded parallel processingarchitecture;

    reduced operating system overheadthrough bypassing operatingsystems limits;

    local table partitioning for superiorparallel I/O (input/output) opera-tions and high-availability databaseadministration;

    parallel SQL functionality increasesperformance and lets all databaseoperations execute in parallel, therebyeliminating potential bottlenecks;

    high database availability forsupporting a wide range of business-critical applications onopen systems platforms;

    dynamic, distributed on-line systemadministration for monitoring tasksand distributing workloads; and

    full RDBMS functionality across all hardware architectures (unipro-cessor, symmetric multiprocessing,and cluster systems) and databasemodels (relational and object rela-tional) enables seamless migrationof applications, data, and skills.

    Maximum Performance and Scalability

    Informix Dynamic Server is based on Informixs Dynamic ScalableArchitecture (DSA), the only trueparallel database architecture availableon open systems today. DSA is builtfrom the ground up to provide coreinternal parallelism, enabling all majordatabase operations, such as I/O,complex queries, index builds, logrecovery, and backups and restores, toexecute in parallel across all availablesystem resources. DSA also providesthe unique ability to intelligently opti-mize performance and fully exploit theinherent processing power of your

    Local Table Partitioning

    Informix Dynamic Servers partitioning(also called fragmentation) capabilitiesallow tables to be intelligently distributedacross multiple disks, greatly improvingprocessing performance. Intelligent parti-tioning facilitates parallel I/O operationsby offering greater flexibility for datalayout schemes, while also improvingsystem manageability and high avail-ability. Because of the growing size ofdatabases, local table partitioning at thedatabase level is critical, enhancing themanageability of very large databases(VLDBs)even those ranging from onehundred-plus gigabytes to terabytes in size.

    Parallel SQL Functionality

    Since DSA was first introduced inDecember 1993, Informix has incremen-tally added functionality to meet todaysever increasing business requirements.Today, users can perform all databaseoperations in parallel, whether it iswithin an SMP node, or across multipleloosely-coupled SMP or MPP nodes.This full functionality ensures scalabilityfor all database operations and enablesthe implementation of very large data-bases on open systems for both datawarehousing and OLTP applications.

    High Availability

    To respond to the increasing need forhigher availability, Informix DynamicServer offers a multitude of features to support round-the-clock databaseprocessing. These features include on-lineadministrative utilities for dynamic tuning,backup and recovery, and table reorgani-zation; and functionality that promotesfault resilience such as enterprise replica-tion; cluster and data failover, and soft-ware mirroring. Together, these featuresminimize planned downtime by allowingadministrators to perform database main-tenance operations on-line and reduceunplanned downtime by working aroundany faults that may occur, delivering ahighly available database environmentfor all types of mission- and business-critical processing.

    DSA

    TPS

    Users

    NonDSA

    Figure 2: Informix Dynamic Server is scalable,and maintains system throughput as users areadded to the system

  • 3

    Dynamic, On-Line Administration Tools

    Informix Dynamic Server offers a suite of mainframe-caliber administration/management tools that are optimized forperformance, availability, and ease-of-use.To ensure regular administrative tasks areexecuted in the fastest time possible, manyutilities have been parallelized to maxi-mize performance. Informix also offers acomplete set of on-line utilities to maxi-mize availability. And throughINFORMIX-Enterprise CommandCenter, administrators are provided withthe flexibility to manage multiple remotedatabases from a single, centralizedconsole, hence significantly reducing theamount of work associated with managingdatabases in a distributed environment.

    Seamless Migration

    Informix Dynamic Server allows cus-tomers to migrate their database acrosscomputing environments (uniprocessors,SMP, clusters, and MPP) and acrossdatabase models (relational to object-relational). As businesses grow to adoptmore advanced hardware architectures,customers are assured that data, applica-tions, and skills developed in one hard-ware environment can easily be transferredto a different hardware environment.Similarly, as requirements for complex databegin to drive customers toward a object-relational database model using theInformix Universal Data Option,customers can be assured that invest-ments in applications and user skills are fully leveraged.

    Informix is unique in its support of application transparency, which isachieved through isolating parallelism at the database server level. The serverunderstands how the data is distributedand the amount of processing resourcesthat are available to complete a query. It then automatically determines whetherthe SQL statement can be parallelizedand, if so, the degree of parallelism. Appli-cations do not need to be tailored to thespecific hardware platform, or the databasemodel they will run on. Therefore, asusers outgrow their existing environments,they can easily transition to a differentenvironment without worrying aboutrecoding their applications.

    How Informix Dynamic Server Works

    Informix Dynamic Servers core archi-tecture was designed from the groundup to provide built-in multithreadingand parallel processing capabilities.Multithreading is achieved throughmanaging user requests in the form oflight-weight mechanisms, called threads,which are scheduled and processed via apool of database processes (called virtualprocessors). Parallel processing is achievedthrough dividing large user tasks intosubtasks, thus enabling processing to bedistributed across all available resources.Together, multithreading and parallelprocessing ensure the most efficient useof all system resources, delivering thescalability and performance needed forall types of database processing.

    Multithreading

    Within the database server, InformixDynamic Server employs a configurablepool of database server processes calledvirtual processors to schedule andmanage user requests. User requests arerepresented by light-weight mechanismscalled threads, which are a singlesequential flow of control that representsa discrete task within a database serverprocess. Unlike other database productsthat manage user requests at the operatingsystem process level, virtual processorsmanage active threads at the databaselevel in the form of multithreading.

    Virtual processors are designed withbuilt-in intelligence to efficiently coordi-nate among multiple concurrent threads.Threads are spawned, queued, and servicedby the first available virtual processor,ensuring efficient hardware utilizationwith no bottlenecks. A thread scheduleris able to take advantage of in-depthknowledge of database objects andalgorithms, so it can provide smarterscheduling than a general purposeoperating system scheduler.

    When one thread is waiting for aresource, a virtual processor can work onbehalf of another thread. By providingthis flexibility, only a small number ofoperating system processes are required tomanage a larger number of users becauseeach virtual processor can respond tomultiple user requests. Although manyvirtual processors may be spawned torespond to user requests, to the user itappears as one database server.

    Because the number of requireddatabase server processes is significantlyreduced, less context switching withinthe operating system is requiredwhichenables Informix Dynamic Server tobypass most performance restrictionsand burdens typically imposed by theoperating system. And with InformixDynamic Server, you can take advantageof special scheduling features providedby hardware vendors (such as processoraffinity), without adversely affectingyour overall system performance.

    V i r t ua lP ro ce s s o r

    CPU

    Use r3

    Use r2

    Use r1

    Use r4

    Use r5

    Figure 3: A virtual processor can respond to many users requests.

  • 4

    Parallel Processing

    To ensure most effective utilization ofsystem resources, Informix DynamicServer breaks large database tasks intoindividual subtasks so that they can beexecuted in parallel across multipleCPUs and disks. By dividing tasks intosubtasks and running the subtasks inparallel, Informix Dynamic Server cansignificantly decrease the execution timeof complex operations. For example, fora processing-intensive request such as amultitable join, the task can be dividedinto multiple database subtasks andspread across all the available virtualprocessors in the system.

    Virtual Processor Classes

    For efficient execution and versatiletuning, virtual processors are groupedinto classeseach optimized for aparticular function such as CPU operations, disk I/O, client/servercommunication, and administrativetasks. By delegating the virtual proces-sors into classes, Informix DynamicServer is able to effectively scheduleand prioritize operations.

    Threads are transparently sched-uled across the virtual processors in therelevant class. You can configure yoursystem with enough virtual processorsin each class to handle the specific typeof workload on that particular system.And, since the pool of virtual processorscan be easily adjusted on line, you canquickly tune the number within eachclass, or make changes to accommodateperiods of heavy activity or load mixes.

    While there are many virtualprocessor classes, the most important isthe CPU class, which can be increasedand decreased as CPU processing needsdictate. If there is a long queue for CPUprocessing, you can dynamically start upa CPU virtual processor to alleviate thatbottleneck without interrupting a singleuser on the system.

    Since the number of virtual proces-sors required to handle client requestsis often unpredictable, several virtualprocessor classes for client/server commu-nication protocols (such as IPX/SPX,TCP/IP, and shared memory) can beimplemented to handle client communi-cation with Informix Dynamic Server.

    An optical virtual processor class can evenbe added to handle the I/O processing ifyou need to add optical media storagedevices to your system.

    Dynamic Shared Memory

    All memory used by Informix DynamicServer is shared among the pool of virtualprocessors. That way, Informix DynamicServer can be configured to automaticallyadd more memory to its shared memorypool in order to process client requestsmore expediently.

    Data from the read-only datadictionary (system catalog) and storedprocedures is shared among users ratherthan copied, resulting in optimizedmemory utilization and fast execution of heavily used procedures. This featurecan provide substantial benefits in manyapplications, particularly those accessingmany tables with a large number ofcolumns and/or many stored procedures.

    Informix Dynamic Server also allocates an area, called the threads stack,in the virtual portion of shared memoryto store non-shared data for the functionsthat a thread executes. The threads stacktracks the state of a user session andenables a virtual processor to protect athreads non-shared data from being over-written by other threads concurrentlyexecuting the same code. Informix

    CPU 3CPU 2CPU 1

    Use r

    V i r t ua l P r o c e s s o r 3V i r t ua l P r o c e s s o r 1 VP 2

    Figure 4: Many virtual processors can be spawned to respond to a user request.

    Dynami ca l l y Tuneab l e

    Pa ra l l e l i z edMu l t i t h r eaded Da taba seOpe ra t i ng Sy s t em

    Fa s t e r Con t ex tSw i t c h i ng

    Be t t e r S chedu l i ng

    Be t t e r L o ck i ng

    Dynami c Memor y

    CPU VP

    A IO VP

    Commun i ca t i on VP(Sha red Memor y,TCP/ IP, I PX/SPX)

    DatabaseServer

    ...

    Figure 5: Virtual processors are grouped into classes which are optimized for a particular function. Informix Dynamic Server may be configured with the appropriate number of virtualprocessors in each class to handle the specific workload on the system.

  • 5

    Dynamic Server dynamically grows the stack for certain operations such as recursive stored procedures.

    Informix Dynamic Servers sharedmemory minimizes fragmentation so thatmemory utilization does not degrade overtime. Beyond the initial allocation, sharedmemory segments are automatically addedin large chunks as needed, but can alsobe added by the administrator whilethe database is running. The memorymanagement system will also attempt toautomatically grow the memory segmentwhen it runs out of memory. When auser session terminates, the memory it used is freed and reused by anothersession. Memory can be reclaimed by theoperating system by freeing the memoryallocated to the database. User threadscan therefore easily migrate among thevirtual processors, contributing to InformixDynamic Servers scalability as the numberof users increase.

    Asynchronous I/O

    I/O is typically the slowest component of database processing. Informix DynamicServer uses its own asynchronous I/O(AIO) package (or the operating systemskernel AIO when available) to speed upI/O processing. Because InformixDynamic Servers virtual processorsservice user I/O requests asynchronously,a virtual processor will never have to waitfor an I/O to complete before beginningwork on another service request.

    There are four specific classes ofI/O virtual processors: logical log I/O,physical log I/O, AIO, and kernel asyn-chronous I/O (KIO). Separating I/O into these classes allows for an efficientprioritization scheme. And since I/Orequests are uniformly scheduled,Informix Dynamic Server can effec-tively keep all available disks busy. Infact, you can use Informix DynamicServers System Monitoring Interface to detect long queues for reads orwrites from disk, then start up addi-tional virtual processors specializing in I/O to alleviate I/O bottlenecks.

    Read Ahead

    For sequential table or index scans,Informix Dynamic Server can beconfigured to asynchronously readseveral pages ahead from disk while thecurrent set of pages in shared memoryare being processed. With this ability,throughput is maintained, becauseapplications spend less time waiting for disk accesses to complete.

    Informix Dynamic Server Features and Functions

    Informix Dynamic Server allows you to scale database performance accordingto your current needs and to manageand administer your overall systemmore effectively. This section detailsmany of the specific features InformixDynamic Server utilizes to deliverperformance advantages.

    Parallel Data Query (PDQ)

    As symmetric multiprocessor, looselycoupled clusters, and massively parallelprocessor architectures are utilized fordatabase processing, PDQ will take com-plete advantage of the underlying CPUsand execute tasks many times faster thancompeting database architectures. Insome cases, queries could complete inminutes instead of hours, or secondsinstead of minutes. This performancebenefit applies to all complex databaseoperations that require sorting, scan-ning large amounts of data, joiningtables, and performing aggregations.

    Lets take a simple join, for example.When joins happen serially, users haveto wait for one task to finish before thedatabase begins the next one. In otherwords, the database must first scan, thenjoin, then sort, then send the results tothe user. PDQ achieves two processingeconomies. First it processes these tasksconcurrently, in parallel. Second, it breakseach individual task into subtasks, takingfull advantage of DSAs built-in coreparallelism. This ability dramaticallyreduces overall processing time.

    Parallel Sort

    Sorting is a fundamental activity forcommon database operations such asbuilding indices, sort-merge joins, and ORDER BY in SQL queries.Improvements in sort speed can be leveraged in many applications.

    Parallel sort breaks a list intosections and directs each section to a separate processor for action. Theprocessors then cooperate to assemblethe final result. Sorting a long mailinglist by zip codes, or resorting a long listof part numbers to put them in order bymanufacturing cost are typical tasks thatgain immediate benefit from parallel sort.

    In practice, the speed of sortingoperations is limited by the time neededfor scanning data from tables. This limi-tation is significantly reduced by anotherPDQ featureparallel scan.

    Para l le l Data Query at Work

    DSAp ro ce s s e s

    t a sk scon cu r r en t l y

    So r t

    J o i n

    S can

    Se r i a l Pa ra l l e l Pa ra l l e l

    DSAb reak s t a sk s

    i n t osub ta sk s

    Tim

    e to

    Pro

    cess

    Figure 6: Dynamic Scalable Architecture is designed to process tasks (such as scan, join, andsort) concurrently, then breaks them into subtasks to greatly reduce processing time.

  • 6

    Parallel Scan

    In most applications today, reports,joins, and index builds all require longscan operations when working with largedatabases. Informixs PDQ technologyreduces this scan time dramatically.Parallel scan takes advantage of tablepartitioning, which enables scanning ofmultiple disks in parallel. For sequentialtable or index scans, Informix DynamicServer can be configured to asynchro-nously read several pages ahead while thecurrent page is being processed; becauseapplications spend less time waiting fordisk accesses to complete, this featurehelps maintain optimal throughput.

    Parallel Insert

    When inserting a large number of records into the database using the INSERT INTO statement, or when selecting data and inserting it into a temporary table using theSELECT...INTO TEMP statement,PDQ can significantly speed up the timeto complete the transaction by insertingthe records in parallel. LeveragingInformix Dynamic Servers table parti-tioning capabilities, which divide tablesinto several small logical sections spreadacross several disks, multiple processorscan then insert records onto the disks in parallel, yielding performance gainsproportionate to the number of disks.

    Parallel Join

    Complex queries commonly require data to be retrieved from two or moreseparate tables. The records from the two tables are then matched and theresult is returned to the requester. Thistask is called a join. DSA can parallelize a join by using advanced algorithms thatpermit multiple processors to scan data,then join the selections in parallel.

    Parallel Aggregation

    Complex queries might often require the summarization and aggregation ofdata. Query operations that incorporate a GROUP BY command and aggregatefunctions, such as SUM, Average, MIN,or MAX, execute much faster thanother database servers because ofInformix Dynamic Servers parallelprocessing abilities.

    Parallel Index Builds

    With Informix Dynamic Server, SQLCREATE INDEX statements run muchfaster than with serial-based architectures.This is due to algorithmic improvementsand the ability to perform index buildsin parallel.

    During a parallel index build,Informix Dynamic Server samples theavailable data and determines the numberof threads needed to scan it. The data isthen scanned in parallel, utilizing readahead whenever possible, then placed inshared memory bins which are thensorted in parallel. The subtrees withineach sorted subtask are built in parallel,and merged into the final index. WithInformix Dynamic Server, sort threadsdo not require the scan thread to becompleted before another sort is started.At the same time, the index build threaddoesnt wait for the sorts to be completedbefore starting to build the indexsubtreethis build is done concurrentlyand in parallel. In fact, such parallelizationcan achieve as much as a ten-fold increasein performance for index builds whencompared to serial index builds, dependingon the amount of data, the number ofdisks used, and available memory.

    Table Partitioning

    Table partitioning improves parallelprocessing performance and high avail-ability. It also makes managing verylarge databases much easier by breakingthe database into smaller sections.

    Informix Dynamic Server allowstable partitions to be set and data distri-bution changes to be altered withoutinterrupting the database server. Inaddition, partitioning schemes are trans-parent to applications and end users.The partitioning schemes can be setusing simple round robin (every recordgoes to the next partition in sequence),hashed (an algorithm applied to therecord key determines its partitionnumber), or expression methods (eachpartition gets a set of records based ontheir key values) via SQL statementssuch as CREATE TABLE and ALTERTABLE. These partitions can be moni-tored and tuned when necessary.

    Dynamic ServerI ndex Re su l t S e t

    So r t Re su l t S e t

    S can Re su l t S e tB-Tree Index ThreadSort ThreadsScan ThreadsFigure 7: An example of parallel index buildutilizing read ahead, parallel scans, andparallel sorts.

  • 7

    The ability to divide a single tablepartition into two or three new tablepartitions is essential in order to reap the benefits of parallel processing. Forinstance, by recognizing the scheme bywhich the data has been partitioned, thedatabase server is able to skip partitionsthat are uninvolved in a particular query.At the same time, the database server canskip unavailable partitions due to a systemcrash, maintaining high availability.

    In addition to partitioning datatables, Informix Dynamic Server can alsopartition indexes to allow for maximumdata layout flexibility, resulting in optimalparallel processing performance. DBAscan place a partitioned index on a differentpartition than the data. These partitionedindexes can have their own partitioningscheme, separate from data tables.

    Partitioning is also critical for effi-cient system administration. The largerthe database, the more important itbecomes for the system administrator to be able to perform operations such as archive and restore, and bulk load andunload at the table partition level, ratherthan having to archive or restore theentire database or table. Such operationscan occur in parallel, greatly reducingthe time required to load, unload, orrestore data.

    Administration/Management Features

    Informix Dynamic Server provides a set of dynamic system administrationtools that monitor and fine tune systemparameters such as CPU and memoryutilization, asynchronous I/O queuing,decision-support and batch queuing,available disk space, efficient parti-tioning schemes, etc. These mainframe-caliber administration tools enabledatabase administrators (DBAs) toperform most system administrationfunctions on linewithout bringingthe system down. Additionally, manyutilities have been parallelized to deliverthe highest performance possible. Toenhance management of distributeddatabases, a user-friendly, intuitiveadministration environment called

    INFORMIX-E

  • 8

    restore, the server then reprocesses thelogical log records until it finds the firsttransaction-bound record that is greaterthan the specified date or time. At thatpoint, the server would stop reprocessingthe logical log records and all transac-tions that were uncommitted before theuser-specified time would be rolled back.

    INFORMIX-Enterprise Command Center

    Informixs advanced systems managementsolution consists of an automated, open,scalable systems management tool andintegrated support for third-party systemsmanagement tools and SNMP-based(Simple Network Management Protocol)enterprise management frameworks.

    INFORMIX-Enterprise CommandCenter allows customers to manage fromone to thousands of database servers easilyfrom a central console. With its Java-enabled, object-oriented, CORBA/IIOP-based architecture, Enterprise CommandCenter allows users to create lights-outsystems management automation and to customize application managementobjects. Enterprise Command Centeralso offers users the flexibility to managedistributed databases from a Web browseror Microsoft Windows PC, providinguniversal systems management from anydesktop regardless of platform or location.

    Enterprise Command Center is acompletely open platform designed toallow third-party systems managementapplications and network managementtools to easily interoperate, providingcomplete systems management inheterogeneous environments.

    Memory Grant Manager

    The memory grant manager (MGM)allows DBAs and programmers tocontrol the degree of parallelism bybalancing the priority of user requestswith available system resources. MGMperforms the following: adjusts the amount of system

    resources needed for PDQ-typetasks;

    sets the priority of each query;

    adjusts the number of complexqueries allowed to run concur-rently;

    adjusts the maximum amount ofmemory utilization for both decisionsupport and OLTP; and

    works in conjunction with the cost-based optimizer to ensure the fullestdegree of parallelism at all levels.

    Memory grant managers efficientmemory utilization is the key to opti-mizing parallel processing. MGM alsoenforces aggregate resource limits forPDQ processing. And with MGM, allsystemwide priority settings can bechanged dynamically.

    The System Monitoring Interface

    Informix Dynamic Server maintains asystem master databasethe sysmasterwhich keeps track of information aboutthe database server. A component of thesysmaster is the System MonitoringInterface (SMI), consisting of a numberof tables and pseudotables that provideinformation on the state of the databaseserver. These tables can be queried to

    identify processing bottlenecks, deter-mine resource usage, track session ordatabase server activity, etc. Some of the information provided includes: database names, owners, and

    logging status;

    status of users who are waiting for database resources;

    performance profiling information;

    user and system CPU usage byvirtual processor;

    information about disk space;

    information about transaction log(logical log) status;

    information about specific regionsof disk space (i.e., dbspace);

    lock usage information; and

    extent informationcontinuoussegments of disk space allocated to a tablespace.

    OnPerf

    The onperf utility is a graphical tool thatlets DBAs monitor and display perfor-mance metrics in real time. Various levelsof metrics can be monitored, includingclasses at the database level, operatingsystem level, CPUs, virtual processors,individual user sessions, and tablespaces.Performance data can be saved to a fileand displayed at a later time for simu-lated real time or for trend analysis.

    Table Reorganization

    To enhance high database availability,Informix Dynamic Server lets adminis-trators alter table schema, such as addinga column to a table, without having tomake the table unavailable for normaluse. Furthermore, the table alter occursin place, meaning that the database doesnot have to create a second copy of thetable in order for the change to takeplace, thereby minimizing disk spaceusage when large tables are altered.

  • 9

    Raw Disk Management

    For fast data access, Informix DynamicServer achieves contiguous disk-spacestorage through raw disk devices, sincethe native UNIX file system does notguarantee contiguous disk space allocation. Raw disk space allocation,conversely, makes it possible forInformix Dynamic Server to create its own data storage system.

    Data storage on raw disk allowsInformix Dynamic Server to performdirect memory access (DMA). DMAwrites data directly from memory todisk, bypassing intermediate UNIXbuffering mechanisms that are requiredwhen data storage is performed through a standard UNIX file system. Thisprocess makes it faster to commit transactions to disk.

    Informix Dynamic Servers Enterprise Replication

    Informix Dynamic Servers enterprisereplication is designed to meet a widespectrum of business and applicationrequirements. To ensure high databaseavailability, enterprise replication supportsreplicating the entire database or a portionof the database to a secondary server.This option is useful for creating a hotstandby server to take over processing in case the primary server fails.

    Enterprise replication also supportsa full peer-to-peer replication modelwith update-anywhere capability.Enterprise replication protects againstprimary system failures through repli-cating data asynchronously to one ormultiple secondary sites. Any updates at the primary site, including changes to the global catalog, are automaticallypropagated to the secondary sites,ensuring all sites have consistent replicates of the data.

    Enterprise Replication employs a log-based mechanism for capturingupdates at the primary site. This methodminimizes impact on transactionprocessing because it operates as part of the normal database logging process.

    Only those records that have beenearmarked for replication are collectedand transmitted to the secondary sites,thus incurring minimal interference tothe normal operations of the primarysystem. Log-based capture is much more efficient than trigger-based capture,which can directly impact the perfor-mance of transaction processing at the primary site.

    Transmission of the updates can be immediate or time-driven, in whichcase the DBA specifies the time intervalsfor the updates. Updates can also beevent-driven, such as after a transactioncommit or as specified by the user. A reliable message delivery mechanismstores data locally and propagates thedata to the remote server as a separatetransaction. In the event of a server ornetwork failure, the surviving server cancontinue to service the users, providinga high degree of fault tolerance. Oncethe failed server or network are opera-tional again, all changes to the sourcedatabase are propagated to the databaseon the affected server.

    Cost-Based Optimizer

    Informix Dynamic Servers cost-basedoptimizer will automatically determinethe fastest way to retrieve data from adatabase table based on detailed infor-mation about the distribution of thatdata within the tables columns. Theoptimizer collects and calculates statisticsabout this data distribution and willpick the return path that has the leastimpact on system resourcesin somecases this will be a parallelized returnpath, but in others it might be asequential process. All that is needed tocontrol the degree of parallelism is thememory grant manager.

    Figure 8: Informixs advanced Enterprise Replication facility supports both Informix and hetero-geneous database environments, providing flexibility for disseminating and consolidating infor-mation across geographically dispersed database servers based on specific business needs.

  • 10

    64-Bit Support and Large Memory Addressability

    Most UNIX and Windows NT systemsare limited to two gigabytes of memory(or less) due to the limitations of theunderlying 32-bit address space. Suchlimitations are relaxed with 64-bit archi-tectures, providing a significant break-through in database performance.

    To take advantage of 64-bit architec-tures, Informix Dynamic Server provides64-bit support and large memoryaddressability (LMA) to boost perfor-mance in both on-line transactionprocessing and decision-support envi-ronments. 64-bit support allows largerdatabase page sizes which enhanceperformance by allowing more data tobe transferred from disk to cache in asmaller number of physical I/O opera-tions. With LMA, Informix DynamicServer can now support tens of giga-bytes of physical memory and hundredsof gigabytes of virtual address space,thus allowing more data to be cachedin memory. With support for LMA,Informix Dynamic Server can supportlarger numbers of users, and increasedatabase throughput, as well as reduceswapping in heavy OLTP environments.

    Data Consistency

    While high availability ensures integrityat the system level, data consistencyensures consistency at the transactionlevel. Informix Dynamic Server main-tains data consistency via transactionlogging and internal consistencychecking, and by establishing andenforcing locking procedures, isolationlevels, and business rules.

    Transaction Logging

    When an operation is unable to becompleted, the partially completed transaction must be removed from thedatabase to maintain data consistency.To remove any partially completedtransaction, Informix Dynamic Servermaintains a historical record of all trans-actions in the logical logs and automati-cally uses these transaction records as areference to restore the database to thestate prior to the transaction.

    Internal Consistency Checking

    Internal consistency checking is designedto alert the Informix Dynamic Serveradministrator to data and system incon-sistencies. Informix Dynamic Servercontains a data-level layer of checks that can detect data inconsistencies thatmight be caused by hardware or oper-ating system errors. If inconsistenciesare detected, this internal mechanismautomatically writes messages to theInformix Dynamic Server message log.

    In order to better pinpoint thecause of the inconsistency, InformixDynamic Server administrators caninstruct users to set consistency-checkingenvironment variables. These variablesgenerate diagnostic outputfor example,contents of shared memory when theinconsistency occurredto help locatethe cause of the inconsistency.

    Locking and Process Isolation

    Other important features for main-taining data consistency are lockingprocedures and process isolation. Thesesecurity measures prevent other usersfrom changing data that is currentlybeing read or modified.

    Locks

    The database server prevents errors byimposing a system of locks. A lock is aclaim or reservation that a program canplace on a piece of data. The databaseserver guarantees that, as long as thedata is locked, no other database serverprocess can modify it. When anotherprogram requests the data being modi-fied, the database server either makesthe program wait or turns it back withan error.

    Informix Dynamic Server alsoprevents deadlocksa situation wheretwo users have each locked data that theother user needs. For example, user Ahas locked one row and wont release ituntil user A can access the row locked byuser B. Informix Dynamic Server detectsa deadlock immediately and returns anerror message to the second program toprevent a standstill.

    The throughput of transactions for a specific table can be affected by the locking strategy used for the table.Applications that use strategies of exclu-sive access to data might find that otherdatabase server processes are spendingtime waiting for access to the data. Forthis reason Informix Dynamic Serverprovides several locking levels. Thedatabase server can place a lock on a single row, page, table, or database.

    Row- and page-level locking arespecified when the table is created oraltered. Table- and database-level lockingare specified in the users application.

    Isolation Levels

    The isolation level is the degree to which your read operation is isolatedfrom concurrent actions of other data-base server processes: what modificationsother processes can make to the recordsyou are reading, and what records youcan read while other processes arereading or modifying them.

  • 11

    Isolation levels are only in effect forreads, they are not used for statementsthat insert, update, or delete. InformixDynamic Server has four isolation levels:dirty read, committed read, cursorstability, and repeatable read.

    The simplest isolation level, dirtyread, provides no isolation at all. Whena program accesses a row using a dirtyread, it places no locks and respects none.For dirty reads, users are able to read allthe datacommitted or uncommitted.

    The committed read isolation level guarantees that Informix DynamicServer will read only rows that have beencommitted to the database. Beforeretrieving a row, the database servertests to see if an updating process hasplaced a lock on the row. If no lockshave been placed, the database serveraccesses the row. The committed readisolation level ensures that the databaseserver does not read uncommitted data because locks are placed on therows that have been updated but not committed.

    The next level of isolation is cursorstability. When cursor stability is in effect,the database server places a lock on thelatest row read. Only one row is lockedat a time; each time a new row is read,the previous lock is released. This isolationlevel ensures that the current record willnot change while the program examines it.

    The repeatable read isolation guar-antees that the results obtained during aread operation would be identical if theread were repeated later in the same trans-action. Not only does a repeatable readplace shared locks on the records thatwere read, but also it prohibits otherusers from adding records to the databaseor modifying records if they would havesatisfied the criteria of the read requesthad they been in the database earlier.

    Business Rules

    Business rules enforce data consistency at the column level. They specify possibledata values, column defaults, and column-to-column relationships.

    Business rules must be enforced byall applications that access or manipulatedata. However, Informix Dynamic Serverdoes not depend on the application toimplement these business rules. Instead,Informix Dynamic Server enforces theserules independently. This centralizationof responsibilities removes the burdenfrom the user applications and guaranteesadherence to business rules.

    Informix Dynamic Server supportsintegrity constraints, stored procedures,and triggers to enforce business rules.

    Integrity Constraints

    Informixs implementation of ANSISQL-compliant integrity constraintsensures that information is not improperlydeleted and that inserted data meetscolumn specifications. Informix DynamicServer provides two types of integrityconstraints: referential integrity andentity integrity.

    Referential integrity allows users todefine and enforce relationships betweencolumns. For example, Informix DynamicServers referential integrity guaranteesthat information about an entry in amaster table is not deleted when thecorresponding information still exists inthe detail table. This prevents users fromdeleting a customer record if an order stillexists for that customer in an order table.

    Entity integrity enforces acceptabledata values for particular columns. Thischeck allows the DBA to specify a rangeof permissible values. Default values allowusers to specify a default of any value thatis compatible with the column datatype.

    Stored Procedures

    Stored procedures are SQL commandsand program statements that are storedin the database as named procedures toensure consistent implementation ofcommonly used operations. Storedprocedures maintain common optimizedapplication routines in the databaserather than in the application program.

    Netscape/Java/ActiveX

    Desktop Applications/VB/C++

    Client/Server Tools

    Netscape Server

    MultimediaData

    SystemManagement

    Dynamic Scalable Architecture

    RelationalData

    Repli

    catio

    nINF

    ORMI

    X-En

    terpr

    ise Co

    mman

    d Cen

    terfo

    r Sys

    tems M

    anag

    emen

    t

    F i g u re 9 : I n f o rm i x D y n a m i c S e rv e r p ro v i d e s a c o m p l e t e p a c k a g e t h a t n o t o n l y d e l i v e r s s c a l a b i l i t y, p e rf o r m a n c e , a n d e a s e o f u s e , b u t a l s o c o m p l e t e c o n n e c t i v i t y i n c l u d i n g

    i n t e g r a t i o nw i t h N e t s c a p e s We b s e r v e r t o s u p p o rt a w i d e r a n g e o f d e m a n d i n g , d i s t r i b u t e dc l i e n t / s e rv e r a p p l i c a t i o n s .

  • 12

    Stored procedures reduce theamount of network traffic for databaseoperations because stored procedurescan handle multiple taskssuch asinsert, update, and deletewith asingle command. After processing therequest, the stored procedure returnsonly the results of the request ratherthan the numerous result sets for theindividual queries.

    Triggers

    A trigger is an alternate method forinvoking a stored procedure. Rather thanthe application program calling a storedprocedure to enforce a business rule, atrigger can be defined that will cause thedatabase server to automatically executea stored procedure (or SQL statement)when any attempt is made to insert,delete, or update a field in the table.

    Since triggers are stored in thesystem catalogs, the need for applicationprograms to maintain redundant codehas been removed. Likewise, consistentintegrity constraint enforcement acrossall transactions is guaranteed since triggerscannot be bypassed.

    Cascading Deletes

    Cascading deletes automatically deleteall child records in a table when a parentrecord is deleted, thereby simplifying userapplications. If for any reason the originaldelete statement or any of the actionstriggered as a result of the delete fail, theentire delete statement is rolled back.

    The ability to perform cascadingdeletes not only provides a significantperformance advantage, since InformixDynamic Server automatically deletesrows, but it also makes the system easierto use and administer by eliminating the need for programmers to hard codedeletes into the application. You alsodont have to spend the time and effortto code business/referential rules, whichresults in better database consistency aswell as cleaner application programs.

    Database Security

    Informix Dynamic Server provides twolevels of access privileges to ensure data-base security. Database privileges controlaccess to the database and the privilegesfor creating tables and indexes in thedatabase. Table privileges specify theoperations that a user is allowed toperform against a specified table.

    Informix Dynamic Server supportsalter, insert, and delete security at thetable level while enforcing select andupdate security at the column level.Separate privilege statements are used togrant and revoke the appropriate accesslevel to users. No separate database loginis required since Informix Dynamic Serverapplies security at the users login level.

    Stored procedures provide an addi-tional security mechanism by establishingtheir own permissions separately fromthe data permissions. The owner of astored procedure grants users the right to execute the stored procedureallowingthe user to perform all the SQL operationsin the procedure, but restricting otheraccess against the database. By usingstored procedures to prohibit users fromperforming operations against the data-base, except through authorized storedprocedures, DBAs can elevate securityto the procedure level.

    Secure Auditing

    Informix Dynamic Server offers secureauditing features to provide traceabilityand accountability for any database objectmanipulated by a user. These featureshave been implemented to model afterthe Class C2 security requirements setforth by the U.S. National ComputerSecurity Center.

    With Informix Dynamic Server,you can selectively monitor the activityof users on the system. The interface for secure auditing is driven from thecommand line or a configuration para-meter and allows you to define whichactivities you wish to monitor for certain users.

    ANSI SQL92 Entry Level Conformance

    Informix Dynamic Server is the firstcommercially available relational data-base management system (RDBMS) for the UNIX operating system to receiveEntry Level SQL 1992 certification fromthe National Institute of Standards andTechnology (NIST). Formerly theNational Bureau of Standards, NISThas the only test suites available forvalidating SQL standards compliance.

    The latest NIST certification statesthat Informix Dynamic Server complieswith the governments SQL RDBMSFederal Information Processing Standard(FIPS), number 127-2. FIPS 127-2meets the specifications set by theAmerican National Standards Institutes(ANSI) 1992 Entry Level standard forSQL databases.

    A Client/Server-Ready Package

    With Informix Dynamic Server, distrib-uted, client/server connectivity is auto-matically built inensuring that anyInformix application using its associatedconnectivity libraries can run inclient/server mode. Therefore, there is no need to purchase any additionalnetworking products to run InformixDynamic Server across heterogeneousclient/server networks.

  • 13

    Informix Dynamic Server can read,join, and update tables on several differentcomputer systems within a single trans-action. Its industry-leading optimizationmethods ensure that these multisiteupdates are handled quickly, while itstwo-phase commit recovery proceduresensure that the updated tables remainconsistent even after a system failure.

    Multisite Reads, Joins, and Updates

    Informix Dynamic Servers ability toread, join, and update tables on severaldifferent computer systems within asingle transaction is critical for compa-nies with a need to share data betweenmultiple databases. Informix DynamicServer also supports multisite updateswithin a single transaction becausecompanies often need to modify severaldistributed databases and ensure consis-tency between them.

    If a system fails during a multisiteupdate, distributed database productsshould provide special recovery proce-dures to bring the failed system up todate so that its information is consistentwith that of the other database servers.Distributed database products shouldalso implement multisite transactionsquickly without wasting CPU or networkresources, since most transactions areused for time-critical business applicationswhere wasted time means lost profits.

    Informix Dynamic Server enablesusers to issue multisite updates within asingle transaction. It coordinates changesto distributed databases using a two-phasecommit protocol, handles system failuresthrough its automatic recovery proce-dures, and ensures fast performance byemploying presumed abort optimization.

    Two-Phase Commit Protocol

    Two-phase commit protocols ensure data-base consistency during multisite updates,and incorporate precommit and commitphases. When the user first connects to

    an Informix Dynamic Server system,that system becomes the coordinator forall the other participant database serversinvolved in the multisite update.

    The coordinator receives aCOMMIT WORK statement from theuserindicating that there are no moreSQL statements in the transactionandsends messages to the participant data-base servers asking them to prepare tocommit the transaction, beginning theprecommit phase of the protocol.

    If any of the participants reply that they cannot prepare to commit, or simply dont reply, the coordinatoraborts the transaction and requests thatthe other database servers roll back theirportions of the transaction. If all theparticipant database servers send positiveresponses, the coordinator asks them tocommit the transaction. Deciding toeither roll back or commit the transac-tion starts the commit phase of the two-phase commit protocol.

    Two-Phase Commit Recovery

    If any of the database servers fail before the two-phase commit protocol is completed, distributed database prod-ucts should recover the system and makesure its data is consistent with the datamanaged by the other database servers.Some relational database managementsystems require developers to write their own recovery procedures for alltheir applications.

    Informix Dynamic Server provides a more flexible solution than otherRDBMSs which automatically roll backuncommitted transactions and commitcompleted transactions on the faileddatabase server. Instead, InformixDynamic Server tracks the status of eachtransaction and provides two differentrecovery procedures: one for coordinatorfailures and one for participant failures.

    If a coordinator fails, it detects thata global transaction was in process uponrestarting. The coordinator then contactsthe participant database servers to obtainthe status of their portions of the trans-action. If their status is can commit,the coordinator sends them a message tocommit their portions of the transaction.

    Likewise, if a participant fails, itnotices upon restarting that it was in themiddle of a multisite update transaction.The participant then contacts the coor-dinator to determine the status of thetransaction. A coordinator removes atransaction from its memory only afterall the participants acknowledge theyhave committed their portions of it.

    If one of the participants failsbefore committing the transaction, thetransaction remains in the coordinatorsmemory. The coordinator indicates thestatus of the transaction to the partici-pant, and the failed participant commitsits portion of the transaction.

    If the coordinator does not know thestatus of the transaction, the participantassumes the transaction was aborted androlls back its portion of the transaction.

    Presumed Abort Optimization

    Informix Dynamic Server uses presumedabort optimization to ensure fast perfor-mance during multisite updates. Pre-sumed abort optimization is widelyaccepted as the method that ensures theleast number of messages among distrib-uted database servers and the least amountof disk I/O.

    This method eliminates two steps,improving database performance whileensuring data consistency. The first stepeliminated by presumed abort optimiza-tion is a synchronized write to disk whenthe coordinator starts the commit process.Synchronized writes require a system towait until the data is safely stored on diskbefore proceeding with any other tasks.They are performed only when it is crit-ical to ensure that data is not lost, sincethey use up valuable CPU time.

  • 14

    Presumed abort optimizationrequires synchronized writes only when a coordinator receives can commitand committed messages from all the participants. A coordinator needsto record only the transactions that aregoing to commit, since an unrecorded or unknown transaction status causes the participant database servers to rollback their portions anyway.

    The second performance benefitprovided by presumed abort optimizationis the elimination of rollback acknowl-edgments to the coordinator from theparticipants. Only committed transac-tions are acknowledged and recorded on disk because, again, an unknowntransaction status from a coordinatorachieves the same effect, causing a failed participant to roll back its portion of the transaction.

    Location Transparency

    Network and database configurationsneed to be flexible enough to accommo-date computing environment changeswithout forcing developers or users torewrite or relearn applications.

    Informix Dynamic Server insulatesapplications from database configurationsthrough its extended synonym capability,which allows DBAs to move tables tonew locations on different systemswithout requiring application changes.Users benefit too, since InformixDynamic Server connects them to thecorrect computer system whenever theyuse an extended synonym, so they donthave to remember which systemmanages the table they want to access.

    Site Autonomy

    Maintaining an uninterrupted flow ofinformation is critical to the success ofmost businesses. Some distributed prod-ucts rely on a central database server tomanage the system catalogs. Thesecentralized system catalogs store informa-tion on the size and content of thedistributed databases and become inac-cessible if the central server fails,rendering the entire distributed databasesystem useless.

    Informix Dynamic Server has a site-autonomous architecture that elimi-nates reliance on a single, central server.With Informix Dynamic Server, all remotedatabase servers operate independently,managing their own system catalogs sothey are not subject to the reliabilityproblems of a central database server.

    Deadlock Resolution

    Users cant afford to wait endlessly forothers to unlock data they need. Whilesome distributed database systems dolittle to prevent the waste of valuabletime and computing power when adistributed deadlock occurs, InformixDynamic Servers deadlock resolutionfeature eliminates this possibility. Bysetting the maximum time users shouldwait for a lock, Informix Dynamic Serverresolves distributed deadlocks, so userstime and computing resources aremanaged efficiently.

    Multithreaded Clients

    Through INFORMIX-Embedded SQL(ESQL), developers can continue todevelop applications using familiarthird-generation languages such as C and COBOL for database access. The ESQL libraries are reentrant, or thread-safe, enabling users todevelop multithreaded client applica-tions that can have multiple activeconnections to a server concurrently,thereby taking full advantage of DSAsmultithreaded architecture.

    Additionally, the ESQL libraries are dynamically linked and shared tosignificantly reduce the size of theexecutables. These shared libraries can be linked to a number of executingprograms during runtime, resulting in greater efficiency and less memoryusage. ESQL includes TP/XA function-ality, linking Informix Dynamic Serverwith transaction managers to supportglobal transactionsthose transactionsinvolving multiple databases and perhapsmultiple database management systemsfrom different vendors. Informix is the first RDBMS to provide this standards-based interface to X/Open

    XA-compliant transaction managers.

    Enterprise Gateway Support

    In todays competitive business climate,immediate access to informationthroughout an organization is oftencritical in order to make informed busi-ness decisions. Where companies oncestored their data on mainframes, todaythe data may be spread across a varietyof different computing platforms andoperating systems, including proprietaryand open, relational, or non-relationaldatabases. To provide Informix DynamicServer users with access to corporate dataresiding on disparate database servers,Informix offers the INFORMIX-Enterprise Gateway product family fortransparent access to data stored withinOracle, Sybase, IMS, or IBMs DB2 data-bases. With these gateway technologies,Informix Dynamic Server users caneasily access data regardless of wherethat data is located.

  • 15

    In the case of a system failure, BLOBscan be restored regardless of the storagemethod, using the Informix DynamicServer data recovery methods.

    Global Language Support

    Informixs global language support (GLS)implementation conforms to the GLSlevel 4 specification, a coding standardthat allows multibyte characters. Byproviding GLS support, InformixDynamic Server can collate characterstrings, print dates, and accept monetaryinput in the rules and formats requiredby the country in which the productsare being used, without the need todistinguish between localized versionsof Informix software. Additionally, GLSprovides worldwide support of databaseapplications, so applications can bemigrated to multiple languages whilemaintaining the same functionality.

    Open Database Connectivity

    Informix Dynamic Server supportsMicrosofts Open Database Connectivity(ODBC) specification throughINFORMIX-Call Level Interface (CLI),which supports all ODBC API calls,datatypes, and SQL syntax as defined in the specification. INFORMIX-CLIalso provides TP/XA functionality.With hundreds of ODBC-based applications for accounting, inventorymanagement, customer tracking, etc.already available, customers have imme-diate access to a variety of solutions forrunning in a client/server environment.

    Multimedia Support

    Informix Dynamic Server combinesOLTP database performance with theability to store documents, images, andother multimedia data. Informix DynamicServers multimedia capabilities let usersstore up to two gigabytes of text or binarydata as a field in a database record. BinaryLarge Objects (BLOBs) are TEXT andBYTE datatypes that are treated like anyother database data and are accessiblethrough SQL.

    The TEXT datatype is designed tostore self-contained documents such asbusiness forms or source code. Informixapplication development tools requirethat a TEXT datatype is in printableASCII format, so this datatype is limitedto these restrictions.

    The BYTE datatype contains any data that a program can generate,including graphic images, object code,and spreadsheet and word-processingdocuments.

    Because a single occurrence of a BLOB can be very large, InformixDynamic Server processing of BLOBdata is modified to maintain consistencywithout sacrificing high performance.BLOBs can be stored in a blobspacea disk space specifically allocated byInformix Dynamic Server for BLOBs.When a DBA chooses to use a blobspace,BLOB images are written directly to diskand not to shared memory data buffers,preserving space in the logs.

    Memory management is alsoperformed differently for BLOBs storedin blobspaces. The BLOBs are not readinto shared memory, which could poten-tially require a large number of sharedmemory data buffers. Instead, blobspaceBLOBs are either read into the usersvirtual memory or into a system fileat the option of the application program.

  • Printed in U.S.A

    . 1K 12/97 000-21599-77

    1997. The following are worldwide trademarks of InformixSoftware, Inc., Informix Corporation, or their subsidiaries,registered in the United States of America as indicated by and in numerous countries worldwide: INFORMIX, theInformix logo, Dynamic Scalable Architecture, InformixDynamic Server, DataBlade, Universal Data Option,Advanced Decision Support Option, Extended ParallelOption, Web Integration Option. All other names or marksmay be trademarks of their respective owners.

    4100 Bohannon DriveMenlo Park, California 94025 1 650 926 6300World Wide Web: www.informix.com

    About Informix

    Informix Software, Inc., the worldsdatabase technology leader, providesinnovative database products that enablethe worlds major corporations to attaincompetitive advantage. Informix is widelyrecognized as the technology leader forcorporate computing environmentsranging from small workgroups to verylarge parallel processing applications.Informixs database servers, applicationdevelopment tools, superior customerservice, and strong partnerships enablethe company to be at the forefront ofmajor information technology solutionareas including data warehousing, OLTP,Web/content management, and distrib-uted enterprise solutions.

    For more information aboutInformix products and services, pleasecontact the sales office nearest you, orvisit us on the Web at www.informix.com.

    Asia/Pacific 65 298 1716

    Canada (Toronto) 416 730 9009

    Europe/Middle East/Africa 44 1784 422 000

    Federal 703 847 2900

    Japan 81 3 5562 4500

    Latin America 305 265 7545

    North America 800 331 1763

    650 926 6300

    I N F O R M I X R E G I O N A L S A L E S O F F I C E S