新商務模型和企業組織的不斷融合打破了傳統的網絡計算的邊界,在這種情形下更高級的分布式應用程序和支持移動數據的需求變得越來越強烈。
作為填寫表單、backoffice數據處理電子表格,或者當從旅途歸來時浪費工作時間來輸入數據的取代,現在移動辦公人員使用手持設備、智能手機、平板或膝上型電腦運行便攜式客戶端軟件來輸入或取出數據,而且這些設備正在開始處理他們的數據并和backoffice系統同步來引發商業過程-例如,自動售貨機跟蹤記錄本機庫存清單來實現按需補貨。
移動化使企業得到了更多利潤和更快的執行時間,企業已經意識到移動化的價值并且已經開始升級自身的IT部門來加速推進這種把競爭優勢帶入基礎部門的整合。
作為移動化趨勢的結果,Java和.Net開發人員正在探索應用在分布式、客戶端為中心的設備上存儲數據的解決方案,并且發現傳統的關系型數據庫在運行環境需要零管理、占地小和靈活的時候的不足之處,比如,產品化的數據庫在更新數據模型方面的能力已經被分散在成千上萬的客戶端字段內。
而目前大約50%的開發者仍然自己編寫持久化解決方案來滿足這些需求1,現在一個快速成長的用戶社區選擇了db4o的面向對象數據庫管理系統設計用來滿足上面描述的確切需求。
一些公司包括 Hertz, Eastern Data, Mobilanten and Mandala 已經在他們初步的移動解決方案中使用了db4o,而且很多正在開發額外的產品過程中。

db4o不僅為無縫集成以客戶端為中心的持久層提供可移動的,原始語言數據庫。從2006年1月起,它還提供依靠db4o復制系統(dRS),基于Hibernate的一種整合分布式、面向對象的backoffice數據,以服務器為中心的,例如Oracle或MySQL這樣的關系型數據庫的解決方案。
在這篇文章里,我想要通過一個具體用例詳細討論移動企業解決方案以突出挑戰性,使用db4o的移動數據庫來表明具體的好處。
1. 案例可移動企業級應用的傳統結構是網絡化的,在以服務器為中心的數據中心運行著一個或多個中央數據庫實例,和許多分布式,周期性連接的客戶端。周期性連接意思是:在某些時候,你是離線的,因此數據需要永久的存儲在客戶端上。但是在另一些時候,你是在線的(無線的或者直接連接到PC或某個網絡),從而能夠在數據中心和客戶端設備存儲中同步數據。
我們假設一個地區銷售代表,Larry,他在一家生產裝飾品的公司工作。Larry的智能手機上運行著一款以db4o為數據庫的軟件,并且可以與他公司的CRM和訂單處理系統連接。
Larry正打算離開辦公室去拜訪一些他所負責區域的客戶。因為他知道當他在路上的時候不能很好的接收數據,他點擊屏幕上的某個按鈕與桌面電腦同步他的智能手機,得到他所有客戶和他們的相關業務信息(例如訂單)的最新數據
當到達第一個客戶那里時,Larry發現他要延遲上一筆訂單的交貨日期。因為Larry已經有了他所有客戶的訂單信息,Larry在他的智能手機上找出這個訂單并且商定了一個新的交貨日期。
與客戶商議需要制定的日期時,這款軟件會根據商業規則來檢測期望制定的日期是否可用,通常商業規則是和“訂單”對象存儲在一起。商業規則會監測多種商業因素,例如公司產品進度優化算法、某些基本庫存和關鍵材料可用性信息。比如系統剛剛更新了一個新的商業規則, 作用是用來監測某個反映產品規范中新近變化的關鍵輸入組件的可用性。由于數據同步的面向對象本性和db4o的自動語法演化,智能手機上會已經存儲這個信息而不需要再做額外的管理工作,例如在關系數據庫中建立或修改某個table。由于這種更新的靈活性,Larry的公司發現更新產品進度表比以前更加簡單方便,因此保持了市場競爭力。

