さて、membaseが気になるお年頃で、membaseとmemcacheで速度比較してみました。以前、repcacheとの速度比較もしたのですが、データをなくしちゃったというか、ほとんど劣化しなかったので、とってもつまらなかったです。membaseもmemcache互換プロトコルをサポートしてくるので、コードを書き換える必要はありません。会社で試したときは、うまく動かなかったのですが、家ではちゃんと動いています。何が違うのでしょう?
まず、membaseの独断と偏見の特徴は次の3つです。
- クラスタ構成
- memcache互換プロトコル
- レプリケーションとデータの永続化
それでは、ベンチマークします。コードは以前の記事で使ったこれです。測定環境は、家のiMacです。会社のマシンより遥かにいいマシンです。えへん。memcache,membaseのサーバはVMWare上のUbuntu 10.10で動かしています。なので、ネットワーク構成がブリッジになっています。
で、membaseはdata bucket(データの保存形式)が二つあります。一つがmembaseのオリジナルのもので、もう一つがmemcacheです。違いがあまりわからないのですが、memcacheはon memoryということでしょうか?
- membase (membase bucket) : 0.32 m sec
- membase (memcache bucket) : 0.22 m sec
- memcache : 0.034 m sec
まず、addする時間ですが、memcacheに比べて10倍遅いです。なんど計っても、違いがありません。memcacheのbucketなら多少速いですが、memcacheと比べるとやっぱり遅すぎます。
それでは検索というか、フェッチするスピードです。
- membase (membase bucket) : 0.30 m sec
- membase (memcache bucket) : 0.22 m sec
- memcache : 0.032 m sec
検索もやっぱり一桁遅いです。membaseはとても魅力的な機能を持っていますが、10倍の速度差は許容できないです。多分、一般的にmemcacheより10倍遅ければ、APIが同じでも全体の作りを変えないといけません。
MongoDBがより複雑なことをしておきながらKVSとして使う場合2から3倍の速度劣化しかないのにくらべると、やはりmembaseは納得できる遅さではありません。
ということで、membaseはmemcacheの代替ではなく、使いどころをちゃんと考えないと行けないです。
でわでわ。
MongoDBがより複雑なことをしておきながらKVSとして使う場合2から3倍の速度劣化しかないのにくらべると、やはりmembaseは納得できる遅さではありません。
ということで、membaseはmemcacheの代替ではなく、使いどころをちゃんと考えないと行けないです。
でわでわ。

0 コメント:
コメントを投稿