= uda.odbc.mt %TOC% = Multi-Tier (Enterprise Edition) %TOC% Multi-Tier (Enterprise Edition) The [[OpenLink]] Multi-Tier ODBC architecture, comprising a generic client and server components, provides a variety of data-access mechanisms for connecting to your database. Depending on your database(s), there is an [[OpenLink]] ODBC driver available for you. The following architectural diagrams show the different mechanisms of connecting to your database. The Server-based Database Agents are built using the native Database CLI; communication between your client application and [[OpenLink]] server uses the Generic ODBC Driver (C language-based Network Client). These drivers are built using the Type-A call level interfaces of the relevant back-end database engine, and the [[OpenLink]] database-independent networking layer. Thus, this driver format implements the generic interfaces of [[OpenLink]] Data Access interface using a database vendor-provided CLI. Being Type A, this CLI includes data-access and database vendor-provided networking middleware which is optionally usable by the database agent (it is still simply a database client as far as the back-end database is concerned). Database Agents are typically installed on the same machine as the database engines they will be accessing. This is the norm in a typical client-server scenario in which the [[OpenLink]] Client components are installed on a desktop machine or workstation. In reality, there are political, infrastructural, and application-format (application-server configuration) barriers that may impede your ability, or desire, to install the Database Agent on the database server machine. In situations such as these the Database Agents'' ability to use the database vendor-provided networking middleware comes into vital use, and will enable you to setup 3-Tier or N-Tier topologies (sometimes referred to as gateway architectures). [[/images/aodbcmt.gif|]] /Type A Architectural Diagram for ODBC Image scaled down; Click to enlarge./ [[/images/aodbcprogmt.gif|]] /Type A Architectural Diagram for Progress with ODBC Image scaled down; Click to enlarge./ This Database Agent format is similar to Type A with the only difference being the format of CLI used to implement the [[OpenLink]] Data Access Interface. In this case the CLI is a database vendor-provided RPC client that talks directly to remote database servers. This also implies that no database vendor provided networking is required in 3-Tier or N-Tier topologies. [[/images/bodbcmt.gif|]] /Type B Architectural Diagram for ODBC Image scaled down; Click to enlarge./ (also known as Proxies or Bridges). These drivers are proxies sitting atop third-party implementations of the relevant data-access mechanisms. Their prime purpose is to integrate third-party data-access drivers into the [[OpenLink]] Multi-Tier architecture. Proxies are currently available in the following forms: *ODBC Agent - an implementation of the [[OpenLink]] Data Access Interface using ODBC/JDBC databases [[/images/codbcmt.gif|]] /Type C Architectural Diagram for ODBC Image scaled down; Click to enlarge./ The Multi-Tier Drivers comprise client and server components, being uniquely equipped with an in-built high-performance database-independent networking layer and a session rules-book. These drivers are network-ready out of the box, and capable of dynamically discovering matching server components anywhere in a LAN/subnet using the Rendezvous service-discovery protocol. These drivers are described as "Multi-Tier" due to the fact that they include interface implementations at both the client and the server levels. In today''s world of client/server and web/application server based programming paradigms, with remote clients attempting to access your company''s corporate data from any number of unknown locations, security becomes a major concern of any organization in terms of controlling the access to this information. The [[OpenLink]] Multi-Tier architecture utilizes a server-side sessions Rule Book on the to enforce access- controls to the Database server from incoming client requests based on multiple-access criteria across the Domain, Database, User, Application, OS or hostname being presented by the client. This gives the company Network/Database Administrator ultimate control of who or what groups of users are allowed access to the database. [[/images/udaodbcmt.gif|]] / Image scaled down; Click to enlarge./ The Multi-Tier Drivers include the following components: *Generic Client(the entry for service consumption) this is component that provides the high level implementation of the relevant data-access mechanism (ODBC, JDBC, OLE DB, or .NET Provider) within the multi-tier component stack. *[[OpenLink]] RPC Clientthis is the client side of the database-independent networking layer, and it is inextricably associated with the generic client at runtime (so you do not physically see this component as a separate library or class file etc). *[[OpenLink]] Request Brokerone of the server-side components that implements server-side [[OpenLink]] RPC functionality. This is the part of the Multi-Tier architecture that is responsible for session instantiation, configuration management, and overall system security. It is the heart and soul of the Multi-Tier component stack. *Database Agentanother server-side component that implements both the server-side [[OpenLink]] RPC functionality and the actual [[OpenLink]] Data Access functionality. This is the only database-specific component in the Multi-Tier component stack, it is also the set of interfaces implemented via the database vendor-provided CLI. The architectures of the Multi-Tier and Single-Tier drivers are different, but not as different as instinctively assumed. This is because the Single-Tier database specific driver and the Multi-Tier Database Agent share a common core. What does not change is they both implement the call-level interfaces albeit at different places. The call-level interfaces take the following forms: *Type A - C-based dynamic SQL interface that inextricably includes client and server networking components *Type B - C-based remote procedure calls (RPC) interface to the wire-protocol of the underlying database. This is a client-only interface that communicates directly with the remote database server. These interfaces are not typically available to third-party developers. To date the Open Source projects such as [[FreeTDS]] , [[MySQL]] , [[PostgreSQL]] , and Interbase are the only publicly accessible and freely available versions of such interfaces. *Type C - Generic bridges, these are ODBC, JDBC, OLE DB, and .NET providers that act as implementation proxies, such that bridging can be achieved in the manner depicted in the matrix below: [[OpenLink]] provides Multi-Tier Drivers built using the Type A, B, and C call-level interfaces formats, depending on what is publicly available to third-party developers by the vendors of the respective database engines. Please view your respective Data Access Mechanism for more information. | Platform Support | Support for client, server, and application server operating systems | | 32- and 64-bit components | Enables the development and utilization of 32- or 64-Bit DBMS independent applications. | Broad Operating System Support | Enables the development of ODBC compliant applications and the utilization of ODBC Drivers on non Windows platforms such as; Linux (x86, PPC, Itanium, Opteron), Mac OS X, Mac OS Classic, [[FreeBSD]] , Solaris, AIX, HP-UX, HP True64 UNIX, IRIX, Altix, SCO [[UnixWare]] , and others. | | Database Engine Support | Backend database engine support | | Broad backend Database Support | Enables DBMS independent application utilization and deployment across a vast array of industry leading DBMS engines that includes; Oracle (7.x - 10.x), SQL Server (6.x - 2005), DB2 (6.x - 8.x), Sybase (10.x - 12.x), Progress (7.x - 10.x), Ingres (6.4 - II family), Informix (5.x - 9.x & IDS 2000), [[MySQL]] , and [[PostgreSQL]] . | Performance | | Blistering Performance | Delivery of data access performance levels across ODBC, JDBC, ADO.NET and OLE DB that don't compromise viability of DBMS independent application development and deployment. | Network Aware Record Retrieval | Enabling the retrieval and insertion of multiple DBMS records in batches over the network with a minimal number of network hops. | | Security | | Rules Engine Based Security | Alignment and enforcement of data access policies across facets of enterprise IS infrastructure. This includes any combination of; users, user roles, applications, operating systems, databases, machine aliases, and networks. | Secure Data Transmission | Enables development and utlization of encrypted data transmission between DBMS independent applications and backend databases. | | Administration | Configuration and Management | | Zero Configuration for ODBC DSNs | Provides a Cross Platform implementation of the Rendezvous service discovery protocol. This enables the configuration of ODBC Data Sources Names (DSNs) to be completely server based with no client side configuration whatsoever. You simply pick a DSN configuration associated with your [[OpenLink]] Request Broker from combo-box hosted list of [[OpenLink]] Services. | Usability | | Network Ready | Enables usage of DBMS independent applications on any platform without installation of additional DBMS specific networking products. | Generic Drivers | Install one, as opposed to several, client components per data access standard and driver combination for your database independent applications. | | Administration | Configuration and Management | | Centralized Configuration & Management | A single point of focus when administering the data sources that serve the data access standards compliant applications. | Standards Compliance | | International character support | Enables the development and deployment of international applications that are independent of underlying database engine. | Standards Compliance | | ODBC 3.5 Compliance | Enables broad compatibility between an extensive collection of older and newer ODBC Applications across an array of platforms. | Performance | | Multithreaded | Enables exploitation of scalability benefits arising from the use of multiple CPUs or Clusters while developing or using DBMS independent applications. | Standards Compliance | | Supports Advanced Data Access API functionality | Enables the development and utilization of DBMS application with DBMS independent granularity that extends to challenging areas such as scalar function calls, dates and timestamps manipulation, outer join handling, and SQL stored procedure invocation etc. | Complete ODBC Scrollable Cursor Model Support | Provides ODBC compliant applications with a flexible model for handling sensitivity to data changes using the following scrollable cursor models: Forward-Only, Static, [[KeySet]] , Dynamic, and Mixed. | ----