作者mikelue (路灯)
看板Database
标题Re: [SQL ] 主从式架构的疑问....
时间Sat Oct 18 23:44:39 2008
※ 引述《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