数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

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


发布日期:2023年07月01日
 
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数据库驱动程序;然后再连接到数据库中间经过了多个环节如何其中任何一个环节出现了问题都可能导致数据库连接的故障万一真的出现了问题的话那么数据库管理员查找问题就会变得复杂的多

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

上一篇:在PB中如何实现数据模糊查询(三)

下一篇:数据库管理系统之近年来的发展趋势