HailDBのインストール

HailDBは,BerkeleyDBの流れの組み込み型DBで,InnoDBの機能(全てのSQLクエリ,トランザクションを含む)を実現したものです.

HailDB in Launchpad

A relational database in shared library form. Not a SQL database, although you can use this library as the storage backend for a SQL database.

なかなか興味深いアプローチだと思います.

こちらを試そうと思った理由はいくつかあり,

  • 高速なクエリ機能(単純なハッシュ以上の機能)があってもいいなと思ったこと
  • SQL派ではありますが,反SQL派では無いことを示したかったこと
  • Tokyo Cabinet以外の組み込みバックエンドとして使えるDBを探していること

などです.

インストールはコンパイルさえ通れば簡単です.理由は後述.
手元のFreeBSDにインストールしてみます.

> wget http://launchpad.net/haildb/2.3/athens/+download/haildb-2.3.0.tar.gz
> tar xvf haildb-2.3.0.tar.gz
> cd haildb-2.3.0
> ./configure
> make
 CC     btr/btr0btr.lo
In file included from ./include/btr0btr.h:29:0,
                 from btr/btr0btr.c:26:
./include/univ.i:295:23: error: redefinition of typedef 'ulong'
./config.h:572:27: note: previous declaration of 'ulong' was here
In file included from ./include/data0type.h:451:0,

おっと,エラーが出て止まったので,少しだけ修正です.
これはtypedefが定義済みかどうかのチェックが怪しいだけなので,強引に書き換えます.

univ.i

#ifndef HAVE_ULONG
/* typedef unsigned long ulong; */
#define HAVE_ULONG 1
#endif /* HAVE_ULONG */

再びmakeしてインストールします.

> make; su; make install

インストールされるのはこれらのファイルのみです.

-rwxr-xr-x   1 root  wheel  12529083 Oct 10 22:54 libhaildb.so.4
lrwxr-xr-x   1 root  wheel        14 Oct 10 22:54 libhaildb.so -> libhaildb.so.4
-rwxr-xr-x   1 root  wheel       971 Oct 10 22:54 libhaildb.la

要するにライブラリ一つです.
makeの際に無茶苦茶に沢山警告が出ていたので,テストプログラムを走らせて確認します.

> make test
(中略)
PASS: tests/ib_update
===================
All 21 tests passed
===================

テストは通ったのでインストールは大丈夫そうなのですが,なかなか敷居が高くて...自前のサンプルプログラム作成までは至りませんでした.
乞うご期待.