Oracle開發(fā)的企業(yè)實(shí)際應(yīng)用相關(guān)程序
以下的文章主要是描述麥吉爾大學(xué)在Oracle開發(fā)和校友關(guān)系部是如何使用 PHP 與Oracle 在某些網(wǎng)上支持多達(dá), 16 萬名用戶,在麥吉爾大學(xué)(位于加拿大魁北克省的蒙特利爾)的研發(fā)和校友關(guān)系部,我們正在使用行業(yè)級(jí)的 PHP 應(yīng)用程序和 Oracle9i。
將范圍廣泛的多層次服務(wù)轉(zhuǎn)移到 Web 上,這些服務(wù)由 200 到 300 名受薪的和志愿的工作人員以及多達(dá) 16 萬名校友和捐贈(zèng)人使用。
預(yù)計(jì)該程序在主要的電子廣播時(shí)段每小時(shí)將會(huì)接納數(shù)萬名用戶。我們利用 Oracle 功能強(qiáng)大的行級(jí)安全特性以及 PHP 的高性能和快速開發(fā)平臺(tái)來完成這一工作。本文將探討以下方面:
背景
我們?yōu)槭裁催x擇 PHP、Oracle9i、Apache 和 Linux
應(yīng)用程序的結(jié)構(gòu)
安全性
同步
學(xué)到的教訓(xùn)以及對(duì)Oracle開發(fā)人員的建議。
背景
我們的機(jī)構(gòu)面臨著很多機(jī)構(gòu)所面臨的問題:
中央數(shù)據(jù)庫應(yīng)用程序
散亂而繁瑣
屬于關(guān)鍵任務(wù)并且不可替代
難以更改或者幾乎無法更改
依賴生產(chǎn)商的版本升級(jí)進(jìn)行更改
出于安全和成本的考慮,不能訪問互聯(lián)網(wǎng)
大量半獨(dú)立狀態(tài)的輔助數(shù)據(jù)庫和 Web 站點(diǎn)
與中央數(shù)據(jù)庫沒有充分同步
對(duì)于適當(dāng)?shù)陌踩院蜕?jí)維護(hù)而言,數(shù)量過多
為最終用戶提供過多的 ID 和口令
沒有遵循已確立的機(jī)構(gòu)業(yè)務(wù)慣例
越來越多地要求
通過基于 Web 的 IT 工具獲得機(jī)構(gòu)的高效率和生產(chǎn)率
易于使用
在功能間同步數(shù)據(jù)
可伸縮性
靈活性
功能的擴(kuò)展性
加強(qiáng) IT 和一般業(yè)務(wù)慣例的應(yīng)用
那么,我們正在如何應(yīng)對(duì)這些挑戰(zhàn)呢?
我們已經(jīng)啟動(dòng)了安全的、基于 Web 的模塊化數(shù)據(jù)庫應(yīng)用程序Oracle開發(fā)的第一階段。它以 PHP 和 Oracle9i編寫而成,在替代衛(wèi)星應(yīng)用程序及 Web 站點(diǎn)之后,必將為用戶提供更好的服務(wù)。它對(duì)公共數(shù)據(jù)進(jìn)行同步,并在總體上以及數(shù)據(jù)方面加強(qiáng)最佳業(yè)務(wù)慣例的應(yīng)用。
該應(yīng)用程序稱為 Companion,因?yàn)樗黾恿朔聪蛑醒霐?shù)據(jù)庫的功能,準(zhǔn)確地報(bào)告中心數(shù)據(jù),并在出現(xiàn)新數(shù)據(jù)時(shí)將其回送。
它包含超過 100 個(gè)表,這些表被分為 6 個(gè)模塊。最長的表大約有一百萬行。有些表有 20 到 30 列。全部用途是由用于行級(jí)安全性的 Oracle 細(xì)粒度訪問控制 (FGAC) 和虛擬專用數(shù)據(jù)庫 (VPD) 構(gòu)成的。
Companion 應(yīng)用程序包含三個(gè)域,而且能夠容納更多的域,這些域全都安全地訪問同一 PHP/Oracle 應(yīng)用程序中的相同數(shù)據(jù)。這些域包括以下內(nèi)容:
工作人員內(nèi)聯(lián)網(wǎng)
為 200 到 300 名工作人員提供的內(nèi)聯(lián)網(wǎng),包含人們?cè)谠S多工作人員內(nèi)聯(lián)網(wǎng)中可以看到的所有 Web 網(wǎng)站、在線文檔和目錄,還包含一組模塊,用于完成以前由輔助應(yīng)用程序所做的所有工作。工作人員的定義已經(jīng)擴(kuò)展為包含志愿人員(我們是非贏利組織)以及從我們單位之外挑選的員工。工作人員內(nèi)聯(lián)網(wǎng)包含創(chuàng)建頁面、文章以及在另外兩個(gè)域中產(chǎn)生的事件的工具。
“會(huì)員”內(nèi)聯(lián)網(wǎng)
一個(gè)由口令保護(hù)的在線社區(qū),用于我們所服務(wù)的多達(dá) 16 萬名會(huì)員 — 這里指我們的畢業(yè)生
公共域
一個(gè)信息站點(diǎn),鏈接面向公眾的子網(wǎng)站和新聞文章。
我們?yōu)槭裁催x擇 PHP、Oracle、Apache 和 Linux
Apache 和 Linux。二者都以強(qiáng)健、低成本和安全性(在正確配置的情況下)而著稱。除了作為數(shù)據(jù)庫服務(wù)器操作系統(tǒng)給人留下深刻印象之外,我們還發(fā)現(xiàn) Linux 的 Debian 版本(來自http://www.debian.org/的 Debian 項(xiàng)目)特別適合作為 Web 服務(wù)器,原因在于它在開放源代碼社區(qū)中具有非常高的支持率、其集成軟件的高質(zhì)量以及它在穩(wěn)定性方面的良好聲譽(yù)。
PHP。我們沒有選擇 Active Server Pages、ColdFusion 和 JSP,而是選擇 PHP 作為我們的 Web 服務(wù)器端腳本環(huán)境,原因在于它的速度、成本效益、大量的庫文件以及比其他 Web 技術(shù)更好的自定義功能。使用 PHP 還使我們免于束縛在特定廠商的Oracle開發(fā)工具集上。
通過一個(gè)由 Web 網(wǎng)站以及程序員論壇(提供關(guān)于如何處理高級(jí)故障的有用提示)組成的網(wǎng)絡(luò),可以在 Web 上獲得支持。有些 Web 網(wǎng)站還提供大量可用于開發(fā)更大型應(yīng)用程序組件的有效代碼。大部分程序員很容易理解 PHP 代碼,因?yàn)樗褂昧伺c C 相似的語法。我們討論過,使用 Java 來開發(fā)我們所期望的服務(wù)器對(duì)象,其運(yùn)行效率高于腳本代碼。
但是,我們尚未發(fā)現(xiàn)需要與 Java 集成,因?yàn)橐呀?jīng)證明 PHP 非常靈活和快速,足以滿足我們的需要。清單 1顯示了一個(gè)通過 PHP 查詢 Oracle 的示例。
在進(jìn)行更加復(fù)雜的面向?qū)ο蟮木幊虝r(shí),使用 PHP 的不足就會(huì)顯現(xiàn)出來。這是因?yàn)樗畛跏亲鳛橐环N腳本語言構(gòu)建的,所以在 PHP 第 4 版中面向?qū)ο蟮奶匦苑浅I佟_@一問題已在 PHP 第 5 版中得以解決,該版本中引入了高級(jí)的面向?qū)ο筇匦浴?/p>
Oracle9i。在不使用第三方工具的情況下,保持 Companion 數(shù)據(jù)庫與中央數(shù)據(jù)庫的同步是我們的首要需求之一。在兩個(gè) Oracle9i系統(tǒng)之間交換數(shù)據(jù)將會(huì)證明比開發(fā)其他轉(zhuǎn)換和傳輸數(shù)據(jù)的方法要容易得多。在我們的案例中,使用 Oracle9i帶來的好處與我們的投入相比要大得多,這是因?yàn)槲覀兡軌蚶孟惹?PL/SQL 代碼,從而節(jié)省了開發(fā)時(shí)間。
由于 Oracle 也移植到了 Linux 上,因此我們現(xiàn)在在 PC 體系結(jié)構(gòu)的數(shù)據(jù)庫服務(wù)器操作系統(tǒng)方面有了更多的選擇。雖然中央數(shù)據(jù)庫運(yùn)行在 Oracle8i上,但我們選擇使用 9i進(jìn)行Oracle開發(fā),以利用其更加先進(jìn)的 VPD 特性(如 FGAC 和安全應(yīng)用程序環(huán)境),它是市場上具有這些功能的唯一平臺(tái)。
【編輯推薦】