Gaucheのdbmライブラリは、NDBM、GDBMといった簡易データベースを使うためのAPIを共通化します。dbmライブラリからNDBMやGDBMを使うにはこれらの簡易データベースがあらかじめインストールされている必要があります。
Gaucheには、Gaucheのみを使って書かれたdbm.fsdbmライブラリが付属しています。dbm.fsdbmライブラリを使うには外部ライブラリをインストールする必要はありません。
dbm.fsdbmライブラリを使う
dbm.fsdbmライブラリを使うには、あらかじめ次の式を評価させておく必要があります。
(use dbm.fsdbm)
これ以降のデータベース操作は、dbm.fsdbmライブラリのときも、NDBMを使うためのdbm.ndbmライブラリのときも、GDBMを使うためのdbm.gdbmライブラリのときも共通です。後述するdbmライブラリのdbm-openメソッドやdbm-closeメソッド、dbm-put!メソッド、dbm-getメソッドはどのデータベースにも共通に使えます。
ファイルシステムにデータを保存する
dbm.fsdbmライブラリはデータをファイルシステムに保存します。あらかじめ、Gaucheから書き込み可能なディレクトリをデータの保存場所として確保しておく必要があります。
例:
/home/loginname/data
上記はログイン名がloginnameであるユーザーのホームディレクトリ配下の、dataという名前のサブディレクトリに保存する場合の例です。
データベースをオープンする
データベースをオープンするには、dbmライブラリのdbm-openメソッドを使います。
例:
(dbm-open <fsdbm> :path "/home/yasuyuki/data" :rw-mode :write)
dbm-openの最初の引数は使用したいデータベースの型(クラス型)です。上記の例ではファイルシステムデータベース(fsdbm)を使用したいので<fsdbm>型を指定しています。
オプション引数である:pathキーワードに続いて、データベースの格納先のパス名を指定します。上記の例では"/home/yasuyuki/data"ディレクトリにデータを保存させます。
オプション引数である:rw-modeキーワードに続いて、データベースのアクセス制限を指定します。上記の例では読み書き可能を示す:writeキーワードを指定しています。
:rw-modeキーワードで指定できるアクセス制限は次の種類があります。
| キーワード
| 意味
|
| :read
| 読み取り専用
|
| :write
| 読み書き可能。存在しない場合は新たに作られる
|
| :create
| 新規作成。すでに同名のDBが存在する場合は内容が消去される
|
dbm-openの戻り値は<dbm>型(クラス型)のインスタンスです。オープンに失敗した場合はエラーが発生します。
データベースをクローズする
データベースをクローズするには、dbmライブラリのdbm-closeメソッドを使います。
例:
(dbm-close my-schedule-db)
dbm-closeの引数は<dbm>型のインスタンスです。クローズに失敗するとエラーが発生します。クローズして以後のデータベースへのアクセスもエラーが発生します。