為什麼這篇主從式架構三層式架構鄉民發文收入到精華區:因為在主從式架構三層式架構這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者mikelue (路燈)看板Database標題Re: [SQL ] 主從式架構的疑問....時...
※ 引述《lisaforlisa (思思)》之銘言:
: 請問一下版上的大大...><
: 主從式架構分為二階跟三階...到n階
: 看過書本...
: 還是覺得二階跟三階有點懵懵懂懂的...
: 我想知道中間的差異性 到底差在哪邊??
: 我只印象 資料庫書本的二階是 用戶端跟伺服端
: (代表要用該公司的資料庫...就要下載使用該軟體才有辦法使用)
: 所以 存取度不佳 (如果多人同時上去連該資料庫 應該會當機吧?) (臆測)
: 安全性有風險 (對離職的員工未改變其權限的話)
: 三階是 用戶端 網頁伺服器 伺服端
: 是說用戶端透過瀏覽器 來與伺服端的資料庫連線
: 安全性較低 (因為連接網路就很容易被駭客攻擊 或是病毒的攻擊)
: 可以降低系統對資料庫資源請求的負擔 (有看過但是不懂)
: 請問還有什麼可以補充的嗎? (想離清一些觀念 做個分析><)
: 麻煩各位大大的解答了了^^" (跪樣)
原則上,主從式架構在不同的系統上,會有不同的定義
站在資料庫系統(Database System)的角度,
Database System 算 Server,其它都是 Client
無論你用 SQL Server 的 Enterprise Manager,
或是 JDBC、ODBC、ADO.NET,對 Database System 都是 Client
站在一個 Web 應用系統的角度(Web Application System),
Web Server + Middle-Tier + Database Server 整個算是 Server
其它 Browser,或 Spider 程式,就算是 Client 了
但站在 Server 的角度,它又是 Multi-Tier 的架構
對於 A 是三階,B 是二階,其實隨著資訊技術的發展,階數沒有那麼重要
重要在於:每一層架構的定義,與其責任,以及要付出的代價與得到的效益
不過您提到二階與三階的差別,是有其歷史發展的
在 VB/Delphi 火紅的年代,
常見用 VB/Delphi 開發的 Desktop Application + Database,來開發系統,
需要付出維護 Desktop Application 的代價;
大多稱其為二層式架構。
在 Web 火紅的年代,常見用 Browser + Web Server + Database,來開發系統,
解決了 Desktop Application 維護的代價,
但需要要付出 Web Server 維護,以及 Web UI 開發的代價;
大多稱其為三層式架構
效能方面,
對 Desktop Application 而言,每個使用者要直接連資料庫,
,是比較不好的,原因是連資料庫就像發動車子,需要花費較大的成本。
對 Web Application 而言,每個使用者連到 Web Server,
由 Web Server 統籌對資料庫連線
所以站在 Web Application 的立場,採用 Connection Pooling 的方式,
當 Client 要求的時間分開時,可能用少數的連線,就可以滿足需求。
例:
User A 於 00:05 要求資料
User B 於 00:06 要求資料
User C 於 00:07 要求資料
對 Desktop Application,Database Server 需要建立三次 Connection
對 Web Application,Database Server 可能只需建立一次 Connection,然後讓
Web Application 在不同時間,使用同一個 Connection,因此效能會較好。
付出代價方面,若 Web Server 與 Database Server 在同一台機器,
兩方必要分享相同的系統資源(memory、CPU)
若分開兩台 Server,就要兩台 Server 的成本(建置、維護)要付出。
安全方面,與「程式設計」的安全模型考量比較有關,
而採用的系統架構,倒不是最重要的部份,
例如:SQL Injection 預防、無論 Desktop Application 連資料庫,
或是 Web Application 連資料庫,較差的設計,都會產生風險。
資訊安全是很複雜的議題,系統切割的層數越多,安全上的考量也就越多
目前主流的系統架構,當然也考量了基本安全的架構,
但資訊安全的根本,還是需要程式設計師不斷努力,去強化程式碼的設計
架構只能提供基本,已經廣為大眾所知的安全考量。
原則上,分層式的架構設計,是先為了解決責任複雜、開發維護成本的問題,
以及新功能的滿足(例:單機時代到 Web 時代),
經由良好的責任劃分,同時也可以為安全、效能帶來基礎的建設。
在 IT 的領域,層數只會越分越多,這是 IT 用來解決設計問題的唯一方法。
在 ORM 尚未成為主流前,程式設計師要自己寫存取資料(檔案、索引)的程式碼,
現在,有了獨立的關聯式資料庫系統,只要會 SQL,就能做出功能,
但資料庫系統的效能並不會比 Hard Code 還好。
若沒有良好的網路設定與維護,資料庫系統反成了一台可攻擊的伺服器。
當然現在的網路服務(無名小站、GMail),要是沒有現代的多層式架構,
實作將是相同困難的。
大多的書藉,都會提出分層的好處、新架構的好處,但一定會有代價。
隨著時間,您的體會將逐步提升 ^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.198.7.188