JDBC数据库驱动程序种类及选择

开发 后端 数据库运维
JDBC数据库驱动程序主要有四个类型。这个四个类型的驱动程序各有各的特点,并不能够说哪一个最好。数据库管理员需要结合企业的实际情况,才能够选择一个合适的数据库驱动类型。

现在目前数据库驱动程序市场上,JDBC数据库驱动程序主要有四个类型。这个四个类型的驱动程序各有各的特点,并不能够说哪一个最好。数据库管理员需要结合企业的实际情况,才能够选择一个合适的数据库驱动类型。下面笔者就JDBC数据库驱动程序,来谈谈这个四个类型的JDBC各具有什么样的特点,适合在什么样的情况下使用。

类型一:厂商提供专属JDBC驱动程序

有些厂商如Oracle或者SYBASE,这些数据库厂商他们自己开发了一些JDBC驱动程序。这个类型的JDBC驱动程序会将JDBC调用直接转换为关系数据库本身使用的通信协议。换一句话说,应用程序客户端可以直接与数据库创建连接。这种类型的JDBC驱动程序主要有如下几个特点。

一是JDBC驱动程序是数据库厂商提供的,所以应用程序可以直接跟数据库进行连接,其执行性能要比其他类型的JDBC数据库驱动程序要好,比ODBC数据库驱动程序也要好。目前已经有很多数据库厂商提供专属的JDBC驱动程序,如甲骨文公司的Oracle数据库产品,如微软公司的SQL Server等等。

二是往往这类JDBC驱动程序全部是由JAVA程序开发的,而不是有C语言开发的。为此这类驱动程序往往跨平台的性能比较好,可以在多个操作系统平台上运行。为此如果企业在Linux等非微软的操作系统上部署数据库应用,那么采用这种类型的数据库驱动程序是一个明智的选择。

三是这类驱动程序缺乏弹性。由于是数据库厂商自己提供的专属驱动程序,为此往往只适用于自己的数据库系统,甚至只适合某个版本的数据库系统。如果后台数据库换了一个或者版本升级了,则就有可能需要更换数据库驱动程序。这一个缺陷,是限制这个类型的数据库驱动程序应用的最大障碍之一。不过根据笔者的经验,如果企业的数据库应用主要是在企业局域网内部使用,则这个问题不会很大。因为此时企业往往不会随意更换数据库系统,或者对数据库系统进行升级。为此也就会不会因为这个数据库驱动程序弹性不好而给日后的工作带来麻烦。

为此笔者建议,如果企业的数据库应用相对稳定,那么在数据库开发或者部署的时候,最好使用厂商提供的专属JDBC驱动程序。因为这个类型的数据库驱动程序其与数据库之间的连接最直接,其执行性能最好。不过其前提是数据库厂商提供了这种类型的JDBC驱动程序。据笔者了解,像开源的MySQL数据库好像还没有提供专属的JDBC驱动程序。如果数据库管理员在MySQL数据库平台上部署应用的话,则即使想采用专属JDBC数据库驱动程序也是行不通的。此时可能管理员要采用其他类型的JDBC数据库驱动程序。

类型二:三层式架构的JDBC驱动程序。

这种三层式架构的JDBC驱动程序主要采用间接连接方式来连接数据库。首先JDBC数据库驱动程序会先将JDBC函数调用翻译成与数据库无关的网络通信协议。其次由一个叫做中介层服务器的部件会充当翻译家的角色,会对这些报文进行翻译。最后JDBC才把这部分内容转换成相对应的关系型数据库通信协议。也就是说,在客户端与数据库服务器之间有一个中介服务器的角色,客户端与服务器之间的通信需要通过这个中介服务器来进行。

这个类型的JDBC数据库驱动类型有如下几个特点。

一是提供了比较好的扩展性。如当某些原因下需要更换后台数据库的时候,只需要调整中介层与数据库之间的JDBC驱动程序即可。而对于前端的应用程序的负面影响可以降至到最低。在大部分情况下,前端的应用程序基本上不需要调整;有些只需要重新指定所采用的后台数据库即可。

二是这个JDBC驱动程序也是百分之百利用JAVA语言进行编写的。为此如果采用的应用程序开发平台也是JAVA的话,那么无疑他们之间的兼容性会很好。所以如果采用的是JDeveloper等JAVA开发平台的话,这种类型的数据库驱动程序能够为数据库开发人员提供比较稳定的开发平台。

三是在性能上,其不甚理想。由于采用三层式架构的JDBC数据库驱动程序,其需要通过中介服务器角色来访问数据库。虽然这种架构提供了比较高的扩展性,但是其执行性能的话就受到了影响。在同等条件下,这种类型的数据库驱动程序其执行性能没有专属JDBC驱动程序好。鱼与熊掌不能够兼得,数据库开发人员需要在性能与扩展性上做出一个艰难的抉择。

类型三:客户端函数库类型的数据库驱动程序。

通常情况下数据库软件会提供一种叫做客户端函数库的组件。这种类型的数据库驱动程序就是建立在这个函数库之上的。此时系统会先将JDBC调用转换成数据库的客户端函数库对应的应用程序接口(这个步骤在客户端上完成),然后再同数据库进行连接。这种方式跟三层式架构的JDBC驱动程序不同。前者是直接连接数据库的,而后者则是以间接的方式(中间有中介服务器角色)来连接数据库。对于这种类型的数据库驱动程序有如下几个特点。

