词条 | 数据库抽象层 |
释义 | 目前,在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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。