我從來沒有編寫過任何 cgi 的系統, 例如 ASP, JSP和.Net, 連甚麼Web2.0我也不太清楚了. 或許大家可以告訴我, 它們是如何連接Database呢? 是否每次收到Browser的Request, 這些CGI都要連線Database一次? 做Password Authorization呢? 這樣不是很慢嗎?
另一個可能性就是使用3-tiers (或M-tiers), 即是Browser和Database之間有個Middle Tier,這個Tier會永久連接著Database, 收到CGI的Request, 就可以Send Request到Database, 從Database取得Result, 再交給CGI, 由CGI給Browser, 就算是這樣, 我亦覺得沒有效率.
現今的科技太過講求結構性了, 把系統分得很遠, 例如Web Server和Database Sever是兩個獨立的系統, 當然這樣有其好處, 但就是放棄了效率, 我就不太喜歡這樣的設計.
我在網上解決方案一文寫過MemDB如何編寫Web To Database, 就是把Web Server和Database Server整合在一個系統內, 中間沒有CGI, 即是直接收到Browser的Request, 然後在Memory裡找到Result, 直接Send給Browser, 聯播系統就是用這個技術編寫了.
我只知道asp,asp.net及 php
回覆刪除正常而言,是一次請求便開一次 db 連接,但這樣會對 service 造成大負擔,是以會改成 funtion 方便存取,又或設立緩衝區把 db 的資料存在暫存中,減輕 services 的需求。
照預設的設定,應該係每次web request最少會開一個connection,不過應該可以set persistent connection。
回覆刪除其實點解要分開web server and database server,可能係 1)先有database,才有web; 2)容易maintain; 3)兩個servers的loading都唔少,可以分開distribute開個loading
其實如果loading唔大你的方法是最好的,但太大loading的時候,連web server 或 database server 本身都要distributed 開。
如果好似youtube咁的話連個file system server都要distribute,所以strucutral design是比較化算。
FYI,Google個index是在memory的,而佢也有一個google file system for distributed storage。
三個 terms: Connection Pool, Caching, Reinvention of the Wheel
回覆刪除