最快的 JDBC driver

The fastest JDBC driver

我在这里很困惑..

有4种JDBC driver:

  1. JDBC-ODBC 桥 Driver(类型 1)
  2. JDBC-Native API(类型 2)
  3. JDBC-Net 纯 Java(类型 3)
  4. Native-protocol, 纯 Java driver (类型 4)

但是如果你在网上搜索最快的 JDBC driver,答案是: JDBC净纯Javadriver(类型4)

JDBC-Net不就是纯Java类型3driver吗?为什么答案把 JDBC-Net pure Java 和 type 4 放在一起?非常感谢!

你的困惑源于这样一个事实,即这些名称中的 none 是官方名称,JDBC 规范中定义的官方名称只是“Type n" 与 n 是 1、2、3 或 4。看起来您未命名的来源试图将摘要名称附加到类型,而这些名称只会导致混淆,因为您的不同的来源使用不同的类型名称。

JDBC 4.3 规范将类型定义为:

9.1 Types of Drivers

There are many possible implementations of JDBC drivers. These implementations are categorized as follows:

  • Type 1 — drivers that implement the JDBC API as a mapping to another data access API, such as ODBC. Drivers of this type are generally dependent on a native library, which limits their portability. The JDBC-ODBC Bridge driver is an example of a Type 1 driver.
  • Type 2 — drivers that are written partly in the Java programming language and partly in native code. These drivers use a native client library specific to the data source to which they connect. Again, because of the native code, their portability is limited.
  • Type 3 — drivers that use a pure Java client and communicate with a middleware server using a database-independent protocol. The middleware server then communicates the client’s requests to the data source.
  • Type 4 — drivers that are pure Java often using a network protocol or File I/O to communicate with a specific data source. The client connects directly to the data source.

None 这些类型必然是最快的。考虑到从 java 代码到本机代码再返回的开销不足,对于 相同的数据库系统 ,Type 4 驱动程序可能是最快的。类型 3 可能是最慢的,因为您从 Java 代码转到远程中间件服务器,然后该服务器将转换为数据库特定协议(可能使用另一个 JDBC 驱动程序!)到实际数据库。根据我的经验,第 3 类驱动程序非常罕见。

作为最快的 counter-example 类型 4,我维护 Jaybird,即 Firebird 的 JDBC 驱动程序。 Jaybird 提供了一个 Type 4 和两个 Type 2 实现(一个使用本机客户端库连接到远程 Firebird 服务器,一个在您的 Java 进程中提供 Firebird Embedded)。

一般来说,它的 Type 4 驱动程序对于本地主机和远程连接是最快的,Jaybird Type 2 'Embedded' 驱动程序通常是最快的,因为它将在 Java 进程中托管数据库服务器,放弃网络或 inter-process 通信的开销。然而,在那种情况下甚至不可能使用 Type 4 驱动程序(使用 Firebird Embedded 需要加载并与本地库通信)所以这是一个错误的比较。

Jaybird Type 2 'native' 驱动程序通常与 Jaybird Type 4 相当或稍慢,但连接到同一主机上的 Firebird 服务器可能会更快,因为它可能使用稍快的如果主机是 Windows.

,则某些连接字符串的 IPC 协议而不是 TCP/IP

纯粹根据 'which type is the fastest' 告知您的决定无论如何都是无用的,因为一些数据库供应商仅提供 Type 4,或 Type 2 和 Type 4,而例如 Type 1 自从 Oracle 放弃以来几乎已经死了来自 Java 的 JDBC-ODBC 桥。类型 3 非常罕见,因此您无论如何都不太可能找到它。

一般来说,如果可用,我建议选择类型 4,因为它通常最麻烦(例如,类型 2 需要正确安装本机库、配置您的应用程序以查找本机库等)。但是,有时 Type 2 驱动程序可能会提供其他方式无法提供的功能(例如 Firebird Embedded)。