nDiki : Berkeley DB

Berkeley DB

2004年2月8日 (日)

Berkeley DB 4.2.52 + DB_File 1.808 をホームにインストール

[ Perl ]

DiKicker の二次データの保存先を何にしようか思案中。 MLDBM::Sync が候補なのだが、MLDBM::Sync::SDBM_Fileだとデータが大きくなった時に速度が出ないようだ。

このサーバ(FreeBSD)のPerl(5.005_03)は、DB_FileGDBM_Fileも有効になかったので今までDBMパッケージの使用は避けてきたのだが、さすがに今回は使えないと辛いかも。

ということで Berkeley DB も含めて DB_File をホームにインストール

db-4.2.52

 tar zxvf db-4.2.52.tar.gz
 cd db-4.2.52/build_unix
 ../dist/configure --prefix=$HOME/local/db-4.2.52
 make
 make install
 rm -rf $HOME/local/db-4.2.52/docs

インストール自体は特に依存するものも無く簡単。 ただし、このサーバでは丁度 busy だった事もあってビルドに2時間!もかかってしまった。 本来は暇そうな時にやるべきなのだろうけど、今日中にうまくいくか検証しておきたかったので、待った。

DB_File-1.808

 tar zxvf DB_File-1.808.tar.gz
 cd DB_File-1.808
 export DB_FILE_LIB=$HOME/local/db-4.2.52/lib
 export DB_FILE_INCLUDE=$HOME/local/db-4.2.52/include
 perl Makefile.PL INSTALLDIRS=site \
                  LIB=$HOME/local/lib/perl \
                  INSTALLMAN1DIR=/tmp/man/man1 \
                  INSTALLMAN3DIR=/tmp/man/man3
 make OTHERLDFLAGS="-Wl,-rpath -Wl,$HOME/local/db-4.2.52/lib"
 make test
 make install

libdb を実行時に検索させるのに LD_LIBRARY_PATH環境変数とか指定したくなかったので、-rpath を指定してしまった。 Makefile中の OTHERLDFLAGS 変数がリンク時に空だったので、ここで設定。

しかし libdb-4.2 でかいな。 Perl からの呼び出し一発目は結構時間がかかる。

スポンサード リンク
[ 2月8日全て ]

2004年2月9日 (月)

[ Perl ] Search::InvertedIndex

DiKicker のキーワードインデックス用の転置ファイル実装によさそげなモジュールはないかと CPAN をあたってみたところ、Search::InvertedIndex を発見。

Berkeley DB を複数束ねて大容量対応してあったりキャッシュ実装されていたりと高機能だが、それゆえ今回使うにはオーバースペックっぽい。 依存するモジュールもそれなりにあるし。

やっぱ、今回は自分で実装するかな。 しかし Search::InvertedIndex 自体は結構使えそうな感じなので機会があったら試してみたい。

[ 2月9日全て ]

2004年2月24日 (火)

[ DiKicker ] キーワードDBを作り直し

キーワードインデックスファイル(Berkeley DB DB_HASH)の、レコード仕様を決めなおして修正。

[ 2月24日全て ]

2006年11月21日 (火)

[ DiKicker ] 語リストを Term DB に保持

自動リンクなどで語リストが必要な時に、今までは Term DB (Berkeley DB実装)をスキャンしてリストアップしていた。 これだと語数が増えていくにつれ線形に遅くなるので、一度リストアップしたら Term DB の別レコードに Storable で freeze してキャッシュするようにしてみた。 ちょっと速くなることを期待。

あわせてロックまわりも改善。 DiKicker では Article DB と Term DB をセットでオープンすることとし、Article DB の方で排他制御をしている。 ただし、Term DB の方には排他ロックでオープンされているか、共有ロックでオープンされているのかの情報を伝えていなかったため、実は共有ロックの時にも書き込みをしてしまう部分が残っていた。

Term DB オープン時にどちらで開いているかを通知するようにし、キャッシュ情報などの書き込み時にはこれらを参照して間違えた書き込みをしないようにした。

[ 11月21日全て ]

2010年9月15日 (水)

今日のさえずり: 「謎が解けそうだよ!」(代償は大量のデバッグログコード)

