Developmentの最近のブログ記事

最近Tokyo Cabinet(正確にはTokyo Tyrant経由でTokyo Cabinet)のテーブルデータベースを使っているんですが、どうも検索が遅いなぁと思ったらインデックスを張り忘れてて、Tokyo (Cabinet|Tyrant)でどうやってインデックスを張るのかを調べたので、そのまとめです。

実際にTCのテーブルデータベースでインデックスをどう張るのかというと、foo.tctってDBのnameってカラムにインデックスを張るとすると
% tctmgr setindex foo.tct name
ってやればOK。実際には張るインデックスのタイプが選べますが、その辺はドキュメントに載っていますのでそちらをご覧ください。

PerlモジュールのTokyoCabinetを使って張る場合は、
my $tdb = TokyoCabinet::TDB->new;
$tdb->open("foo.tct", $tdb->OWRITER | $tdb->OCREAT);
$tdb->setindex("name", $tdb->ITLEXICAL);
ってやるだけでOK。

Tokyo Tyrant経由でもTokyoTyrant::RDBTBLにsetindex()って関数があるのでそれでインデックスが張れます。

また、Tokyo Tyrantのttserverでテーブルを指定して起動する際にも
% ttserver "foo.tct#idx=name:lex"
って感じにファイル名のあとに指定することもできるみたい。
いろいろな張り方があるんですねぇ。

ちなみインデックスを張るとfoo.tctとは別に「foo.tct.idx.name.lex」ってファイルが出来ます。どうやらここにインデックスが入ってるようです。
ファイル名がどのDBのどのカラムにどんなタイプのインデックスが張られているのか一目瞭然ですね!最後の.lexはインデックスのタイプですね。

で、ここまでわかって思ったのが、これって一度作成したらレコードがputされる毎に更新されるのか、わからなかったのでTokyo Cabinetのソースをみてみたらputされるタイミング(tctdbputimpl())でtctdbidxput()が呼ばれるようなので(両関数ともにtctdb.cの中)、一度作成作成しておけば、あとは勝手に更新されるようだ。

なるほどねぇ。
よくできてるなぁ。

http://webmaster.hatena.ne.jp/1123227040

近頃注目を集めている JavaScript ですが、どのような開発環境で開発していますでしょうか。(ブラウザ、デバッガ、エディタ、ブラウザのプラグイン、そのほか)

こんなのをみつけたので、JavaScriptに限らず自分の開発環境を公開してみようかと思う。前2chとかでもこんなの見たことあるな。ちなみにバトンとか言ってるけど、別に次の人にまわす気はないけど(笑)

  • メインOSはなんですか?
  • Windows + サーバへの踏み台にMac OS X

  • ブラウザはなにを使ってますか?

  • Firefox
    JavaScriptの開発をするときにはIEも使ってデバッグします。

  • メッセンジャーはなにを使ってますか?

  • gaim
    前はregnessem使ってました。

  • MUAはなにを使ってますか?

  • Becky!
    やっぱ早いですし、これですね…。wanderlustやmuttなどを使っていたときもあります。

  • ターミナルソフトはなにを使ってますか?

  • putty
    昔はteratermだったんですけどねぇ。大学でUnix使ってたときはktermでした。
    あとscreenを起動させるので、基本的には1つのターミナルしか起動していません。screenないと死ぬ…。

  • shellはなにを使ってますか?

  • tcsh
    tcsh以外は今まで機会がなくて使ってこなかったですね。

  • IMEはなにを使ってますか?

  • skk、skkime
    MacではAquaSKK使ってたりします。skkマンセー。

  • エディタはなにを使ってますか?

  • emacs + 場合によってvi
    サーバに入って、muleとかemacsが入ってなかったり、設定ファイルをいじるときはviを使います。

  • メインの開発言語はなんですか?

  • perl
    言わずもがな…。

  • MTAと言えば?

  • qmail

  • Webサーバと言えば?

  • apache

  • Proxyサーバと言えば?

  • apacheでmod_proxyかmod_rewrite
    squid使うこともありますね。

  • 今目の前のPCに起動させているソフトはなんですか?(タスクバーも含む)

  • Firefox、あふ、Becky!、gaim、putty、Mozilla Sunbird、iTunes、マウ筋、skype、Konfabulator、IPMessenger、窓使いの憂鬱、bluewind、紙、サクラエディタ
    リンク書くのめんどいのでやめ…。

疲れた…。ちょっと質問多かったかな(汗)

検索

広告

OpenID対応しています OpenIDについて
Powered by Movable Type 4.22-ja