DB2客戶端開發(fā)的最新動向描述
以下的文章主要向大家講述的是DB2客戶端開發(fā)的***動向,你是否對其存在疑惑,即IBM 的 DB2 開發(fā)小組是不是真的把所有的這些開源的具有解釋性語言與富 Internet 應(yīng)用程序資源考慮在內(nèi)。
告訴您吧,這個小組中就有一些人正在研究一種新的用于公司數(shù)據(jù)服務(wù)器的管理控制臺……
應(yīng)用程序DB2客戶端開發(fā)人員鐘愛 Python、Perl、PHP 和 Ruby。DB2 準(zhǔn)備支持它們 —— 您呢?
數(shù)年前,我的朋友 Cathy 拜訪我在喬治亞州亞特蘭大郊區(qū)的家。我向她介紹了我的兒子,那時他才四歲,我告訴他,Cathy 在賓夕法尼亞州有一個農(nóng)場。“真的嗎?”Zachary 問道。“你家有馬嗎?”“有啊,”Cathy 說,“我們有馬。”
“有豬嗎?”
“有,我們有豬。”
“有沒有巨蟒(python)呢?”“沒有,”Cathy 答道,“我們沒有巨蟒。”
Zachary 有一點失望得走開了。Zach 是一個非常聰明的孩子,但是那個時候他對巨蟒知道得并不多。我得說,他對這種大蛇的了解,與我對 Python 編程語言的了解程度差不多。
時間很快來到 2007 年 3 月 29 日。我在澳大利亞墨爾本,聽 Curt Cotner(IBM 同行,IBM 數(shù)據(jù)服務(wù)器***技術(shù)官)在 International DB2 Users Group (IDUG) Australia Forum 上做主題演講。Curt 正在談 Python 和目前開發(fā)人員(尤其是 Web 應(yīng)用程序開發(fā)人員)當(dāng)中流行的其它編程語言。
對于 Python、Perl、PHP 和 Ruby,以及我至少比較熟悉的語言,例如 Java 和 C#(后者在 .Net 應(yīng)用程序環(huán)境中被廣泛使用),IBM 的*** DB2 開發(fā)人員在談?wù)撌裁茨?結(jié)果據(jù) Curt 所說,IBM 正在做很多工作來使 DB2 成為用于各種現(xiàn)代DB2客戶端開發(fā)語言的很好的數(shù)據(jù)服務(wù)器,這條消息是關(guān)注 DB2 的人所關(guān)心的。
幾周之后,我再次目睹 Curt 在 IDUG North America Conference 上做演講,當(dāng) Curt 同意坐下來就這個話題與我進(jìn)行 Q&A 時,我得以從他本人那里得到一些很好的補(bǔ)充信息。根據(jù) Curt 和其它消息來源(包括我在 CheckFree 的同事 Eric Drudge,他是我們的一個***應(yīng)用程序架構(gòu)師),DB2 人員應(yīng)該知道關(guān)于數(shù)據(jù)服務(wù)應(yīng)用程序客戶端的熱點話題。
DBMS 出現(xiàn)合并,而開發(fā)平臺越來越多
至于作為企業(yè)級數(shù)據(jù)服務(wù)應(yīng)用程序的基礎(chǔ)的 DBMS,用戶主要使用 IBM 和另外兩家供應(yīng)商提供的產(chǎn)品。在開放源代碼軟件領(lǐng)域,情況也差不多,也是由幾種 DBMS 統(tǒng)領(lǐng)市場。
在應(yīng)用程序一端,情況又不一樣。編程語言來來往往(IT 的老一輩們:還記得 ALGOL、Pascal、PL/I和 APL 嗎?),新的編程語言不斷涌現(xiàn),其中有些編程語言流行起來,獲得了廣泛的使用。根據(jù) DBMS 軟件技術(shù)“強(qiáng)者恒強(qiáng)”的特點,是什么導(dǎo)致語言多樣化的場面?對此我有一些想法。
學(xué)生因素。很多新語言活動發(fā)生在世界各地的學(xué)校里。由于以下原因,孩子們(對我來說他們還是孩子)追求新的編程語言的開發(fā),因為:
他們想要領(lǐng)先。很多計算機(jī)科學(xué)專業(yè)的學(xué)生都想成為下一個 Linus Torvalds。他們的主要動機(jī)未必是金錢。他們的目的是被承認(rèn)——尤其是在其他程序員當(dāng)中——成為一名***和革新者。
他們做得到。創(chuàng)造新的編程語言不像煮雞蛋那么容易,但是比DB2客戶端開發(fā)較大型企業(yè)要求具有功能性、易管理性、可伸縮性和可用性的新 DBMS 要容易得多。(Chris 是我的大學(xué)室友,有一天晚上,Chris 的瘋狂的實驗室伙伴發(fā)現(xiàn)他還呆在學(xué)校計算機(jī)中心的地下室里,他希望 Chris 是在為項目做第二天的工作。“哦,那個早做完了,”Chris 說。“那你在做什么?”“我在編寫我自己的 FORTRAN 編譯器。”“為什么?”“因為我做得到。”
追求簡單。很多人之所以要花力氣創(chuàng)造新的編程語言,是為了尋找一種方法用更少的代碼做更多的事情(就應(yīng)用程序功能而言)。(有些語言的愛好者喜歡進(jìn)行一些競賽,目標(biāo)是用最少的代碼提供某種功能。)當(dāng)然,為了提供目標(biāo)功能,需要執(zhí)行很多機(jī)器指令,但重點是減少程序員必須編寫的代碼的行數(shù)。
使 Web 應(yīng)用程序邁上新的臺階。舊的 browser-as-displayer-of-HTML 模式逐漸落后于一種可以稱作“browser-as-desktop”的模式,在后一種模式中,在瀏覽器中運行的應(yīng)用程序代碼可以與用戶交互,而且在改變顯示元素和與后端服務(wù)器進(jìn)行異步通信時,不需要那么多令人討厭的 Web 頁面重裝載。于是,為了做那些舊語言不能做或者做不好的事情(尤其是在用戶界面級),出現(xiàn)了一些新的語言。
服務(wù)器硬件的進(jìn)步。如今很多受熱捧的語言都是腳本編制語言,運行用這種語言開發(fā)的程序時,程序中的每一行代碼是在執(zhí)行時動態(tài)地轉(zhuǎn)換成機(jī)器語言的,而不是在一個預(yù)先執(zhí)行的進(jìn)程中編譯。腳本編制語言的 CPU 效率不如編譯語言,但是如今這一代的微處理器實在太快了,與數(shù)年前相比,CPU 周期要廉價得多,腳本編制語言帶來的 CPU 開銷變得越來越微不足道。
程序員的談話
我在本節(jié)中所解釋的術(shù)語經(jīng)??梢栽陉P(guān)于現(xiàn)代 Web 應(yīng)用程序DB2客戶端開發(fā)的討論中聽到。
PHP。PHP(PHP: Hypertext Preprocessor 的遞歸的首字母表示),根據(jù) www.php.net 上的描述,是“一種開源的通用腳本編制語言,特別適合 Web 開發(fā),可以嵌入到 HTML 中”。注意,PHP 代碼是在應(yīng)用服務(wù)器上執(zhí)行的——客戶機(jī)只接收 PHP 代碼執(zhí)行的結(jié)果,而不是代碼本身。
Perl。Perl(practical extraction and report language)是一種跨平臺的開源的腳本編制語言,由于它的文本操作功能和快速開發(fā)周期,在 Web 應(yīng)用程序開發(fā)人員當(dāng)中較為流行。有人將 Perl 稱作 Internet 的膠帶(duct-tape)。
Python。一種開源的腳本編制語言,被廣泛用于各種應(yīng)用程序領(lǐng)域。Python 的愛好者經(jīng)常使用“batteries included”這個詞來形容這個非常全面的標(biāo)準(zhǔn)庫,它包含了從異步處理到zip文件的各種功能。
框架(Framework)。在 Web 應(yīng)用程序開發(fā)的上下文中,框架是方法(也就是函數(shù))和對象(事物的信息實例)的集合,它們使得用更少代碼開發(fā) Web 應(yīng)用程序變得更容易??蚣芴峁┯糜跀?shù)據(jù)庫訪問和會話管理等類似內(nèi)容的庫。(在 http://en.wikipedia.org/wiki/Web_application_framework 上提供了關(guān)于這個話題的優(yōu)秀介紹。)我的同事 Eric(應(yīng)用程序架構(gòu)師)將框架描述為用于快速構(gòu)建 Web 應(yīng)用程序的腳手架。
Django。Django 是和 Python 編程語言一起使用的一種開源的 Web 應(yīng)用程序框架。
Ruby。Ruby 是 20 世紀(jì) 90 年代中期在日本創(chuàng)立的一種開源的腳本編制語言。其愛好者將它描述為一種“優(yōu)美的”、“巧妙的”語言。Ruby 的***設(shè)計者 Yukihiro Matsumoto 說過:“Ruby 看似簡單,但其內(nèi)部非常復(fù)雜,就像我們?nèi)梭w一樣。”Ruby 最令人感興趣的一個方面是,所有東西看上去都是一個對象。
Rails。開源的 Rails 框架是和 Ruby 編程語言一起使用的。
JavaScript。JavaScript 是一種開源的腳本編制語言,最初由 Netscape Communications 開發(fā),現(xiàn)在由 Mozilla Foundation 管理。與其名字的字面意思不同,JavaScript 不是“解釋性的 Java”;實際上,它與 Java 編程語言無關(guān)(不過 JavaScript 常被嵌入在 Java 應(yīng)用程序中)。Web 瀏覽器是 JavaScript 最常見的執(zhí)行環(huán)境。
Ajax。Ajax,Asynchronous JavaScript and XML 的簡稱,是用于DB2客戶端開發(fā)交互式 Web 應(yīng)用程序的一種技術(shù)。采用 Ajax 時,瀏覽器中運行的代碼可以與用戶交互,例如,當(dāng)用戶的光標(biāo)停在 Web 頁面中的某一段上時,那一段會“跳出來”并且高亮顯示,但是不必為此重新裝載 Web 頁面。Wikipedia 在 http://en.wikipedia.org/wiki/Ajax_(programming)上提供了對 Ajax 的優(yōu)秀介紹。
DB2 連接
那么,所有這些與 DB2 有什么關(guān)系呢?讓我為您道來。
DB2 與 PHP。IBM 開發(fā)并支持一種用于 DB2 的開源的 PHP 擴(kuò)展,即 ibm_db2。該擴(kuò)展針對 DB2 進(jìn)行了優(yōu)化,并且支持存儲過程和大型對象(LOB)。它還提供原生 XML 和 XQuery 支持,可以用于 PHP 4 和 PHP 5。在 http://us2.php.net/manual/en/ref.ibm-db2.php 上可以找到關(guān)于這種 PHP 擴(kuò)展的更多信息。另外,還請了解 Zend Core for IBM,它是與 Zend Platform(來自 Zend Technologies 的一種流行的 PHP 應(yīng)用服務(wù)器,該公司由 PHP 的架構(gòu)者創(chuàng)立)兼容的一個 DB2 訪問解決方案。 可以從 ibm.com/software/data/info/zendcore 獲得關(guān)于 Zend Core for IBM 的更多信息。
DB2 與 Perl。CPAN,即 Comprehensive Perl Archive Network,提供用于 DB2 的 Perl 數(shù)據(jù)庫驅(qū)動程序。在 http://search.cpan.org/~ibmtordb2/DBD-DB2-1.1/DB2.pod 可以找到關(guān)于它的信息。注意,在 DB2 的“Viper 2”版中,IBM 將提供一個 PHP 驅(qū)動程序的二進(jìn)制代碼。
DB2 與 Python(和 Django)。在 sourceforge.net/projects/pydb2 上有一個 Python DB2 Interface (PyDB2)。在 DB2 for Linux, Unix, and Windows 的“Viper 2”版中,IBM 計劃提供一個 Python DB2 驅(qū)動程序。
該驅(qū)動程序?qū)崿F(xiàn) Python Database API Specification v2.0 (見 www.python.org/dev/peps/pep-0249/)。同樣是在 DB2 “Viper 2”中,IBM 計劃支持作為 Python 應(yīng)用程序 Django 框架的一部分的對象-關(guān)系映射器(欲了解關(guān)于 Django Database API 的更多信息,請訪問 www.djangoproject.com/documentation/db-api/)。
DB2 與 Ruby(on Rails)。IBM 在它的 alphaWorks 網(wǎng)站(www.alphaworks.ibm.com/tech/db2onrails)上提供了用于 DB2 on Rails 的一個啟動工具包。這個集成的安裝程序在 Windows PC 上創(chuàng)建一個完整的 DB2 Ruby on Rails 開發(fā)環(huán)境。(也可以使用 alphaWorks 站點上提供的啟動工具包的驅(qū)動程序源在其它平臺上創(chuàng)建。)
也許您想知道 IBM 的 DB2 開發(fā)小組是不是真的把所有這些開源的解釋性語言和富 Internet 應(yīng)用程序資源考慮在內(nèi),告訴您吧,這個小組中就有一些人正在研究一種新的用于公司數(shù)據(jù)服務(wù)器(DB2 for z/OS、DB2 for Linux/Unix/Windows 和 Informix Dynamic Server)的管理控制臺,這種管理控制臺基于 Web,它將利用 Ajax 相關(guān)技術(shù)更好地為 DB2 管理員提供系統(tǒng)健康、可用性和故障排除信息(用戶界面級的數(shù)據(jù)將通過與主機(jī)系統(tǒng)的異步通信動態(tài)地更新,所以不必等到重新裝載 Web 頁面)。是的,他們實現(xiàn)了它,并且正在使用它。
現(xiàn)在怎樣?
好了,與數(shù)分鐘之前相比,現(xiàn)在您對當(dāng)前 Web 應(yīng)用程序DB2客戶端開發(fā)有了更多的了解(我希望如此)。您將如何利用這些知識呢?首先,希望您的應(yīng)用程序開發(fā)同事在討論編程語言和技巧時,您能理解更多的內(nèi)容。能理解更多東西之后,您也可以加入那樣的談話。
在討論的過程中您就有機(jī)會讓程序員知道開源 DBMS 不是惟一可用的數(shù)據(jù)庫解決方案,即使他們正在使用開源的語言編程。還有一種工業(yè)級的、高度可伸縮的、供應(yīng)商支持的 DBMS,它可以非常有效地解決 Web 應(yīng)用程序在數(shù)據(jù)持久層方面的需求(某些開發(fā)人員就是這樣看待數(shù)據(jù)庫的)。這種 DBMS 會定期得到增強(qiáng),以便更好地適用于程序員們喜愛的腳本編制語言。
當(dāng)然,它就是 DB2。
【編輯推薦】
- 對DB2分區(qū)兼容性的正確認(rèn)識
- DB2 9.7 兼容Oracle,IBM發(fā)布
- 3G與IPTV是發(fā)展大方向
- 對DB2編目概念的詳細(xì)描述
- 實現(xiàn)DB2 9數(shù)據(jù)庫管理軟件安裝的方式有哪些?