Page 35
Page 36
Oracle Corporation's reputation as a database company is firmly established in its full-featured , high-performance relational database management system (RDBMS) server. Although the database is the cornerstone of its product line, Oracle has evolved into more than just a database company; it complements its RDBMS server with a rich offering of well-integrated products designed specifically for distributed processing and client/server applications. As Oracle's database server evolved to support large-scale enterprise systems for transaction processing and decision support, so too did its other products; Oracle now can provide a complete solution for client/server application development and deployment. This chapter presents an overview of client/server database systems and the Oracle product architectures that support their implementation.
The premise of client/server computing is to distribute the execution of a task among multiple processors in a network. Each processor is dedicated to a specific, focused set of subtasks that it performs best. The result is increased efficiency and effectiveness of the system as a whole. Splitting the execution of tasks between processors is performed through a protocol of service requests. One processor, the client, requests a service from another processor, the server. The most prevalent implementation of client/server processing involves separating the user interface portion of an application from the data-access portion.
On the client, or front end, of the typical client/server configuration is a user workstation operating with a graphical user interface (GUI) platformusually, Microsoft Windows, Macintosh, or Motif. At the back end of the configuration is a database server, which often is managed by a UNIX, NetWare, Windows NT, or DEC's VMS operating system.
Client/server architecture also takes the form of a server-to-server configuration. In this arrangement, one server plays the role of a client and requests database services from another server. Multiple database servers can look like a single logical database and provide transparent access to data spread around the network.
Designing an efficient client/server application is somewhat of a balancing act; the goal is to evenly distribute execution of tasks among processors while making optimal use of available resources. Given the increased complexity and processing power required to manage a GUI and the increased demands for throughput on database servers and networks, achieving the proper distribution of tasks is challenging. Client/server systems are inherently more difficult to develop and manage than traditional host-based application systems because of the following challenges:
Page 37
Client/server technologies have changed the look and architecture of application systems in two ways. Not only has the supporting hardware architecture undergone substantial changes, but there have been significant changes in the approach to designing the application logic of the system.
Prior to the advent of client/server technology, most Oracle applications ran on a single node. Typically, a character-based SQL*Forms application would access a database instance on the same machine, and the application and RDBMS competed for the same CPU and memory resources. Not only was the system responsible for supporting all the database processing, but it also was responsible for executing the application logic. In addition, the system was burdened with all the input/output (I/O) processing for each terminal on the system; each keystroke and display attribute was controlled by the same processor that handled database requests and application logic.
Client/server systems change this architecture considerably by splitting all the interface management and much of the application processing from the host-system processor and distributing it to the client processor.
Combined with the advances in hardware infrastructure, the increased capabilities of RDBMS servers also have contributed to changes in the application architecture. Prior to the release of Oracle8, Oracle's RDBMS was less sophisticated in its capability to support the processing logic necessary to maintain the integrity of data in the database. Primary and foreign key checking and enforcement, for example, was performed by the application. As a result, the database was highly reliant on application code for enforcement of business rules and integrity, making application code bulkier and more complex. There are differences between traditional host-based applications and client/server applications. Client/server database applications can take advantage of the Oracle8 Server features for implementation of some of the application logic.
Pre-Oracle8 databases provided little more than datatype checking at the kernel level. With Oracle8, however, much of the application logic processing can be performed by the database kernel. Oracle8 contains features such as stored procedures, integrity constraint enforcement, user-defined functions, and database triggersall of which enable the application to store more of its business rules (or semantics of the data model) at the database level. As a result, the application is free to do more sophisticated, complex processing tasks such as GUI management and integration to other client-based productivity tools. The database is much more robust; it no longer is reliant on application code to maintain its integrity.
Page 38
Oracle Corporation has been a leader in introducing advanced client/server database technologies; it has directed its product development specifically to support the design, implementation, and management of client/server database systems. Oracle has designed products to support each of the five primary components of client/server architecture:
Oracle's product offerings in each area are highly scalable and provide complete client/server solutions for application environments ranging from small workgroup to global enterprise-wide environments.
The following sections describe several of the primary components of Oracle's client/server architecture, the Oracle8 RDBMS kernel, SQL*Net, and GUI development tools, which are all designed specifically for client/server application systems.
Oracle8 Server is a full-featured RDBMS ideally suited to support sophisticated client/server environments. Many features of the Oracle8 internal architecture are designed to provide high availability, maximum throughput, security, and efficient use of its host's resources. Although all these features are important architecturally for a database server, Oracle8 also contains the following language-based features that accelerate development and improve the performance of server-side application components.