在第二位客戶那里,客戶的訂單已經交貨。客戶想要增加訂貨,所以Larry找出客戶的上一筆訂單并且增加了一筆新的具有相同產品的訂單。
之后Larry在一家咖啡館短暫停留了一會,他打開他的智能手機,并通過GPRS讓手機連接到他的辦公室。輕輕點擊一下,他的更新的訂單就與應用程序服務器完成了同步。兩項任務被添加到任務列表里:那筆修改交貨日期的訂單已經開始生產,所以不能修改交貨日期。他電話通知了客戶。第二位客戶的新訂單已經被核準,正在計算交貨日期。他同樣打電話給第二位客戶來商定交貨日期。
整個數據同步過程實際發生在Larry的應用程序內部。內嵌的db4o復制系統(dRS)為自動復制任何修改后的數據對象提供了可能。整個復制過程與傳統的RDBMS復制能力相比可以包含復雜許多倍的商業邏輯。例如,在這個案例中,產品團隊已經開始裝配第一位客戶的訂單,因為這個訂單上的產品已經被鎖定,所以同步請求被駁回。如果不使用db4o,我們必須手動將這個邏輯編寫進網絡應用程序內。然而,通過使用db4o和dRS,我們需要編寫的代碼僅是一個簡單的檢查訂單是否已經被生產的沖突檢查對象。dRS的應用程序接口同樣勝任自動任務執行,事件產生、或提示用戶做出選擇。
一旦數據和辦公室內的應用程序服務器完成同步,Larry所做的改變對其他用戶立即可見。新訂單開始被產品部門處理,購買訂單所需要的材料會自動產生。
使用傳統技術也可能完成所有這些事情,但是那會包含許多關系表格,所有這些表格需要被僵硬的、靜態應用程序代碼所引用,由許多行非原生SQL字符串組成,結果使重構變得異常笨重。快速進化的產品在基礎層面上維護所有這些代碼將會是很耗時的。對于每個平臺所有這些工作也不得不重復一次:從移動設備到應用服務器,再從應用服務器到銷售團隊的分析服務器。與此相反,db4o只需花費開發人員的很少量時間在應用程序中添加幾行代碼來完成這些。
2. 用db4o實現分布式應用程序大多數流行的應用程序都是用面向對象語言開發的,大多數真實世界的數據也很容易用面向對象語言表示,從這方面講開發人員也應該考慮使用db4o。
在商業程序里,使用“客戶對象” 表示比用“客戶表格里的一行數據”表示更加有價值。例如:客戶對象可以包含這樣的邏輯,決定當客戶可以訂購某個產品時是否允許其訂購,然后算出相應的價格。傳統的做法,開發人員不得不編寫大量的數據庫查詢并用很多方法計算出結果,然后這樣的邏輯拙劣的被打包重用并存儲到移動設備上。
db4o允許開發人員把精力放在如何讓應用程序更好的工作而不是花時間在設計數據庫schema并編寫持久化代碼上。實際應用中,已經證實db4o可以減少開發數據持久層90%左右的費用。
分布式db4o應用程序也同樣簡單。db4o設計用來內嵌入軟件組件,并且對于最終用戶完全不可見。部署db4o就如同你在安裝程序中包含一個單獨文件那樣簡單。沒有安裝、配置、維護數據庫方面的花費。
此外,db4o會自動適應應用程序的升級。它假定沒有數據庫管理員,并且允許應用程序從舊數據庫更改到新數據庫的無縫轉換,結果是:簡單、平滑、快速的部署和低廉的支持花費。db4o幾乎完全消除了當你發布新版本時用來維護數據庫方面的費用
db4o允許你用Java 或者Microsoft .NET語言開發的應用程序部署在PDA、移動電話、Windows桌面、Linux或Java服務器上,而且他們之間可以無縫的互相通信。
3.收集你的分布式數據db4o獨特的面向對象復制功能很簡單地允許你在db4o數據庫之間,類似Oracle,SQL Server,MySQL這樣的關系型數據庫之間,和他們任意組合之間實現數據同步。通過使用流行的Hibernate對象-關系映射機制實現了對關系型數據庫的包裝。
dRS是100%的面向對象軟件模型。正是這樣,它對于采用快速開發軟件環境的敏捷式企業來說是種完美解決方案。因為dRS設計用來嵌入您的應用程序,它在您的程序代碼內保留您所有的領域邏輯和商業過程,而不用分散存儲在企業服務器不同系統內。因為每個獨立系統都需要額外的獨立開發工作。取而代之,dRS允許您專注于獨立的應用程序開發和整合。dRS能夠減少開發時間和分布式功能的測試時間,讓你可以專注于你的商業邏輯。
dRS系統一個比較獨特的特點是解決應用程序完整性沖突的功能。傳統的復制只關注數據庫的結構,這意味著復制處理的是行級別或列級別的改變。然后通常這種“行”和“列”的表達方式對大多數應用程序沒有太多意義。同步真實的 “客戶”和“訂單”對象不是更好嗎?實際上如果使用dRS的話, 大多數情況下在兩個數據庫間解決一個單獨的沖突所需的代碼量幾乎可以忽略不計:因為這就象寫一個If語句那樣簡單。
當沖突出現時,傳統的數據復制系統是向處理器發出一個沖突日志指令。處理器向數據庫添加標識,應用程序開發人員在處理他們之前不得不做定時性的檢查。而如果復制系統是與應用程序整合在一起的,應用程序就可以立即接收任何沖突的變化情況。沖突就可以立即被應用程序或者用戶處理。
任何企業級開發成果中可維護性都是很關鍵的。當開發人員聽到“復制”這個詞時,他們中大部分都“敬而遠之”。這是因為對數據格式的任何改變都需要與所涉及到的數據存儲同步,其中包括復制腳本,和所有應用程序涉及到的可能使用的那部分數據訪問代碼。使用db4o和dRS則意味著無論何時您的應用程序的對象模型改變,您的應用程序都可以無縫的更新到您的數據庫。
4. 結論對那些想要使用科技驅動商業過程來與自己的競爭對手或者包含發展進程中價值鏈占用的費用相區分的企業來說, 移動商務是必然的趨勢。
新的商業模型和過程需要正確的技術做支持。移動化軟件不同于以服務器為中心的軟件-領先的以服務器為中心的數據庫(Oracle,IBM,Microsoft)在嵌入式數據庫領域卻是落后的,在市場占有率方面大概只占到2%-5%左右。
一批具有前瞻性思維的開發人員已經嘗到了面向對象計算在構建更加分布式的移動商業程序中的益處。他們把面向對象帶到了數據層來允許快速應用開發(這帶來低成本和快速投入市場)并且增加更多靈活性,因此敏捷的商業過程正以一個前所未有的速度快速改變著商業環境。
db4o是僅有的、明確的、以客戶端為中心而設計的,Java和.NET環境可移動持久化原生面向對象數據庫。新發布的dRS通過提供一個開拓性的復制系統確立了領先位置,它允許應用程序即使是把最復雜的對象結構與遺留下來的關系型數據庫進行同步也僅僅是一行代碼。
關于作者:Eric Falsken 是db4o在分布式醫療設備領域的長期用戶, 而且最近作為技術傳播者已經加入到db4o的開發團隊。
作為一個有經驗的企業應用開發者和早期Microsoft .NET技術創始者(他并不太鐘情開放源代碼運動合作)他喜歡探索開發工具以使開發優美的、有用的、可維護的軟件成為可能。
下載db4o:http://www.db4o.com/china?src=cn