以 NoSQL 概念去存取 MySQL - HandlerSocket

edited 十月 2013 in 資料庫
網址: http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html

日本 DeNA 公司的 YOSHINORI MATSUNOBU 不久前公開了一個 MySQL 外掛 HandlerSocket ,這個外掛安裝後會為 MySQL 開啟額外的連線介面,透過這個介面可以用非 SQL 語法直接存取儲存在 MySQL 的資料,藉此改善 SQL 語法解析造成的資料存取瓶頸,而且有了驚人的成效。

在作者的測試環境,透過簡單的 Key-Value 查詢,得到下面3個每秒查詢數量:
MySQL + SQL = 105,000
memcached = 420,000
MySQL + HandlerSocket = 750,000

雖然上述的測試都是在記憶體中進行,但是效能有大幅的改進,非常值得一試。

隨後沒多久, mysqlperformanceblog 的 Vadim 用 SSD 進行測試:
http://www.mysqlperformanceblog.com/2010/11/02/handlersocket-on-ssd/

在 SSD 進行的測試中雖然不如記憶體,但效能降低的程度不會像傳統硬碟組成的陣列那樣, Vadim 表示也許會再未來版本的 Percona Server 加入這個外掛。

原始作者只有提供 C++ 與 Perl 存取介面,已經有各種延伸到其他語言的實作,在 PHP 已經可以看到3個:
http://openpear.org/package/Net_HandlerSocket
http://github.com/tz-lom/HSPHP
http://code.google.com/p/php-handlersocket/

預期最後一個,以 PHP 外掛實作的版本,應該會有比較好的效率(未經測試)。

專案網址:
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL

在 Ubuntu 安裝的教學:
http://ronaldbradford.com/blog/mysql-handlersocket-under-ubuntu-2010-11-05/

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=5518

評論

  • edited 十一月 2010
    不錯耶
    這東西不知道和 mongodb 有沒有得拼
    如果一開始規模不大採用 mysql , 規模大了資料多了想轉資料庫到 mongodb 就頭大
    有這外掛可以省掉不少麻煩
  • edited 十一月 2010
    http://blog.chenlb.com/2010/05/mongodb-vs-mysql-query-performance.html
    有人發這種測試
    mongodb 的 key value 查詢也是比起 mysql 快上數倍
    但看來 HandlerSocket 可以補足 SQL 語法效能的缺憾做到和 mongodb 一樣快 (搞不好更快 ?)
    真是越看越覺得很有發展性
  • edited 十一月 2010
    mongodb 前不久在 Foursquare 實作中有出現過問題,雖然癥結點也許在 Foursquare 技術團隊的能力,但是也讓 mongodb 的使用出現一些疑慮,畢竟它還是個很年輕的專案,不像是 MySQL 已經經歷了那麼多的風雨,而且還有 Google, Facebook 的 patches 加持。

    之前也曾經多次想過要把一些實作轉到 mongodb 試試,但是想到關聯資料查詢部份就很頭大,為一些在 MySQL 常用的查詢寫 MapReduce 邏輯好像痛苦程度異常的高,還好 HandlerSocket 出現了 XD
  • edited 十一月 2010
    就是啊 . 全部改用 nosql 對於開發人原來說是很痛苦的事情
    我現在看一看
    如果某部份應用可以先用這種可以提昇不少效能
    例如有 loading balance 的網站 , session 就必須用 memcache 或 db 的方式
    現在用 HandlerSocket 搞不好可以先實作出比 memcache 更高效的 session 機制
Sign In or Register to comment.