MySQL/HandlerSocket和VoltDB:NoSQL的競爭者

一般認爲NoSQL數據庫在性能方面要優於傳統的SQL數據庫。但是有兩個SQL的解決方案宣佈:對於大型系統的高可擴展性需求,SQL仍然是可行的解決方案!這兩個SQL解決方案分別是MySQL加NoSQL層插件和支持SQL的VoltDB數據庫。

        MySQL + HandlerSocketYoshinori

        Matsunobu是Sun/Oracle的前僱員,從事MySQL的研發工作,目前是DeNA的首席數據庫和基礎設施架構師,他以插件的方式爲MySQL/InnoDB提供解決方案,可以在一臺2.53GHZ、8核CPU、32G內存的Nehalem服務器上把每秒的查詢數量(qps)提升到750,000以上。在同樣的硬件環境下,無插件的MySQL只能提供100,000左右的qps,如果使用memecached的話,可以增加到大約400,000。經過對RDBMS的分析,Matsunobu意識到大部分時間都花在SQL的開銷上,比如調用MYSQLparse()、MYSQLlex()、 make_join_statistics()和JOIN::optimize()等。他寫到: 很顯然性能降低的原因主要在SQL層,而不是“InnoDB(存儲)”層。MySQL必須做很多事情......但memcached/NoSQL是不需要做這些額外工作的。SQL層的功能包括解析SQL語句、打開/鎖定/解鎖/關閉表、解決併發問題等。Matsunobu的解決方案就是增加額外的NoSQL層: 我們認爲最好的方式就是在MySQL內部實現一個NoSQL的網絡服務器。也就是說,編寫一個網絡服務器作爲MySQL的插件(守護插件),用來監聽特定端口,接收NoSQL的協議和API,然後通過MySQL內部存儲引擎API直接訪問InnoDB。這種方式很像NDBAPI,不同的是它可以與InnoDB交互。他的團隊開發了HandlerSocket插件,有了這個插件,MySQL更像一個NoSQL數據庫,通過監聽一個獨立的端口,接收從SQL層來的簡單查詢請求,例如主鍵查詢,索引掃描和插入/更新 /刪除。這一變化把數據庫性能提升到了750K qps以上。常用端口可以接收處理複雜查詢,其核心仍然是SQL數據庫。DeNA採用SQL/NoSQL混合的方式取得了成功,據Matsunobu所言,在相同的時間內,這種解決方案把多個memcached和MySQL主從服務器的方案遠遠甩在了後面。

        VoltDB

       另一個很有希望的SQL解決方案是VoltDB,這是一個內存中的開源OLTP SQL數據庫,能夠保證事務的完整性(ACID)。VoltDB是由原Ingres和Postgres的架構師Mike Stonebraker設計的。該數據庫主要特徵如下: * 爲了獲得最大化吞吐量,數據保存在內存中(而不是在硬盤),這樣可以有效消除緩衝區管理。 * VoltDB通過SQL引擎把數據分發給集羣服務器的每個CPU進行處理。 * 每個單線程分區自主執行,消除鎖定和閂鎖的需求。 * VoltDB可以通過簡單的在集羣中增加附加節點的方式實現性能的線性增加。正如其開發者宣稱的那樣,該數據庫的性能使其成爲NoSQL解決方案的有力競爭者: * VoltDB在單節點上可以每秒處理53000個事務請求(TPS),其他DBMS在相同的硬件環境下只能處理1155個。VoltDB的擴展是近似線性的──在12個節點的VoltDB集羣上進行同樣測試,可以處理560,000 TPS。 * 基準案例:某個客戶的在線遊戲在12個節點的VoltDB集羣上處理了130萬 TPS。 * VoltDB還針對NoSQL的鍵-值存儲方式作了基準測試,VoltDB在處理各種鍵-值存儲負載的情況下獲得了相同或更好的性能。除了它的性能,VoltDB的主要優勢是可以與SQL用戶進行交流,這些SQL用戶是很好的資源。近期還會推出VoltDB的企業版本,包括基於瀏覽器的數據庫管理系統,提供、管理和監控數據庫集羣。除了免費的社區版本,針對企業版的支持也開始了。

        查看英文原文:MySQL/HandlerSocket and VoltDB: Contenders to NoSQL

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章