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+木などはまた別の