Tokyo Cabinet 試す (hash)
Tokyo Cabinet。最近興味が沸いたので少し触ってみることに。ほんのお触り程度、で。
データベースマネージャ Tokyo Cabinet
http://1978th.net/tokyocabinet/
エントリタイトル、わざと『東京キャビネット』と書こうとしたのだけど、同名の企業が存在するので素直に書いた。しかも地元の企業だ。こっちの方が驚いた。
■インストール
OSは手元のFedoraとCentOS。yumで入ります。
# yum install tokyocabinet
Fedora12はインストールした記憶はないのだけど既に入っていた(?)。
お触り程度なのでCLIでtchmgrコマンドを。’h’はハッシュ。
tchmgrコマンドに-hパラメータを与えるとヘルプ出力。
■tchmgr version
バージョン出力。2010年02月03日現在Officialでは1.4.42が最新だと言っているので少し古い感じ。
$ tchmgr version
Tokyo Cabinet version 1.4.33 (824:1.0) for Linux
Copyright (C) 2006-2009 Mikio Hirabayashi
■tchmgr create
とりあえず、何かデータベースファイルを作ってみる。パラメータにファイル名を与える。
500kb程度のファイルが出来上がる。
$ tchmgr create coffee.tch
■tchmgr inform
さっそく生成したデータベースファイルの情報を出力してみる。
パラメータには同じくデータベースファイル名を。
$ tchmgr inform coffee.tch
path: coffee.tch
database type: hash
additional flags:
bucket number: 131071
alignment: 16
free block pool: 1024
inode number: 2326537
modified time: 2010-02-03T00:07:31+09:00
options:
record number: 0
file size: 528704
■tchmgr put
レコードを追加してみよう。パラメータは、データベースファイル名、Key、Valueの順。
$ tchmgr put coffee.tch espresso エスプレッソ
■tchmgr get
まだ1レコードしか追加していないけれど、データを取り出してみる。
$ tchmgr get coffee.tch espresso
エスプレッソ
■tchmgr list
更にレコードを追加してリスト表示させてみる。
$ tchmgr put coffee.tch caffellatte カフェラテ
$ tchmgr put coffee.tch cappuccino カプチーノ
$ tchmgr list coffee.tch
espresso
caffellatte
cappuccino
こで再びデータベースの情報を出力。record numberが3となっている。
$ tchmgr inform coffee.tch
path: coffee.tch
database type: hash
additional flags:
bucket number: 131071
alignment: 16
free block pool: 1024
inode number: 2326537
modified time: 2010-02-03T00:26:54+09:00
options:
record number: 3
file size: 528848
■tchmgr out
outによりレコードを削除する。削除するレコードのKeyを与える。
$ tchmgr out coffee.tch caffellatte
リスト表示してみる。
$tchmgr list coffee.tch
espresso
cappuccino
削除したレコードをgetしてみる。
$ tchmgr get coffee.tch caffellatte
tchmgr: coffee.tch: 22: no record found
当然エラーとなる。
■tchmgr optimize
optimizeは最適化だが、これまでのcoffee.tchに行っても効果は何もない。
$ tchmgr optimize coffee.tch
■tchmgr importtsv
最後にimporttsv。tchmgrはあらかじめ用意したタブ区切りのファイルを読み込ませることで、データベースファイルを生成することができる。また、既存のデータベースファイルにレコードを追加することも可能だ。
パラメータは、データベースファイル名、インポートするファイル名の順。
以下内容のファイル(numero.txt)を用意した。
uno ウーノ
due ドゥーエ
tre トレ
quattro クアットロ
cinque チンクェ
sei セーイ
sette セッテ
otto オット
nove ノーヴェ
dieci ディエーチ
$ tchmgr importtsv numero.tch numero.txt
(00000010)
追加されたレコード数が出力される。
リスト表示してみよう。
$ tchmgr list numero.tch
uno
due
tre
quattro
cinque
sei
sette
otto
nove
dieci
とりあえずここまで。
B+木などはまた別の