組み込みDBについて

投稿者: | 2017年8月17日

最近、小規模案件で組み込み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は複数ユーザが使うアプリケーションには向かない傾向がある