MSDE vs. Jet

Microsoft系のデータベースエンジンには、大きく分けて2種類あります。ここでは、適用する用件の目的に応じたメリット、デメリットを述べ、選出基準を示します。なお、これらを操作するデータアクセス手法は、こちらのページを参照してください。


将来的には、MSDEのほうがよさそうだが、スタンドアローン(C/Sに絶対にしない)前提で拡張もバージョンアップもしないのであれば、JETの方が無難のようです。ただ、データ件数がある程度大きくなると、(行レベルロックをサポートした場合)MDBは肥大化し、共有も変な動作がするという情報もあり、個人的には、SQLの互換性などを重視して、MSDEを推します。
case MSDE JET
特徴 SQL Server互換 MDB用に作られた。
互換性 ANSI- SQL準拠
Transact- SQL ( T-SQL )言語ガイドライン準拠
SQL Server と完全互換(ストアドプロシージャなどすべて)
ANSI- SQL準拠(AccessVBAは、SQL89, ADO経由は、SQL92)
T-SQLには非準拠
ストアドプロシージャはないが、QueryDefオブジェクトをサポート
NULL値を扱えない?
移植性 MSDE向けに開発したコードは、SQL Serverに移行するとき、変更する必要がない
# 本当か!?
かなりの変更量が必要であるらしい。
メモリ消費量 JETより多く消費する。(具体的な数値は?です) リソースに限りがあるシステムでは、MSDEよりパフォーマンス上有利。
同時アクセスについて
トランザクションパフォーマンス
5人まで(5セッション)までならスケーラビリティを維持する。ただし、それ以上のアクセス数がある場合、SQL Serverにしたほうが良い。 ファイル共有形式なので、複数の処理から開くとどれかが占有してしまうため、正確な共有を行うことができない。また、同時アクセスによるパフォーマンスは、MSDEのほうが上。
(個人的見解:なんかJET4.0の行ロックには信頼性がなさそう)
クライアントがハングしてトランザクションが途中で終わってしまった対応 トラブル発生の直前まで復元(自動復旧する)。
トランザクション整合性の保証
フォールト トレランスあり
前回のバックアップ(ファイル単位)で復元(自動復旧しない)。
トランザクションのロギングなし
セキュリティ Windows 2000 のセキュリティとの統合 Windows 2000 のセキュリティとの統合なし
コスト

上記表の背景色の補足
背景が白:メリット 背景が灰色:デメリット

参考リンク
データベース エンジンの選び方 (Microsoft) http://www.microsoft.com/japan/msdn/dataaccess/msde/msdeforvs.asp
MSDE と Access 2000 の違いについて http://www.users.gr.jp/Developer/asp/tech/msde.asp
AAccessの新常識! MSDEでできること http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0004/msde/
Access2000では、MDBのサイズが倍になる http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0001/db_solu/
Jetデータベースエンジン3.5と4.0を比較する http://homepage1.nifty.com/tsware/labo/labo_22.htm
 
JET3.5(Access97) vs JET4.0(Access2000)

上記の参考リンクの情報によると、JET3.5有利だが、Access2000が出たての情報なので再検証が必要と思われる。
(個人的見解:バージョンアップして、遅くなるほうがおかしい。マ社もそこまで間抜けではないだろう。ServicePack(Release)で改善しているか!?でも、Hagaki StudioをVer1.5から2000にしたとき、確かに以前のファイルより肥大化していた。)

ちなみに、Access2002(XP)のJETは、Access2000と同じです。なお、最新(SP6)Versionは、Windows 2000では、4.0.6128、Windows XPでは4.0.6226です。ということは、JETは、このまま廃れるのか!

個人的な見解:JETを採用するなら、4.0にし、Accessは、2002を使用し、データベース形式は、2000形式で運用して、Access2000でも参照できるようにする。