MySQL插件handlersocket的一個java客戶端 - HSJ介紹
HSJ是mysql插件handlersocket的一個java客戶端。Handlersocket(以下簡稱hs)是mysql的一個插件,旨在提高mysql的寫入和讀取性能,它通過插件的方式賦予MySQL完整的NoSQL功能,從原理上講,它跳過MySQL中最耗時的語法解析,查詢計劃等步驟,直接讀取數據,如果內存夠大,能裝下索引,MySQL的查詢效率能提高若干倍!
相關原理和性能表現參見:(中文)http://www.mysqlops.com/2011/10/19/handlersocket-principle.html(英文,國內或許不能訪問)http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html。hs的安裝比較簡單,兩種方式:
1.安裝mysql的 Percona Server 社區版本,最新版已經自帶了hs插件;
2.安裝mysql5.5以上版本,再安裝hs最新版。具體參見:http://huoding.com/2011/04/10/62
hs的源碼和各種語言的客戶端參見:https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
hs的java客戶端目前已知的有兩個:
http://code.google.com/p/hs4j/
http://code.google.com/p/handlersocketforjava/
handlersocketforjava這個客戶端實現簡單,不具備什么實用性。hs4j網絡層復用xmemcached,但hs一些新的操作協議沒有實現,作者好像也不再維護了,并且沒有異步調用接口。加上本人最近工作重心偏向網絡編程,所以就基于netty實現了一個新的hs的java客戶端-HSJ。
HSJ有以下幾點優勢:
1.完備的操作協議支持。包括認證(auth)和modify的各類操作。
2.異步調用接口支持。
3.開放的接口,方便支持分庫分表的應用使用。
4.更好的封裝,openindex操作復用HSJ內部已經實現,勿需調用者關心。hs4j需要自行實現,否則會使應用崩潰。
5.基于netty開發,性能上有提升。
6.完備的代碼調用示例,方便上手使用。具體參見DbOperateTest.java
當然HSJ還有很多待完善的地方,希望更多的應用使用HSJ,使之成為最好的HS java客戶端。也希望有感興趣的開發者加入。請聯系:yq76034150@gmail.com
HSJ源碼地址:https://hsj.googlecode.com/svn/trunk