您好,登錄后才能下訂單哦!
????? 讓時間回到2000年,當年流行的MIS系統絕大多數均采用C/S架構,也就是使用PowerBuilder/Delphi/VB等工具開發的胖客戶端通過OCI或其他接口直接連接Oracle或其他數據庫,業務邏輯在數據庫端實現,也就是通過PL/SQL、T-SQL語言等實現存儲過程、函數、觸發器等,由胖客戶端進行調用。C/S架構,其中一個很大的問題是不利于擴展,由于Client直接連接數據庫,在業務繁忙的時候很容易把數據庫端的資源(連接數、服務器內存等)耗盡,導致業務中斷甚至無法辦理。
?????? 為了解決這個問題,在C/S之間多加一層,同時把C端換成B端,也就是多加了一層中間層,同時把胖客戶端換成了瘦客戶端如瀏覽器等。數據庫連接由中間層進行管理,原來由存儲過程實現的業務邏輯改由中間層實現,這樣的做法讓不少的服務端語言(最著名的莫過于Java)得到了廣泛的推廣和應用。B/S/S的架構,讓數據庫的角色淪為了數據存儲器(Data Container)的角色,外加一些增刪改查的邏輯。隨著數據量的不斷增長,中間層與數據庫端的交互越來越頻繁,數據處理的低效與用戶希望快速高效的獲得結果的訴求之間矛盾顯得尤為突出。首先,數據從數據庫端傳送到中間層需要耗費時間;其次,使用中間層開發語言(大多數使用Java)處理大批量數據時,效率相對C/C++低效得多(尤其在系統資源利用上);再次,處理完畢后如果還需要入庫,還需要一次網絡的傳輸。如何解決這個問題?讓業務實現回歸數據庫是行之有效的一種解決方法。
????? 讓業務實現回歸數據庫,并不是意味著業務應用系統的開發要采用原有的C/S架構,而是在三層結構的基礎上,把部分業務邏輯的實現(尤其是需要頻繁數據交互和數據處理的地方)回到數據庫端實現,這時候可以使用C/C++這類高效的語言進行數據庫的擴展開發,在數據庫服務器端對大批量數據進行處理或分析,減少網絡的來回傳輸,提高系統的整體效率。
????? 數據庫的應用系統業務邏輯如何高效實現?如果是Oracle/SQLServer的話,存儲過程不失為一個很好的選項,雖然這個選項讓人覺得很Low和倒行逆施、不合潮流,但卻是一個有效和高效的選項,特別是在以Oracle為中心的應用場景下。如果是PostgreSQL的話,除了存儲過程,還可以開發Extension,用C/C++、Python、Java甚至JS都可以,當然,效率最高的莫過于C語言。
????? 與其在中間層上耗費大量的資源還不如在后臺數據庫上投入資源,形成數據庫集群,在分布式數據庫的應用環境下,每個節點即時數據存儲節點也同樣是計算節點,簡單有效且高效。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。