请输入您要查询的百科知识:

 

词条 数据库抽象层
释义

目前,在PHP的网站及众多书籍中,很少讲到数据库抽象层,有的PHP开发者虽然已做了几年开发工作,但似乎也没有意识到它的存在。很多人并不理解数据抽象的重要性,也不了解mysql或mysqli扩展与PDO的区别,PDO与ADODB又有什么区别。在本章中将讲述以下内容,通过学习,上面的问题都会迎刃而解。

PHP数据库抽象层与数据库抽象类

Ø 使用数据库抽象层的原因;

Ø 数据库抽象层的发展;

Ø 一些流行新抽象层的介绍;

Ø PDO数据库抽象层开发技术;

Ø ADODB数据库抽象层开发技术。

1 什么是数据库抽象层

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

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

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

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

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

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

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

请看图17-1,观察有数据抽象层和没有数据抽象层的区别。

数据库抽象层的主要性能指标是速度,由于数据库抽象层是额外的代码层,因为面向不同的架构与体系,因此有的效率较高,有的则相对比较慢些。

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

图17-1

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

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

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合并,并且效率较之从前有很大的提高。

3 数据库抽象层ADODB-实例

require ‘adodb/adodb.inc.php’;

// Connect to the database

$conn = &ADONewConnection(‘mysql’);

$conn->connect(‘localhost’,'phpgems’,'phpgems1′,’phpgems’);

// Send a SELECT query to the database

$rs = $conn->execute(‘SELECT flavor, price, calories FROM _

ice_cream’);

// Check if any rows were returned

if ($rs->RecordCount() > 0) {

print “<table>”;

print “<tr><TH>Ice Cream Flavor</TH><TH>Price per Serving</TH><TH>Calories per Serving</TH></TR>”;

// Retrieve each row

while (! $rs->EOF) {

print “<tr><TD>{$rs->fields[0]}</TD><TD>{$rs->fields[1]}</TD><TD>{$rs->f ields[2]}</TD></TR>n”;

$rs->MoveNext();

}

print “</table>”;

} else {

print “No results”;

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/16 12:53:03