はじめに
今回は,
今回も利用したコードやプログラムはgithubに置いてあるので適宜参照してください。
TokyoTyrantの特徴
key-valueストアという点ではmemcachedと同じですが,
また,
表1 それぞれのデータ型に対応するクラス名とファイル名
データ型 | TokyoTyrant | TokyoCabinet | ファイル名 |
---|---|---|---|
ハッシュデータベース | RDB | HDB | *.tch |
テーブルデータベース | RDBTBL | TDB | *.tct |
B+treeデータベース | RDB | BDB | *.tcb |
オンメモリデータベース | RDB | ADB | * |
- ※1
- 単純なkey-valueストア。
- ※2
- 一つのkeyに複数のvalueを持たせてRDBMSのように扱えます。
- ※3
- データ型に応じたファイル名を指定する必要があります。
どんなところに使える?
もっとも簡単な利用方法は,
また,
- 具体的な利用シーン
- memcachedの代替としての利用
- 複雑な検索条件を用いつつも高速なレスポンスが要求される
TokyoCabinetを試す
さて,
リスト1 TokyoCabinetを使った具体的なコード例
class TokyocabinetController < ApplicationController
require 'json'
require 'tokyocabinet'
include TokyoCabinet
before_filter :do_init
after_filter :do_finalize
def set
@hdb['key1'] = 100
@hdb['key2'] = ["foo", "bar"].to_json
@hdb['key3'] = {"a" => "ほげ", "b" => "ふが"}.to_json
end
def get
p @hdb['key1'] # "100"
p JSON.parse(@hdb['key2']) # ["foo", "bar"]
p JSON.parse(@hdb['key3']) # {"a" => "ほげ", "b" => "ふが"}
end
private
def do_init
@hdb = HDB.new # ハッシュデータベースを指定
@hdb.open('sample.tch', HDB::OWRITER | HDB::OCREAT)
end
def do_finalize
@hdb.close
end
end
TokyoTyrantを試す
TokyoCabinetでデータの保存や読み出しが出来ることが確認できました。しかし,
では,
プロンプト1 ハッシュデータベース用のTokyoTyrantサーバを別々のポートで複数起動する
sudo ttserver -port 1978 -pid /var/ttserver/pid_1978 -dmn /var/ttserver/ttcache_1978.tch sudo ttserver -port 1979 -pid /var/ttserver/pid_1979 -dmn /var/ttserver/ttcache_1979.tch sudo ttserver -port 1980 -pid /var/ttserver/pid_1980 -dmn /var/ttserver/ttcache_1980.tch