最快的JDBC驱动程序

最快的JDBC驱动程序,jdbc,driver,Jdbc,Driver,我在这里感到很困惑 JDBC驱动程序有4种类型: JDBC-ODBC网桥驱动程序(类型1) JDBC本机API(类型2) JDBC Net纯Java(类型3) 本机协议,纯Java驱动程序(类型4) 但是如果您在web上搜索最快的JDBC驱动程序,答案是: JDBC Net纯Java驱动程序(类型4) JDBC Net纯Java不是第3类驱动程序吗?为什么答案将jdbcnetpurejava和type4放在一起?非常感谢 您的混淆源于这样一个事实:这些名称都不是官方名称,JDBC规范中定义的官方

我在这里感到很困惑

JDBC驱动程序有4种类型:

  • JDBC-ODBC网桥驱动程序(类型1)
  • JDBC本机API(类型2)
  • JDBC Net纯Java(类型3)
  • 本机协议,纯Java驱动程序(类型4)
  • 但是如果您在web上搜索最快的JDBC驱动程序,答案是: JDBC Net纯Java驱动程序(类型4)


    JDBC Net纯Java不是第3类驱动程序吗?为什么答案将jdbcnetpurejava和type4放在一起?非常感谢

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

    JDBC 4.3规范将类型定义为:

    9.1司机类别 JDBC驱动程序有许多可能的实现。这些 实现分类如下:

    • 类型1—将JDBCAPI实现为与另一个数据访问API(如ODBC)的映射的驱动程序。这种类型的驱动程序通常是 依赖于本机库,这限制了它们的可移植性。这个 JDBC-ODBC网桥驱动程序是类型1驱动程序的一个示例
    • 类型2—部分用Java编程语言编写,部分用本机代码编写的驱动程序。这些驱动程序使用本机客户端 特定于它们所连接的数据源的库。再一次, 由于本机代码,它们的可移植性受到限制
    • 类型3-使用纯Java客户端并使用独立于数据库的协议与中间件服务器通信的驱动程序。这个 然后,中间件服务器将客户机的请求与数据进行通信 来源
    • 类型4—纯Java驱动程序,通常使用网络协议或文件I/O与特定数据源通信。客户 直接连接到数据源
    这些类型都不一定是最快的。考虑到从java代码到本机代码以及从本机代码到本机代码的转换都没有开销,对于相同的数据库系统来说,类型4驱动程序可能是最快的。类型3可能是最慢的,因为您从Java代码转到远程中间件服务器,然后该服务器将转换为特定于数据库的协议(可能使用另一个JDBC驱动程序!)到实际的数据库。根据我的经验,3型驾驶人非常罕见

    作为Type4最快的反例,我维护了Firebird的JDBC驱动程序Jaybird。Jaybird提供了一个类型4和两个类型2实现(一个使用本机客户端库连接到远程Firebird服务器,另一个提供嵌入Java进程中的Firebird)

    一般来说,对于本地主机和远程连接来说,其类型4驱动程序是最快的,而Jaybird类型2“嵌入式”驱动程序通常是最快的,因为它将在Java进程中托管数据库服务器,而不考虑网络或进程间通信的开销。但是,在这种情况下,甚至不可能使用类型4驱动程序(使用Firebird Embedded需要加载并与本机库通信),因此这是一个错误的比较

    JayBrand 2型“本地”驱动程序通常与JayBrand类型4相同或稍慢,但对于同一主机上的FielBee服务器的连接可能更快,因为如果主机是Windows,则它可能使用稍快的IPC协议而不是TCP/IP用于某些连接字符串。 仅仅就“哪种类型最快”告知您的决定无论如何都是无用的,因为一些数据库供应商只提供类型4,或者类型2和类型4,而例如,类型1在Oracle从Java中删除JDBC-ODBC桥接器后几乎已经死了。第三类是相当罕见的,所以你无论如何也不可能找到它


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

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

    JDBC 4.3规范将类型定义为:

    9.1司机类别 JDBC驱动程序有许多可能的实现。这些 实现分类如下:

    • 类型1—将JDBCAPI实现为与另一个数据访问API(如ODBC)的映射的驱动程序。这种类型的驱动程序通常是 依赖于本机库,这限制了它们的可移植性。这个 JDBC-ODBC网桥驱动程序是类型1驱动程序的一个示例
    • 类型2—部分用Java编程语言编写,部分用本机代码编写的驱动程序。这些驱动程序使用本机客户端 特定于它们所连接的数据源的库。再一次, 由于本机代码,它们的可移植性受到限制
    • 类型3-使用纯Java客户端并使用独立于数据库的协议与中间件服务器通信的驱动程序。这个 然后,中间件服务器将客户机的请求与数据进行通信 来源
    • 类型4—纯Java驱动程序,通常使用网络协议或文件I/O与特定数据源通信。客户 直接连接到数据源
    这些类型都不一定是最快的。考虑到从java代码到本机代码以及从本机代码到本机代码的转换都没有开销,类型4驱动程序可能是最快的<