字體:  

HandlerSocket - 2011網頁開發熱門技術

ppstream 發表於: 2011-3-30 12:18 來源: ADJ網路控股集團


全文引用自: Inside

談到網頁的開發技術,許多人的印象中不外乎便是PHP、Java或是.Net等等,而比較新興的技術則可能是Ruby或是Python,在本系列文章中,我將介紹在近日中熱門的網路技術,讓各位讀者能夠掌握最新趨勢。

NoSQL v.s. SQL資料庫既上次談了Node.js這個網站的後端技術後,我們這次要看的是網站的另外一個要角:資料庫系統。

講到近年來的資料庫系統發展,我想浮現大家眼前的不外乎便是Google BigTable論文後所帶起的各種新一代NoSQL資料庫,包含HBaseCouchDBCassandra等都是這一波的熱門選擇。

所謂的NoSQL,指的便是相對於一般傳統SQL資料庫像是MySQL、PostgresSQL或者是MS SQL等關聯式的資料庫。
NoSQL資料庫的強項是高效能、分散式的架構、並且打破傳統的schema欄位架構限制等優點,目前已經應用在很多實際運作的熱門網站,包含很多社群網路或者是社交遊戲等需要大量資料處理的網站。

SQL still works但在大家一昧追求NoSQL資料庫的同時,其實傳統SQL資料庫仍然有其優點在,像是其資料的一致性、隔離性等仍然是SQL系統較為可靠。
即便像是Facebook這樣大量採用NoSQL解決方案的公司,其會員資料的部份也仍然是使用MySQL作為儲存方式。
況且根據許多的經驗分享,一般的網站若是在沒有超過千萬使用者前,實際上是可以完全不用考慮NoSQL的。換而言之,SQL系統並非效能不足,而是需要進行良好的優化以及設計。

HandlerSocketHandlerSocket是由日本遊戲公司DeNA所釋出的開放原始碼專案,為一個MySQL的外掛,企圖解決的便是上述的效能問題。
根據作者部落格的數據圖表,大家可以很明顯的發現HandlerSocket的表現相當突出:

                                          approx qps      server CPU   util
MySQL via SQL                    105,000         %us   60%    %sy 28%
memcached                          420,000        %us    8%     %sy 88%
MySQL via HandlerSocket      750,000        %us   45%    %sy 53%

實際上HandlerSocket的運作原理也相當的好理解,主要便是透過原生的API介面來繞過SQL查詢中最慢的步驟,也就是SQL語法的解析。曾經使用過SQL查詢的開發者變知道,為了查詢資料庫裡面的內容,我們並需撰寫SQL述句來進行查詢,而SQL語句的字串必須經過解析,這過程是相當花費時間的,且也有可能解析失敗。

除了繞過SQL語法的解析之外,在後續的優化上,HandlerSocket會保持資料表(Tables)的開啟,並不會在每次的查詢都開啟、關閉資料表,因此相較一般的SQL操作來得快上不少。

整體而言可以參考下面的流程圖:



作者的部落格文章中也有更多的技術細節可以參考。

結論相對於現正流行的NoSQL技術,我更加看好HandlerSocket為主的MySQL優化技巧,畢竟NoSQL目前仍然在快速發展的階段,對於開發資源較為有限的創業團隊而言,或許選擇MySQL為主的技術仍然會是比較好的選擇。