当前位置:中国站长下载文章中心数据库区ACCESS → PEAR MDB数据库抽象层一次编写—随处运行

PEAR MDB数据库抽象层一次编写—随处运行

减小字体 增大字体 作者:佚名  来源:不详  发布时间:2006-5-9 16:04:46
接口。那么第一步是列出所有你程序当前使用的 pear db 函数。然后看看 wrapper 从中找出任何 api 上的区别。有两个你要注意的关键区别:结果集不再是对象而且所有的允许你传递结果集的数据类型的查询方法将导致参数顺序上的少许改变。第一个区别意味着不能再结果对象上调用获取函数。 $result = $db->query($sql);
$row = $result->fetchrow();
你现在必须调用 mdb 对象来进行获取: $result = $mdb->query($sql);
$row = $mdb->fetchrow($result);
第二个区别通过观察 wrapper 可以轻易的被解决。如你再 wrapper 中能看到的,你可以再 mdb 期望得到结果集的数据类型的地方简单地传递 null。现在,你地程序应当能够使用 mdb。当然,你现在没有真正得到了 mdb 地高级特性优点的益处。这最有可能的是需要对你当前的 schema 进行一些改动。管理器能够尝试反向地从已经存在的中获取 xml schema 文件。一个非常简单的前端可以在 mdb 包中找到:reverse_engineer_xml_schema.php 脚本。极有可能你将需要手动修正产生的 xml schema 恩见,但是它将给你一个很好的开始。 如果你想要把你已经存在的程序从 metabase 移植到 mdb 你将必须改动所有的函数调用。查看 metabase wrapper 需要改动什么将变得非常明显。如果你知道正则表达式你可能能够完成大部分这样的替换工作。无论如何,你应当向前并且运行你原来喜爱的高级抽象特性但是现在用的是 mdb。你可能注意得到的是函数名变得更加简短了。如果你作一些性能测试,你也将看到可观的性能改善。
那么 mdb 将来会是什么样子呢? 本文发表时 mdb 可能已经不再是原来的 1.0 release 了。在原来的 mysql 和 postgresql 驱动之后,mdb还将有一个 odbc 驱动以及可能的更多的驱动。这是 mdb 开发过程中关注的关键区域之一。一旦 mdb 在驱动方面跟上了 pear db,它很有可能成为 pear 框架中标准的抽象层。 但是还有另外一个开发中的关键领域:mdb_frontend 工程。mdb_frontend将成为基于 mdb 和 mdb 管理器的 phpmyadmin。有了这个工具,你将能够浏览储存在 mdb 支持的 rdbms 中的。mdb_frontend 将同时显示原生和 mdb 数据类型。模拟的特性比如 mysql 中的序列将被隐藏。用户将仅仅看到一个序列列表而不是一个储存序列指的表,而在 mysql 中这就是序列是如何被模拟的。而且 mdb_frontend 将帮助移植已经存在的来符合 mdb 预期使用的原生数据类型。它还将帮助创建和更新 xml schema 文件。一些初期的工作已经完成了但是很多工作需要在公开发布之前被添加。 驱动和 mdb_frontend 是当前开发的所有焦点,在 mdb 中还有许多用户可能需要的:像 bulk 获取 lob 域的集成,其他人可能需要外部和主键支持。如一直以来的那样如果你参与测试和实现,开源的东西将加快很多。但是我也很感谢像特性需求合阳的反馈。
一些文后的思考 在数月的艰辛工作之后,mdb 正在当前的 pear db 和 metabase 用户中获得认可。我还希望当前还没有被其他抽象层说服的用户意识到 mdb 给他们的好处。当然,还是有许多程序需要对 rdbms 进行特殊剪裁,对于这种情况像 mdb 这样的工具仅仅是增加了不必要的额外负担和限制。总的来说,我非常高兴我们在我们的公司中作出领导 mdb 开发的决定。在起初,我对尝试同时取悦 pear db 和 metabase 的用户但是结果可能到处不讨好多少有些担心。另外一个关心的来源是 php 社区是否将帮助其开发。我非常高兴 php 社区来了并且帮助撰写驱动以及 mdb 的核心。因而我们认为这个项目是一个极大的成功。我们还一并相信 mdb 将得到更大的改进。而且我们对帮助 php 变得更好感到高兴。 关于作者
lukas smith 是 pear db 的主要作者。它积极地给多个 php 开远项目进行贡献并且是专注于 php 开发的 backendmeida 公司的建立者。
链接 和 文献 pear mdb homepage: http://pear.php.net/package-info.php?package=mdb
pear mdb documentation: http://www.backendmedia.com/mdb/docs/
pear mdb sample script: http://cvs.php.net/co.php/pear/mdb/mdb_test.php
pear db homepage: http://pear.php.net/package-info.php?package=db
metabase homepage: http://www.phpclasses.org/mirrors.html?page=%2fbrowse.html%2fpackage%2f20.html
simple benchmark: http://freshmeat.net/screenshots/30313/   

上一页  [1] [2] [3] [4] [5]