Consultor Eletrônico



Kbase 20600: What are the JDBC driver types and what types does Progress provide?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/16/2008
Status: Verified

GOAL:

What are the JDBC driver types?

GOAL:

What type of JDBC driver does Progress provide?

GOAL:

Is there a Type 4 JDBC driver written in Java for Progress database?

GOAL:

Is there a Type 4 JDBC driver written in Java for Progress without dlls or shared libraries?

GOAL:

Does progress provide a type 4 JDBC driver?

FIX:

There are four types of JDBC drivers:
- Type 1 driver, the JDBC-ODBC bridge:

The bridge provides JDBC access via most ODBC drivers. The client-side Java applet (or application) is written using the JDBC API. The bridge converts JDBC calls into ODBC calls and passes them to the appropriate ODBC driver for the database.

The main advantage of this bridge is that applications can easily access databases from multiple vendors once they have the ODBC driver. However, this type of database connectivity involves considerable overhead and complexity because calls must go from JDBC, to the bridge, to the ODBC driver, and finally from ODBC to the native client API to the database.

In addition, native code must be pre-installed on any client that directly uses the JDBC-ODBC bridge to implement the API calls.

The architecture of a Type 1 driver is as follows:
+-------------+
| Application |
| Program |
+-------------+
|
+-------------+
| JDBC method |
| library |
+-------------+
|
+-------------+
|ODBC function|
| library |
+-------------+
|
| (network or direct connection)
|
+-------------+
| Database |
| |
+-------------+

- Type 2 driver, a native-API partly-Java driver:

The Type 2 driver converts JDBC calls into calls on the client API for Progress. These drivers are usually written in some combination of Java and C/C++, since the driver must use a layer of C to make calls to the vendor libraries.

Like the Type 1 driver, this style of driver requires that some binary code be loaded on each client machine. But because the ODBC translation layer is removed, the type 2 driver is faster.

The architecture of a Type 2 driver is as follows:
+-------------+
| Application |
| Program |
+-------------+
|
+-------------+
| JDBC method |
| library |
+-------------+
|
+-------------+
|DB primitive |
| library |
+-------------+
|
|(network connection)
|
+-------------+
| Database |
| |
+-------------+

- Type 3 driver, a network-protocol all-Java driver:

Type 3 translates JDBC calls into DBMS-independent network protocol, which is then translated to a DBMS protocol by a server. This net server middle is able to connect its all Java clients to many different databases.

The specific protocol used depends on the vendor. The overall architecture consists of three tiers; the JDBC client and driver, middleware, and the database(s) being accessed. A major disadvantage of network-centric drivers is
that the server component is proprietary middleware (each vendor uses their own middleware for communication over the network).

The architecture of a Type 3 driver is as follows:
+-------------+
| Application |
| Program |
+-------------+
|
+-------------+
| JDBC method |
| library |
+-------------+
|
| (network connection)
|
+-------------+
|Listener and |
| query proc. |
+-------------+
|
+-------------+
| Database |
| |
+-------------+

- Type 4 driver, a native-protocol all-Java driver:

A type 4 driver converts JDBC calls into the network
protocol used by DBMS's directly. These drivers can be
written entirely in Java. Because these drivers translate
JDBC directly into the native protocol without the use of
ODBC or native APIs, they can provide for very high
performance database access.

The architecture of a Type 4 driver is as follows:
+-------------+
| Application |
| Program |
+-------------+
|
+-------------+
| JDBC method |
| library |
+-------------+
|
| (network connection)
|
+-------------+
| Database |
| |
+-------------+

The JDBC driver provided by Progress until OpenEdge 10.0B is a type 2 driver, dll or shared libraries are required.
thus consisting both Java class files (jdbc.zi.p) and native libraries (procli92.dll,so,sl,a).
Starting on OpenEdge 10.1A the JDBC driver is a type 4 driver..