Translate

2009/04/28

DBeXpress的一些觀念

話說DBeXpress是B社強力主推的軟技術之一
但鮮少有資料可供參考

討論它的專書繁中+簡中的…大約4本吧
而有提到的書籍,無一不說DBX的效能好,但…

說效能不錯,那是有條件的!

就先拿BDE來說好了,B社資料連結技術的開山元祖
速度快不快,說真的,在單機架構中,應該是沒有任何的引擎比它快
(就連最新的DBX4也才只比BDE快0.X秒)

缺點:
封裝麻煩

說真的,BDE除了這點外,大概沒其它問題(…是我沒用到過)

而DBX呢?
速度嘛…M$SQL輸ADO(大),單機輸BDE(超大),C/S則還需看BDE的SQL LINK及ODBC效能才有機會勝出…
DBX的效能…或許在5~6版之後能真正超越BDE吧
那,DBX的優勢在哪邊?
1.封裝簡單
  只需要把 MIDAS 及 DBX+DB Client所需的DLL包在一起,直接封裝即可,快速簡單
2.架構明確
  以往習慣BDE的B社愛好者(被逼?),一但必須把原1~2-TIER的架構晉升為N-TIER時,往往會因架構落差太大導致轉換不易
  而DBX採行的則是「準n-tier」架構,讀取資料時採單向取出,寫入資料時則交由DATASNAP方式寫入
各司其職,取「單向取出」及「MIDAS寫入」二者優點,得到最大效能
(慢就是慢在MIDAS,所以效能慢也不能全怪DBX)

提了這麼多,那DBX的架構是什麼東西?

DBX元件 + DataSetProvider + ClientDataSet

這就是完整的DBX架構

某書曾寫DBX + StringGrid的方式簡直是大誤......

N-TIER所用到的元件則是…

(BDE / ADO / DBX) + DataSetProvider |<-Server 切 Client->| (DCOM / Socket) + ClientDataset

如何?有沒有像一點?如此切開就成了n-tier架構

接下來要討論的課題是
這樣的DBX要怎麼在專案中設計?
以下的內容不一定是正規寫法,也歡迎提出討論

1.視時機使用SQLTable/SQLQuery及ClientDataSet操作資料存取元件
  這種方式看起來沒啥不好,在c/s設計上也沒有問題,但在未來移轉到n-tier時,需要變更的地方可不少
(也就是說,仍採用與BDE相同的設計模式)

2.將ClientDataSet直接取代成TTable / TQuery來使用
  把SQLTable及DataSetProvider藏在DataModule內,完全使用ClientDataSet操作
這樣的方式更能貼近N-TIER的程式寫法,若未來有升級的空間,可考慮這樣的寫法
但在1~2-TIER上設計時往往會有脫褲子放屁的感覺
再者,由於大部份的情況都在DataSetProvider做in/out動作,效率上會顯得更為慢些
(在單機的情況來說,這並不明顯)

在設計性與未來延伸性來說,會是設計師的一門課題
不過也因為這個原因,讓資料庫程式設計變得富有趣味性及變化性。

沒有留言:

張貼留言

DataSnap REST + JS framework = full stack development (CHT)

ExpressWeb Framework, IntraWeb, UniGUI, Raudus, Elevate Web Builder, Kitto, Delphi MVC Framework... Delphi 這麼多 Web Solution 中,你用過哪幾種? ...