CentOS5.3にMembaseをインストールする

NoSQLデータベースのMembaseが先日リリースされたので、早速インストールして試してみました。
Membaseについて詳しくはこちら。http://www.publickey1.jp/blog/10/memcashednosqlmembase.html

Membaseについてざっくり言うと、永続化可能なmemcachedってことでいいのかな?永続化可能でmemcached並に速ければ、TokyoTyrantに取って変わるんじゃないですかね?

インストール

http://www.northscale.com/get_started.html
どこからダウンロードするのかよくわからなかったけど、上記のURLを開いて一番右のMembaseを選び、必須項目を適当に埋めて登録をすればrpmが落とせます。
rpmを落としたら、rpm --installをすれば終了です。

$ sudo rpm --install northscale_server_1.6.0beta1_x86.rpm 

インストールが完了したら、http://hostname:8080にアクセスしてみましょう。Membaseの設定はブラウザから行います。
メモリとかSSDとかの設定がでるけど、適当に画面を進めていけばいいと思います。あとから再設定できるのかはよくわかってません。

こんな感じの画面になったら設定終了です。この後は普通にmemcachedと同じように操作すれば大丈夫です。
Membaseが使うデフォルトのポート番号は11211で、memcachedと同じポートを使うようになっていますが、これをどうやって変更するのかはわかりません。誰か教えてください。

Membase vs memcached vs TokyoTyrant vs Redis

Membaseを入れてみたので、実際にどれくらいの速度が出るのか試してみました。
memcached vs TokyoCabinet vs TokyoTyrant vs Redis - blog.katsuma.tv
この記事のパクリですね。これにMembaseを加えてみた感じです。
クライアントによって速度が変わるのが嫌だったので、すべてPythonのmemcachedクライアントを使って、1万回setを行いその時間を計測してみました。

Membase 1.18884205818
memcached 0.683738946915
TokyoTyrant 0.788640022278
Redis 0.642278909683

思ったよりMembaseが遅い…。って言うかRedis速い。

まとめ

使おう!Redis!APIも豊富だし、レプリケーションとかも簡単らしいよ!


ちなみに今回計測に使ったコードはこちら

# -*- coding: utf-8 -*-
import time
import memcache

def get_message(kbytes):
    return "1234567890" * 100 * kbytes

if __name__ == '__main__':
    # initialize
    server = [
        '11211', #Mmebase
        '11212', #memcache
        '1978', #Tokyo Tyrant + tch
        '6379', #Redis
    ]
    for s in server:
        print s
        mc = memcache.Client(['127.0.0.1:'+ s])
        mc.flush_all()

        message_num  = 10000
        message_size = 1
        message      = get_message(message_size)

        # set
        start_time = time.time()
        for index in range(message_num):
            mc.set(str(index), message)
        end_time = time.time()

        # print progress time
        progress_time = end_time - start_time
        print 'set time: %s' % progress_time