## Name

ldbThe Samba Project — 軽量データベースライブラリ

## Synopsis

    #include <ldb.h>

## 説明

ldb は軽量の埋め込み型データベースライブラリーおよび API である。 LDAP と非常に良く似たプログラミングインタフェースにより、データを tdb(3) データベースもしくは実際の LDAP データベースに格納できる。

tdb バックエンドと共に使われる場合、ldb はデータベースデーモンを 必要としない。その代わり、ldb 関数へのコールは ldb ライブラリにより 即時に処理され、データベースに対して直接 I/O が行われる。その上、 オペレーティングシステムのバイト単位のロック機構を使って、複数の 読み書きを同時に実行できる。これにより API へのオーバーヘッドが 非常に少なくて済む。時には伝統的な LDAP アーキテクチャを使った 実行に比べて 10 倍以上の速度が出ることもある。

データベースの分類的には、ldb は（バークレー DB や tdb のような） キー／値のペアを扱うデータベースと本格的な LDAP の中間に位置する。 ldb は LDAP のような構造属性志向の API と良好なインデックス機能 を備えており、軽量データベースを使った非常に洗練された アプリケーションを作れる。その際、重厚な LDAP システムを使うための 管理上のオーバーヘッドを必要としない。

ldb データベースを操作するために、数多くの有用なコマンドラインツール が用意されている。これらのコマンドは、ldap のコマンドラインツール群 とよく似た形式を持っている。

tdb バックエンドにおけるデフォルトの操作モードでは、ldb は 「スキーマを持たない LDAP」のようにも見える。デフォルトでは ldb はスキーマを必要としない。これにより、データベースを構築するのに伴う 複雑さが大幅に緩和されている。アプリケーションが成長するのに伴って その構成は複雑さを増してゆくが、ldb がオプションで提供するスキーマ とよく似た属性を使うことで、優位性を得ることができる。また、既存の ldb コードを使いながら、完全な LDAP API を使う方向に移行してゆく ことも可能である。

ldb を使うのが初めてなら、まずは ldbsearch(1) とldbedit(1) の マニュアルに目を通した上で、ローカルのデータベースを作るところから 始めることを推奨する。その後、ldb_connect(3) と ldb_search(3) の マニュアルを参照されたい。

## ツール

- ldbsearch(1) - コマンドラインの ldb 検索ユーティリティー

- ldbedit(1) - 自分の好きなエディタで ldb データベースの全部または一部を編集する

- ldbadd(1) - LDIF 形式の入力を使って ldb データベースにレコードを追加する

- ldbdel(1) - ldb データベースからレコードを削除する

- ldbmodify(1) - LDIF 形式の入力を使って ldb データベースのレコードを修正する

## 関数

- `ldb_connect(3)` - ldb バックエンドに接続する

- `ldb_search(3)` - データベース検索を行う

- `ldb_add(3)` - データベースにレコードを追加する

- `ldb_delete(3)` - データベースからレコードを削除する

- `ldb_modify(3)` - データベース内のレコードを修正する

- `ldb_errstring(3)` - 最後の操作で発生した拡張エラー情報を取り出す

- `ldb_ldif_write(3)` - LDIF 形式のメッセージを書き込む

- `ldb_ldif_write_file(3)` - LDIF 形式のメッセージをファイルに書き出す

- `ldb_ldif_read(3)` - LDIF 形式のメッセージを読み込む

- `ldb_ldif_read_free(3)` - ldb_ldif_read() の結果を開放する

- `ldb_ldif_read_file(3)` - LDIF 形式のメッセージをファイルから読み込む

- `ldb_ldif_read_string(3)` - LDIF 形式のメッセージを文字列から読み込む

- `ldb_msg_find_element(3)` - ldb_message の中から要素を見つける

- `ldb_val_equal_exact(3)` - ２つの ldb_val 構造体を比較する

- `ldb_msg_find_val(3)` - 要素を値により検索する

- `ldb_msg_add_empty(3)` - ldb_message に空のメッセージ要素を追加する

- `ldb_msg_add(3)` - ldb_message に空でないメッセージ要素を追加する

- `ldb_msg_element_compare(3)` - ２つの ldb_message_element 構造体を比較する

- `ldb_msg_find_int(3)` - ldb_message から一個の整数値を返す

- `ldb_msg_find_uint(3)` - ldb_message から一個の符号なし整数値を返す

- `ldb_msg_find_double(3)` - ldb_message から一個の double 値を返す

- `ldb_msg_find_string(3)` - ldb_message から一個の文字列を返す

- `ldb_set_alloc(3)` - ldb で使用するメモリ確保関数をセットする

- `ldb_set_debug(3)` - ldb で使用するデバッグハンドラー関数をセットする

- `ldb_set_debug_stderr(3)` - stderr 出力を使うデバッグハンドラー関数をセットする

## 著者

ldb は Andrew Tridgell によって書かれた。

問題を報告したり何らかの提案をしたい場合は、 http://ldb.samba.org/ Web サイトで現在の連絡先と メンテナー情報を確認してほしい。

ldb は the GNU Lesser General Public License version 2 およびそれ以降 の元にリリースされている。ライセンスの詳細は COPYING ファイルを参照のこと。

## 日本語訳

このマニュアルページは Samba 3.2.4 - 3.4.15 対応のものである。

このドキュメントの Samba 3.2.4 - 3.4.15 対応の翻訳は

- 堀田 倫英(hotta@net-newbie.com)

によって行なわれた。