PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 高级应用 >> 

常见php数据库抽象层介绍

常见php数据库抽象层介绍

来源:phperz.com  作者:phper  发布时间:2012-03-09
本章着重讲述PHP数据库抽象层与数据库抽象类。 目前,在PHP的网站及众多书籍中,很少讲到数据库抽象层,有的PHP开发者虽然已做了几年开发工作,但似乎也没有意识到它的存在。 很多人并不理解数据抽象的重要性,也不了解mysql或mysqli扩展与PDO的区别,PDO与ADODB又有什

本章着重讲述PHP数据库抽象层与数据库抽象类。
目前,在PHP的网站及众多书籍中,很少讲到数据库抽象层,有的PHP开发者虽然已做了几年开发工作,但似乎也没有意识到它的存在。

很多人并不理解数据抽象的重要性,也不了解mysql或mysqli扩展与PDO的区别,PDO与ADODB又有什么区别。
在本章中将讲述以下内容,通过学习,上面的问题都会迎刃而解。
  使用数据库抽象层的原因;
  数据库抽象层的发展;
  一些流行新抽象层的介绍;
  PDO数据库抽象层开发技术;
  ADODB数据库抽象层开发技术。

17.1什么是数据库抽象层


使用数据库抽象层,意味着当从一个数据库系统向另一个数据库系统迁移时,几乎不用更改太多的程序代码,如将MS SQL Server迁移到MySQL。

首先,代码规划必须规范,即整个系统使用同一个数据对象实例,并且使用同一个较好的数据库抽象层。如果有一天用户要求将Oracle切换到MySQL,则只需要改变系统的配置文件即可。

在当今工业领域中,每个数据库开发商如微软、Oracle、MySQL,都有自己的一套SQL标准,它们声称是按照ANSI SQL92标准而增加自己的特性,以达到垄断或占领市场的目的。

优秀的数据库抽象层,会根据我们现在使用的数据库自动调整一些SQL性能。当没有使用数据库本身特定的特性时,就不必更改太多的数据库连接和数据库SQL查询。

使用数据库抽象层的其他好处是:其性质、概念简化了复杂的任务。因此,我们不必学习某个数据库系统的全新特性,而只用一个标准的抽象层的代码特性即可。

虽然这是一种理想化,但随着技术的发展,相信数据库抽象层会为我们做更多的事。

目前,使用PHP进行不同的数据库系统开发,这些系统很不相同,而许多数据库抽象层在PHP的层次有所不同,但彼此使用方法相当,它的发展无疑会提高开发效率。

请看图17-1,观察有数据抽象层和没有数据抽象层的区别。
数据库抽象层的主要性能指标是速度,由于数据库抽象层是额外的代码层,因为面向不同的架构与体系,因此有的效率较高,有的则相对比较慢些。

如Metabase是PHP中较慢的一个数据抽象层,它使用C语言编写,因为它的设计与可移植性最高,而PDO和ADODB是当今世界最快的数据库抽象类。


        (b)使用数据抽象层的PHP程序架构
图17-1
如果您非常关注系统的效率和性能,则可以按自己的基准,设置模拟环境,编写代码,测试每个数据库抽象层(类)的性能。


17.2常用的数据库抽象层


目前,有4种主流数据库抽象层:Metabase、PEAR:DB、PDO及ADODB。
从目前的应用来看,ADODB和PEAR:DB最受欢迎(因为PEAR是被捆绑在PHP目录中的,但PEAR:DB的效率问题一直引人诟病)。
从PHP 5开始出现的PDO及ADODB(其中包括PDO、MySQLi的底层实现)已经逐渐普及。
也有一些更新的抽象类值得一用,PEAR:MDB(现在的版本名称为PEAR:MDB2)已经将Metabase和PEAR:DB合并,并且效率较之从前有很大的提高。
我们先对现今常用的数据库抽象类的历史及它们的简要特点进行一一介绍。

17.2.1 PEAR:DB

PEAR:DB自2001年以来,存在于PEAR中,由于PEAR默认绑定在PHP目录中,基于这些原因,成为比较流行的数据库抽象层。PEAR:DB所支持的数据库系统包括:
  Firebird
  Interbase
  Informix
  mSQL
  MS SQL Server
  MySQL
  Oracle
  ODBC
  PostgreSQL
  SQLite
  Sybase
PEAR:DB的下载地址:http://pear.php.net/package/DB/download。

17.2.2 ADODB

