虎瀾集: 網頁與資料庫 (1)

October 9th, 2016

最近記性不太好,趁還記得一些事的時候寫一寫,免的內容不夠辣。

大約十幾二十年前,有個東西叫網頁的很紅,貌似很好很強大,可是除了展示靜態資料外,要怎樣才能有用呢? 一句話,有動態資料才有用。比方說,咱們學校裡要搞一套網路選課系統,學生可以上網去選要修的課,這要怎麼變出來呢? 當年的技術也只能用 RDBMS,所以第一代自然就拼出這玩意

RDBMS <-> CGI gateway <-> Web Server <---> Web Browser

註冊系統本身是一套資料庫,我寫個中間人去更新資料庫 (CGI gateway),再做點 UI 在前台的網頁上,這就搞定了。CGI 這東西現在很多人不了解,基本上就是一個 web server 的外掛,要什麼東西跳出去 web server sandbox 撈回來就對了。這東西想當然耳不夠威,我總不能每整一套系統就重寫一次吧? 所以要使用 framework 來增加我們師程工的產能,這時候兩大陣營應運而生:

MySQL <-> PHP <-> Apache Server <---> Web Browser
SQL server <-> ASP <-> IIS <---> Web Browser

前者就是 LAMP,後者是微軟帝國包套到家的服務,兩者貌似都很好很強大,只有一個小小的問題: 網站紅了之後 hold 不住。一個兩個 user 還好,幾百萬 user 進來就非常歡樂了,以當時的硬體,RDBMS 要賽豬公等級的才有一拼之力,不小心紅過頭那是神仙都 hold 不住這種量。於是世界上有好幾組聰明人就開始想,如果我們不要用 RDBMS,是不是就可以 hold 住了? 事實上沒錯,所以他們就這麼整了:

NoSQL database <-> Middle Layer Processing <-> Web Server <---> Web Browser

這裡 middle layer processing 是蠻模楜的一個概念,你可以把它想成去要求 NoSQL database 的某個小 partition 回來後加以處理丟到前台,並將前台的反饋寫回去。一個典型的例子是 MEAN framework:

MongoDB <-> Express/Node server-side scripting <-> Web Server <---> Web Browser (Angular-based pages)

NoSQL 的長處是因為它不管 data relation (或是只管少少的一點點),所以可以很輕鬆的把資料 shard 成 N 份,這在 scalability 和 replicability 上有極妙的優勢。另外,第一秩序 JavaScript 已經統一了網頁程式的世界,這東西在型別 (type) 上那是出名的混亂,大部份的 NoSQL 都不會嚴格要求欄位型別 (因為沒啥必要),這對在 JS 中掙扎的苦難師程工無異於天降甘霖,於是乎 NoSQL 如救世主般橫掃八荒六合,大夥兒也就一窩蜂的開始用了 …

事情若是從此就完美收場,那這世界也太無趣了一點。很快人們認識到,所有資料都從 server-side 去撈,是件非常沒有效率 (而且也不是很必要) 的事情。如果我們可以在 Web Browser 端存資料,是不是可以有不同的玩法呢?

故事的序章到此結束,本文下回分曉 …

Web Development, 技術文章 | Comments Jump to the top of this page

Comments are closed.

隨便寫寫大家隨便看看的不出名小格子

舊文索引

站內管理