Berkeley DBは元々、 Sleepycat Software社が開発していた組み込み向けリレーショナルDBだったのですが、 2006年2月14日、リレーショナルDBの雄Oracleに買収されました。
今ではOracle DBの一ラインナップ として盛んに開発が進められています。Berkeley DBはライブラリ形式で提供されているRDBです。
これが意味するところは、既存のMYSQLなどに代表されるようなサーバモデルではなく、 単純にライブラリAPIをコールすることによって、ローカルに配置されたデータベースにアクセスできる ということです。
つまり、いちいちローカルのDBサーバにソケット経由でアクセスする必要はなく、 軽量・高速であるということです。
開発言語としてはC言語、Javaがあり、
どちらの言語のライブラリでも全体で 1.5MB程度と非常に小さなものです。
唯一残念なことは、C版とJava版はローカルストレージに対するデータの持ち方が違うようで、
C言語ではトランザクションログファイルとDBファイルが分かれているのですが、Javaは混在しています。
よって、C版アプリとJava版アプリの両方から同じデータベースへアクセスすることはできないようです。
これについては、今後の発展に期待したいと思います。
以下にJava版 Berkeley DBの特徴についていくつかピックアップして記述しておきます。
Java版のBerkeley DBは、100%Javaで記述された組み込み向けRDBシステムです。
特徴としては以下のような事柄が挙げられます。
・マルチスレッドサポート
レコードレベルでの排他制御を有する。
また、タイムアウト時間を超えるロックは自動的に解除する機能がある。
これによって、スレッド間で発生したDB資源へのデッドロック状態を回避することができる。
・レコード形式
レコードは(キー、データ)の組で定義される。
キー・データは、Javaの任意の型や、さらに複雑なオブジェクトで定義することができる。
・セカンダリデータベース機能
セカンダリデータベースによって、セカンダリーキーとインデックスを作成することができ、
プライマリデータベースへのショートカットとして高速なアクセスを可能とする。
・キャッシュ機能
In-memoryキャッシュ機能を持つ。
データベースへの設定の際に定義することができ、
本機能により、より高速なR/W性能を得ることができる。
・ログ機能
・バックアップ&リストア機能
データベース操作を記録したログをストレージに常に格納しておくことにより、
壊滅的なエラーが発生しても当該ログファイルをデータベースファイルが位置するパスに
コピーし、reopen()するだけで正常な状態であった段階にまで
データを復旧させることができる。
参考文献
Oracle Berkeley DataBase Java Editionのドキュメント置き場ここに、APIのヘルプやスタートアップチュートリアルなどの技術資料が置いてあります。 大変分かりやすくなっていますので一度覗いてみてください。