2010年09月15日

  • 09:24Twitter? 目の前には新・午後の紅茶の広告。どこが新しいの(両方とも)?
  • 10:07 Evernote の今回のサイクルではじめて 250MB 弱までいった。今日の午後には新サイクルに入るはず。
  • 10:57 MongoDB におけるアトミック操作について確認。
  • 12:10 弁当 350円。 (@ 向日葵 和泉町店・カレー食堂) http://4sq.com/9oazrC
  • 12:25 今日は環境変数 ComSpec が comspec から ComSpec に戻ってるよ……。
  • 16:56 もちっとホットケーキ 105円。 (@ ファミリーマート神田佐久間町店) http://4sq.com/biJuCj
  • 17:42 「じっちゃん、謎が解けそうだよ!」(代償は大量のデバッグログコード)。
  • 19:47 会社出ようとしたら雨。
  • 20:14 前のおばちゃんが JTB 箱根パンフレットを上目遣いで激しく睨んでて怖い。
  • 22:57 Berkeley DB って今 Oracle なのか。猫の時代しか知らない。
  • 23:59 MongoDB みたいなドキュメント指向データベースで組み込みデータベースって無いのかな。カジュアルに使いたい。MongoDB を自力で埋め込むのは大変だろうし、GNU AGPLv3 を意識しなければならないし。
  • 24:08 ああ、やっぱり PARKER のエスプリ欲しい。 http://amzn.to/cw8Fnp
  • 24:28 明日 9:00 出社だった。寝る。
[ 9月15日全て ]

2014年2月19日 (水)

いよいよ WiKicker から WikiEngine のコードを抜いて DiKicker のみにする

2002年10月19日から開発を始めてしばらく公開・運用をしていた WikiEngine だけれど最近は WikiEngine そのものは使っていなくて、今はそのコードをベースに作った日記システムDiKicker 部分しか使っていない。DiKicker の方は自分自身で今後も使っていくんだけれど、さすがにいろいろ古いのでそろそろ大改修しようかなと。基盤部分的には

  • Perl 5.005_03Perl v5.6 系との互換処理を捨てる。
  • 文字列処理をバイナリ文字列ベースから(いわゆる UTF8 フラグ界隈的な)テキスト文字列ベースにする。
  • CGI.pm ベースから PSGI ベースへ移行する。
  • 中間管理用のストレージを Berkeley DB から SQLite にする。

などをして今後も使っていけるようにしたい。既に使っていないアプリケーションとしての WikiEngine 部分は移行させていく手間をかける必要はないと思うので、コードを削除していくことにした。WikiForum 立てるなら既にいろいろ他の選択肢があるしね。

CVS での管理もやめて Git 管理に変更。最後の公開 tarball を展開して git init して最初のコミットとし、その後に変更した作業ディレクトリを Git 側の作業ツリーに上乗せしていったんコミット。あらためて最後の公開コードの上に差分を積んでいくつもり。

[ 2月19日全て ]

2015年5月27日 (水)

今日のさえずり: データの寿命を考えて自作日記システムは(記事データは)プレーンテキストファイルですって言ったら驚かれた

2015年05月27日

[ 5月27日全て ]

2016年10月26日 (水)

ようやく日記システム DiKicker のメンテナンス開始

この日記(nDiki)で使っている自作日記システム DiKicker開発し始めたのが2003年12月末なのでもう13年物だったりします。ここ最近大きなメンテナンスはしていなかったのですが、まだこの先10年以上使えるように手を入れることにしました。一昨日から着手。

やりたいこと

  • もともと WiKicker (WikiEngine) からの派生で作ったのでが WiKiEngine の方は使わなくなったので、不要なコードを削除したい。共通部分をスーパークラス化してあるけれどもここもまとめたい。
  • WikiName の特別扱いをやめたい。
  • Perl 5.005_03 でも動くように Perl v5.8.0 未満かどうかで処理を変えているけれども、もう 5.005_03 用のコードは消したい。
  • データを Berkeley DB にトリッキーな形で入れているので SQLite あたりに変えて簡単にしたい。
  • 最終的には Go で書き換えたりして。
[ 10月26日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィの SNS の企画開発を行うグループでマネージャー・プロダクトオーナーをしています。CS 向上・ユーザーサポート・健全化などにも取り組んでいます。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.051315s / load averages: 0.58, 0.35, 0.35
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker