讓業務實現迴歸資料庫

husthxd發表於2018-07-20

      讓時間回到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語言。

      與其在中間層上耗費大量的資源還不如在後臺資料庫上投入資源,形成資料庫叢集,在分散式資料庫的應用環境下,每個節點即時資料儲存節點也同樣是計算節點,簡單有效且高效。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-2158221/,如需轉載,請註明出處,否則將追究法律責任。

相關文章