こんばんは、水戸スヤです。
僕は業務でクライアントアプリに携わることが多いのですが、セットアップにDB(ファイル)を同梱して、データを管理するというケースがあります。
今日はその方法をまとめます。
軽量でファイルベースのRDBMSです。
大規模なデータや機密事項を扱うシステムの場合は不向きですが、一般的なクライアントアプリに使用するには十分な機能だと思います。
パブリックドメインなので、ライセンスの問題もありません。
あまり日本語の技術情報がありませんが、MySQL等よりも接続も楽なのでおすすめです。
Microsoft製なので、.net系で開発している場合は良いと思います。
VisualStudio上でも「SQL Server オブジェクトエクスプローラー」からデフォルトで接続できるようになっています。
1点残念なのが、使用するクライアントでSQL Server LocalDBをインストールする必要があるということです。
以前は、SQL Server Compact Editionという同じような組み込み用DBがリリースされていたのですが、
こちらはインストール不要でした。
サポートの都合上、今後Compactを使う選択肢はないと思います。
古くからあるシステムは、大体Accessで動いています。
こちらも簡単に扱えるので敷居は低いと思いますが、注意点もあります。
Access 2007より前(拡張子mdb)は、完全インストール不要でしたが、
2007以降(拡張子accdb)は、AccessDatabaseEngineというソフトをインストールする必要があります。
※Accessがインストールされている場合は不要
この点はSQL Server LocalDBと同じですね。
上記をインストールしないと下記のような例外が出ます。
'Microsoft.ACE.OLEDB.12.0'プロバイダーはローカルのコンピューターに登録されていません。
得意・不得意を表にしてみます。
製品 | 配布先インストール有無 | 商用利用 | 同時アクセス | セキュア |
---|---|---|---|---|
SQLite | 無 | ○ | △ | × |
SQL Server LocalDB | 有 | △ | ○ | ○ |
MS Access | 有 | ○ | × | ○ |
書いておいてなんですが、
商用利用は解釈が難しく、実際に使用を検討する場合は各自で確認をお願い致します。当方では責任を負いかねます。
同時アクセスは、Access以外可能とはなっていますが、どれもはっきり向いているとは言い難い感じでした。組み込みDBは暗黙的に、限定ユーザ数/接続数という前提のもと作られているような気がします。
僕のおすすめはSQLiteです。
既存のシステムのリプレースの場合に、仕組みを変えてまで導入するか?と言われると微妙なラインですが、これから新規で作るアプリケーションなら、SQLiteが良いと思います。
おしまい。