以下的文章主要是描述麦吉尔大学在Oracle开发和校友关系部是如何使用 PHP 与Oracle 在某些网上支持多达, 16 万名用户,在麦吉尔大学(位于加拿大魁北克省的蒙特利尔)的研发和校友关系部,我们正在使用行业级的 PHP 应用程序和 Oracle9i。
将范围广泛的多层次服务转移到 Web 上,这些服务由 200 到 300 名受薪的和志愿的工作人员以及多达 16 万名校友和捐赠人使用。
预计该程序在主要的电子广播时段每小时将会接纳数万名用户。我们利用 Oracle 功能强大的行级安全特性以及 PHP 的高性能和快速开发平台来完成这一工作。本文将探讨以下方面:
背景
我们为什么选择 PHP、Oracle9i、Apache 和 Linux
应用程序的结构
安全性
同步
学到的教训以及对Oracle开发人员的建议。
背景
我们的机构面临着很多机构所面临的问题:
中央数据库应用程序
散乱而繁琐
属于关键任务并且不可替代
难以更改或者几乎无法更改
依赖生产商的版本升级进行更改
出于安全和成本的考虑,不能访问互联网
大量半独立状态的辅助数据库和 Web 站点
与中央数据库没有充分同步
对于适当的安全性和升级维护而言,数量过多
为最终用户提供过多的 ID 和口令
没有遵循已确立的机构业务惯例
越来越多地要求
通过基于 Web 的 IT 工具获得机构的高效率和生产率
易于使用
在功能间同步数据
可伸缩性
灵活性
功能的扩展性
加强 IT 和一般业务惯例的应用
那么,我们正在如何应对这些挑战呢?
我们已经启动了安全的、基于 Web 的模块化数据库应用程序Oracle开发的第一阶段。它以 PHP 和 Oracle9i编写而成,在替代卫星应用程序及 Web 站点之后,必将为用户提供更好的服务。它对公共数据进行同步,并在总体上以及数据方面加强最佳业务惯例的应用。
该应用程序称为 Companion,因为它增加了反向中央数据库的功能,准确地报告中心数据,并在出现新数据时将其回送。
它包含超过 100 个表,这些表被分为 6 个模块。最长的表大约有一百万行。有些表有 20 到 30 列。全部用途是由用于行级安全性的 Oracle 细粒度访问控制 (FGAC) 和虚拟专用数据库 (VPD) 构成的。
Companion 应用程序包含三个域,而且能够容纳更多的域,这些域全都安全地访问同一 PHP/Oracle 应用程序中的相同数据。这些域包括以下内容:
工作人员内联网
为 200 到 300 名工作人员提供的内联网,包含人们在许多工作人员内联网中可以看到的所有 Web 网站、在线文档和目录,还包含一组模块,用于完成以前由辅助应用程序所做的所有工作。工作人员的定义已经扩展为包含志愿人员(我们是非赢利组织)以及从我们单位之外挑选的员工。工作人员内联网包含创建页面、文章以及在另外两个域中产生的事件的工具。
“会员”内联网
一个由口令保护的在线社区,用于我们所服务的多达 16 万名会员 — 这里指我们的毕业生
公共域
一个信息站点,链接面向公众的子网站和新闻文章。
我们为什么选择 PHP、Oracle、Apache 和 Linux
Apache 和 Linux。二者都以强健、低成本和安全性(在正确配置的情况下)而著称。除了作为数据库服务器操作系统给人留下深刻印象之外,我们还发现 Linux 的 Debian 版本(来自http://www.debian.org/的 Debian 项目)特别适合作为 Web 服务器,原因在于它在开放源代码社区中具有非常高的支持率、其集成软件的高质量以及它在稳定性方面的良好声誉。
PHP。我们没有选择 Active Server Pages、ColdFusion 和 JSP,而是选择 PHP 作为我们的 Web 服务器端脚本环境,原因在于它的速度、成本效益、大量的库文件以及比其他 Web 技术更好的自定义功能。使用 PHP 还使我们免于束缚在特定厂商的Oracle开发工具集上。
通过一个由 Web 网站以及程序员论坛(提供关于如何处理高级故障的有用提示)组成的网络,可以在 Web 上获得支持。有些 Web 网站还提供大量可用于开发更大型应用程序组件的有效代码。大部分程序员很容易理解 PHP 代码,因为它使用了与 C 相似的语法。我们讨论过,使用 Java 来开发我们所期望的服务器对象,其运行效率高于脚本代码。
但是,我们尚未发现需要与 Java 集成,因为已经证明 PHP 非常灵活和快速,足以满足我们的需要。清单 1显示了一个通过 PHP 查询 Oracle 的示例。
在进行更加复杂的面向对象的编程时,使用 PHP 的不足就会显现出来。这是因为它最初是作为一种脚本语言构建的,所以在 PHP 第 4 版中面向对象的特性非常少。这一问题已在 PHP 第 5 版中得以解决,该版本中引入了高级的面向对象特性。
Oracle9i。在不使用第三方工具的情况下,保持 Companion 数据库与中央数据库的同步是我们的首要需求之一。在两个 Oracle9i系统之间交换数据将会证明比开发其他转换和传输数据的方法要容易得多。在我们的案例中,使用 Oracle9i带来的好处与我们的投入相比要大得多,这是因为我们能够利用先前 PL/SQL 代码,从而节省了开发时间。
由于 Oracle 也移植到了 Linux 上,因此我们现在在 PC 体系结构的数据库服务器操作系统方面有了更多的选择。虽然中央数据库运行在 Oracle8i上,但我们选择使用 9i进行Oracle开发,以利用其更加先进的 VPD 特性(如 FGAC 和安全应用程序环境),它是市场上具有这些功能的唯一平台。
【编辑推荐】