一是创建于各数据库特有的客户端函数库之上,为此其执行性能比较好。通常情况下各个数据库厂商会根据自己数据库软件的特点,开发客户端函数库。他们在开发这个函数库的同时,本身就考虑到了性能与优化方面的问题。而且,这种类型的数据库驱动程序又是直接连接数据库的,为此从性能上考虑,其要比三层式架构的JDBC驱动程序要好的多。但是反过来说,其执行性能在同等条件下仍然赶不上第一种专属JDBC驱动程序。

二是其兼容性差。如果数据库管理员采用这个类型的数据库驱动程序的话,需要在客户端上安装特定的软件(其中包含有客户端函数库)。而且这个软件往往是数据库厂商提供的。不同厂商的数据库软件其客户端函数库是不同的。为此如果需要更换数据库系统的话,此时需要同时更新各个客户端的函数库。当数据库用户比较多的时候,这是非常耗时的一项工作。

三是其不是百分之百的利用JAVA语言编写。由于客户端函数库中的内容很多都是跟数据库的编程平台相关。为此这种类型的JDBC驱动程序不可能百分之百都有JAVA语言来实现。由于这方面的限制,为此其跟JAVA应用程序开发平台的兼容性就没有以上两个类型的驱动程序那么好了。而且能够提供这种类型的数据库驱动程序的厂商也不是很多。如好像微软的SQL SERVER等数据库系统也没有提供这方面的JDBC驱动程序。所以从应用层面考虑,这种数据库驱动类型是使用的最少的。

类型四:桥接型的JDBC驱动程序。

有些应用系统,以前是在ODBC数据库启动程序上面开发的;而现在数据库管理想在JDBC数据库驱动程序开发应用程序,那该怎么办呢?数据库开发人员是否需要推翻原有的架构进行重新开发呢?答案是否定的,也是肯定的。这个答案或许有点前后矛盾的感觉。否定说的是数据库管理员不用全部推翻原先的架构,而是可以原先的架构跟新的架构并存。肯定的是为了后续应用程序性能与稳定性的考虑,在合适的时候数据库开发人员最好能够慢慢的对原先的开发架构进行调整。不过在这个调整的过程中,新旧两个开发架构是可以同时采用的。另外有些数据库系统可能没有提供以上三种类型的任何一种JDBC数据库启动程序。如使用用户比较多的ACCESS数据库系统。如果JAVA程序开发人员需要在这个数据库上开发应用软件的话,可能就需要用到这个桥接型的JDBC驱动程序。这个类型的数据库驱动程序有如下几个特点。

一是其保留了ODBC数据库驱动程序,把相关的SQL语句通过JDBC驱动程序转换为ODBC数据库驱动程序可以理解的语句。应用这个数据类型的时候,数据库管理员不用考虑数据库底层的连接问题。同时如果应用系统原先是在ODBC的架构下开发的,还可以保留原先的架构。

二是其维护比其他类型的驱动程序都要麻烦与复杂。一方面由于这种类型的驱动程序仍然需要用到ODBC,所以在客户端上还需要部署有ODBC驱动程序。另一方面,系统先调用JDBC驱动程序;然后再通过JDBC驱动程序调用ODBC数据库驱动程序;然后再连接到数据库。中间经过了多个环节。如何其中任何一个环节出现了问题,都可能导致数据库连接的故障。万一真的出现了问题的话,那么数据库管理员查找问题就会变得复杂的多。

总之笔者建议数据库管理员最好采用第一、二种数据库驱动程序;如果这两种驱动程序不支持的话,那么就采用第三种驱动程序。对于第一种驱动程序数据库管理员要慎用,除非数据库管理员对自己的能力相当的自信。

 

【编辑推荐】

  1. JDBC技术发展历程以及技术概览
  2. JDBC与JSP简单模拟MVC三层架构
  3. 在JDBC设计中加速JSP访问数据库
责任编辑:佚名 来源: IT专家网
相关推荐

2011-03-17 14:19:23

JDBC数据库驱动程序

2009-07-06 18:17:46

JDBC驱动程序

2009-06-15 14:18:00

netbeans配置JDBC驱动程序

2009-07-20 18:01:38

Oracle JDBC

2009-07-15 15:30:12

MyEclipse J

2009-07-16 13:26:43

DB2 JDBC驱动

2009-09-04 10:10:33

Visual Basi

2009-07-10 17:13:29

Jython的安装JDBC驱动程序Jython

2009-07-08 18:20:21

JDBC驱动

2009-08-12 18:20:39

C#事件驱动程序

2017-03-03 08:40:32

2011-01-10 18:21:38

linux编写程序

2010-01-07 13:27:22

Linux驱动程序

2009-07-09 15:41:15

JDBC连接MySQL

2022-03-08 08:00:00

开源开发数据库

2009-07-16 17:22:56

JDBC数据库编程

2009-07-06 17:23:34

JDBC连接数据库

2020-07-20 08:00:29

数据库

2010-04-26 12:19:28

Oracle 数据库

2021-12-06 07:47:36

Linux 驱动程序Linux 系统
点赞
收藏

51CTO技术栈公众号