最近、小規模案件で組み込みDBを使うことがあるので、商用利用可能なRDBMSについて簡単にまとめてみました。
目次
SQLite
一番有名な組み込みDBではないでしょうか。
主なメリット
- DBはファイル単位で作成されるので、インストール不要
- ファイルのコピーで、データのバックアップが可能
- サービスの起動が不要(ファイルにアクセスできればOK)
- ファイルサイズ(DBサイズ)は、最大128TiB(ファイルシステムに依存)
- 自動でROWIDが振られる(ログ等のデータ保管に便利)
主な制約
- 正確にはRDBMSではなく、トランザクション分離レベルをサポートしていない
(同時実行制御とSQLite3が詳しいです) - 基本的なデータ型は、整数型(INTEGER)・文字列型(TEXT)・バイナリデータ型(BLOB)の3つのみ
- ユーザやアクセス権限の概念がない(パスワード等データを保護する仕組みがない)
- 一部、使えないSQL構文(演算子や句)がある
- マルチスレッドが苦手なので、同時接続数が多いアプリケーションには向かない傾向がある
Firebird
パスワード管理などが必要な際などに利用しています。
主なメリット
- ファイルのコピーで、データのバックアップが可能(オンラインバックアップも可)
- 高度なトランザクション管理機能(MGA)がある
- 実行環境(配布先)には、組み込み(embedded)版を使えば、インストール不要
- DBをパスワードで保護できる
- 頑丈で壊れにくいと評判
- ファイルサイズ(DBサイズ)は、最大64TB(ファイルシステムに依存)
主な制約
- 通常、開発時にはFirebirdのインストールが必要
- プライマリキーのAUTO INCREMENTが用意されていなく、且つ、ROWIDがない
- 個人的な感想として、管理ツールのUIが古っぽい(数年前に比べだいぶ改善されましたが...)
- 日本語の情報が少ない
LocalDB
クライアントの希望がある場合に利用しています。
主なメリット
- "Visual Studio"のGUI上で操作可能
- "SQL Server Compact Edition"と異なり".NET Framework"の導入が不要
- "SQL Server"とAPIレベルの互換性がある
- DBをパスワードで保護できる
- "SQL Server Express Local Database Runtime"でDBインスタンスの管理が必要なく、最小の構成と管理で実行可能
(既存のインスタンスに影響を与えない) - ROWIDを割り当てることが可能
主な制約
- 開発環境・実行環境ともに"SQL Server Express with Tools"要インストール
- C/Sモデルなので、要サーバ
- "SQL Server Express 2008 R2 Express"以降は、10GB / DBのサイズ上限がある
- CPUリソースは、1 ソケットまたは 4 コアのいずれか小さいほうに制限される
- エンジン部分が利用できるメモリ容量は最大1GB
- ファイルを排他制御するので、LocalDBは複数ユーザが使うアプリケーションには向かない傾向がある