[Gauche-devel-jp] QDBM

Back to archive index

Kimura Fuyuki fuyuk****@nigre*****
2003年 10月 18日 (土) 17:16:01 JST


At Fri, 03 Oct 2003 20:39:13 -1000 (HST),
Shiro Kawai <shiro****@lava*****> wrote:
> 
> バックエンドをMySQLにして、速くなるのかなあ。
> 現在のwilikiのようにCGIでやる限り、一回毎にコネクションを
> 張るわけですし、検索は全文検索をやっているし…。

バックエンドのスピードがどの程度WiLiKiのレスポンスに影響するか? の実
験(のような何か)です。

こんなものを見つけたので、

http://qdbm.sourceforge.net/

とりあえずQDBMのGDBM互換モードを利用するだけのパッチを作ってみました。
次の手順で、GDBMのかわりにQDBMを使うようになります。

0. QDBMをインストールする
1. パッチを当てる
2. Gaucheを再インストール(DIST genから)
3. 古いwilikidata.dbmをリネームする

3が必要なのは、QDBMの互換モードの「互換」はインターフェースだけの話で、
データベースのフォーマットには互換性がないからです。

で、やってみたんですが、結果は……まだよくわからんです。しばらく試して
みて、調子がいいようだったら、もうちょっとまじめにQDBMへの対応を考えた
いと思います。

ベンチマークはいい数字を出してるんですけどね(データサイズが小さいのが
気になりますが)。

http://qdbm.sourceforge.net/benchmark.pdf

あと、WiLiKiの"Edit History"って「履歴を編集する」の意味に取られそうな
気がします。(歴史修正主義かも ;)

-- 
木村 冬樹

Index: dbm.ac
===================================================================
RCS file: /cvsroot/gauche/Gauche/ext/dbm/dbm.ac,v
retrieving revision 1.2
diff -u -r1.2 dbm.ac
--- dbm.ac	20 Jul 2003 10:07:10 -0000	1.2
+++ dbm.ac	18 Oct 2003 08:09:51 -0000
@@ -12,7 +12,7 @@
 dnl On some systems, legacy DBM and NDBM is emulated by more powerful
 dnl packages like BSD DB or GDBM.  We need to be careful to pick the
 dnl consistent header/library pair.
-AC_CHECK_HEADERS(gdbm.h, [
+AC_CHECK_HEADERS(gdbm.h hovel.h, [
   DBM_ARCHFILES=gdbm.$SHLIB_SO_SUFFIX
   DBM_SCMFILES=gdbm.scm
 ])
@@ -28,6 +28,7 @@
 ])
 
 AC_CHECK_LIB(gdbm, gdbm_open, [ GDBMLIB="-lgdbm" ])
+AC_CHECK_LIB(qdbm, gdbm_open, [ GDBMLIB="-lqdbm" ])
 LIBSAVE="$LIBS"
 if test "$NDBM_HEADER" = "gdbm/ndbm.h"; then
   NDBMLIB="-lgdbm"  # use emulation by gdbm
Index: dbmconf.h.in
===================================================================
RCS file: /cvsroot/gauche/Gauche/ext/dbm/dbmconf.h.in,v
retrieving revision 1.1
diff -u -r1.1 dbmconf.h.in
--- dbmconf.h.in	20 Jul 2003 10:07:10 -0000	1.1
+++ dbmconf.h.in	18 Oct 2003 08:09:51 -0000
@@ -15,3 +15,5 @@
 /* Define if you have the <gdbm/ndbm.h> header file. */
 #undef HAVE_GDBM_NDBM_H
 
+/* Define if you have the <hovel.h> header file. */
+#undef HAVE_HOVEL_H
Index: gdbm.stub
===================================================================
RCS file: /cvsroot/gauche/Gauche/ext/dbm/gdbm.stub,v
retrieving revision 1.17
diff -u -r1.17 gdbm.stub
--- gdbm.stub	5 Jul 2003 03:29:10 -0000	1.17
+++ gdbm.stub	18 Oct 2003 08:09:51 -0000
@@ -34,9 +34,18 @@
 ;;;
 
 "
+ #include <gauche/extend.h>
+ #include \"dbmconf.h\"
+
+ #if HAVE_HOVEL_H
+ #include <hovel.h>
+ #include <stdlib.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #elif HAVE_GDBM_H
  #include <gdbm.h>
  #include <stdlib.h>
- #include <gauche/extend.h>
+ #endif
 
  SCM_CLASS_DECL(Scm_GdbmClass);
  static void gdbm_print(ScmObj, ScmPort *, ScmWriteContext*);



Gauche-devel-jp メーリングリストの案内
Back to archive index