ADODB(Active Data Objects DataBase),起源于2000年,到目前为止仍然在增强与更新,发展至今仍然是一个热门的数据抽象层。
ADODB的开发初衷,源于很多从Microsoft ASP或ADO转过来的工程师,很多用法与MS ADO非常相像,目前使用ADODB的流行软件,例如egroupware、Mambo等均采用ADODB。
ADODB的数据库封包程序库提供了共通的应用程序界面来跟所有支持的数据库沟通,值得一提的是,它除了支持PHP,还支持Python语言。
ADODB提供很多实用的方法,使它超越了一个抽象层的功能,如具有表格化和数据库缓存等非常好的特性。ADODB支持的数据库系统包括:
  Access
  ADO
  DB2
  Firebird
  FoxPro
  FrontBase
  Informix
  Interbase
  LDAP
  MS SQL Server
  MySQL
  ODBC
  Oracle
  PostgreSQL
  SAP DB
  SQLite
  Sybase

另外,因为ADODB的逐渐发展,特性增强,使得本身体积过大,为此ADODB开发团队还提供了基本功能的ADO Lite。
有关ADODB的使用和开发方法,我们会在17.4节重点介绍。

17.2.3
Metabase

Metabase由Manuel Lemons开发。Metabase已被誉为慢抽象层,但是它支持PHP的全部版本,也是目前提供最大的可移植性设计的唯一抽象层。目前支持的数据库系统包括:
  Access
  Informix
  Interbase
  mSQL
  MS SQL Server
  MySQL
  ODBC
  Oracle
  PostgreSQL
  SQLite
下载地址:http://www.phpclasses.org/browse/package/20.html#download。

17.2.4 MDB

SCMV-MDB的性能介于和融合PEAR:DB、Metabase数据库抽象层之间,它的初衷就是试图改善性能和最大可移植性。稳定版于2004年4月发布。
MDB目前支持的数据库系统包括:
  Firebird
  Frontbase
  Interbase
  MS SQL Server
  MySQL
  Oracle
  PostgreSQL
  Querysim
PEAR:MDB下载地址:http://pear.php.net/package/MDB/download。

17.2.5 MDB2

PEAR:MDB2把Metabase/PEAR:DB合并,并在SCMV-MDB的基础上进一步巩固,以及去除不必要的冗余工作。另外,它还整合了与PDO的接口。
PEAR:MDB2目前支持的数据库系统包括:
  Firebird
  Frontbase
  Interbase
  MS SQL Server
  MySQL
  Oracle
  PostgreSQL
  Querysim
  SQLite
PEAR:MDB2下载地址:http://pear.php.net/package/MDB/download。

17.2.6 Creole

Creole是基于Java的JDBC技术,在某种程度上是PEAR:DB、PEAR: MDB2和ADODB的结合体。
Creole是PHP 5上较新的数据抽象层,与PHP 4不兼容。Creole提供充分的面向对象开发的API,以及PHP 5的异常处理机制。
Creole目前支持的数据库系统包括:
  MySQL
  MS SQL Server
  Oracle(in progress)
  PostgreSQL
  SQLite
Creole库的下载地址:http://creole.phpdb.org/wiki/index.php?node=2。

17.2.7 PDO

PDO数据抽象层是随着PHP 5.1推出的,PDO使用C语言编写,因为是与PHP同级的API,所以它的执行速度快。PDO目前支持的数据库系统包括:
  Firebird
  FreeTDS
  Interbase
  MySQL
  MS SQL Server
  ODBC
  Oracle
  PostgreSQL
  SQLite
  Sybase
PDO必须运行在PHP 5.1及以上版本上。本章会重点讲述PDO的编写方法。

17.2.8 PHPLib

到目前为止,PHPLib已经使用了近6年,只是因为它曾经是非常受欢迎的数据库类,它在设计时并不是一个数据库抽象层,而只用于概括连接串、查询和处理错误和封装。
因为它小巧方便,加载速度快,现在使用这个类作为数据库层查询的PHP项目也为数不少。PHPLib的官方网站为:http://phplib.sf.net。技术不分高低,只分了解先后!PHPChina是个互助友爱的大家庭,谁都可以参与!
  


延伸阅读:
PHP 5 数据对象 (PDO) 抽象层与 Oracle
PEAR MDB 数据库抽象层 ?? 一次编写?随处运行
pdo、pdo_mysql、mysqli扩展的启用方法
php数据库抽象类PDO和ADODB简介
Tags: php   数据库抽象层  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号