最終更新:2010-08-16 (月) 09:05:07 (4994d)  

Kyoto Cabinet
Top / Kyoto Cabinet

http://fallabs.com/kyotocabinet/

http://alpha.mixi.co.jp/blog/?p=1969

特徴

  • 時間効率:ハッシュDBはO(1)、ツリーDBはO(logN)の時間計算量。更新能力は100万qps以上。
  • 空間効率:レコードあたりのフットプリントが、ハッシュDBだと8~16バイト、ツリーDBだと2~4バイト。
  • 並列性:ハッシュDBはレコード単位のread-write lockのみ、ツリーDBはツリーDBはページ単位のread-write lockのみ。
  • 利便性:Visitorパターン風インターフェイスによるレコード操作の一般化。多相DBによるアルゴリズムの動的変更。
  • 堅牢性:手動トランザクション、自動トランザクション、自動リカバリ等の実装。
  • 移植性:UNIX系(LinuxFreeBSDSolarisMac OS X)だけでなくWindowsVC++?)もサポート。
  • 他言語バインディング:C++がコアだが、C, JavaPythonRuby、[[Perl],Lua]のバインディングも提供。

メモ

Tokyo Cabinetは全てC言語で記述してあり、標準ライブラリ以外はすべて自作しているため高速化されている半面、メンテナンスが難しくなっているとのことで、Kyoto Cabinetでは、多少性能を犠牲にしてもC++STL(標準テンプレートライブラリ)で実装したものと説明されています。

しかしKyoto CabinetはTokyo Cabinetに比べて空間効率と並列性は向上しているとのことで、マルチコア、メニーコアの環境ではKyoto Cabinetのほうが効率がよいそうです。

参考