LAN構築において
SQL ServerとAccessとのデータベースの違い

マイクロソフト「Access」はそれ自体がRDBMSである。また、手軽に扱えるため非常に人気の高いアプリケーションでもある。中小企業などでは、Accessを利用してさまざまなデータベースを活躍している例も多い。Accessが有能なRDBMSなので、SQL Serverを使うべきかが検討されることも多い。しかし、このような検討はそもそも間違いである。AccessとSQL Serverでは何が違うのだろうか。Accessで基幹業務などのデータベースを構築している場合は、以下の解説でその違いをよく理解して、正しい選択をしてほしい。
 SQL Serverは、データベースシステムをネットワーク上に提供するという形でサービスを行っている。 クライアントの要求はすべてサーバ側で行われ、データベースの更新状況をトランザクションログとして保存している。 サーバのダウンなどの障害に対しても、一貫性のあるデータが保証されているわけである。
 一方、Accessは、ファイル共有型のデータベースシステムである。クライアントの要求はすべてクライアント側で処理され、その結果をファイル更新という形で保存していく。当然、障害時のデータの一貫性は保証されない。また、すべての処理がクライアント側で行われるということは、たとえば必要な行を検索する場合、それはクライアントの仕事だ、という意味である。当然、すべての行はネットワークを流れてクライアントに渡される。 SQL Serverのようなデータベースサーバでは、クライアントはサーバに対して、必要な行を得るためのコマンド、例えば

 select from 社員マスタ where 社員番号 =28

を送信し、サーバ側でクライアントの要求するコマンドを実行し、ネットワークを通してその結果を返す。
Accessのようなファイル共有型データベースでは、目的のテーブルを順次読み込み、クライアントアプリケーションが必要なデータを検索することになる。両者のネットワークトラフィックの差を想像してほしい。
ネットワークで複数の人が共有するデータベースシステムとしては、両者の違いは歴然であり、Accessのデータベースを多くの人で共有するという選択肢はほとんどないと言っても過言ではない。Accessは個人または少数の人で利用するためのRDBMSなのだ。Accessではあまりにも簡単にデータベースを利用できるため、それを利用した結果、非常に困った状況に陥っている企業担当者も多い。これからデータベースを構築しようとしている場合は特に注意してほしい。
 さて、Accessの欠点ばかりを述べてしまったが、長所もたくさんある。例えば、グラフィカルにフォームやレポートを作成できる機能だ。また、マイクロソフト「Access97」ではDAOが3.5にバージョンアップされ、JETを介さずにODBCにアクセスすることが可能になった。これによってVisual Basicで RDOを利用する場合とほぼ同等のパフォーマンスを得ることができる。Accessで作成されたプログラムを Visual Basicに移植するよりも当然効率が良いため、現在Accessで作成しているデータベースをSQL Serverベースに移行する際にその真価を発揮するだろう。
ただし、アプリケーションの実行速度では到底Visual Basicにかなわない。今年発売が予想されるVisual Basic5.0ではコンパイル機能も装備され、現在よりもはるかに高速なアプリケーション作成が可能となる。 データベースのパフォーマンスが追いついたとはいえ、アプリケーションが遅ければ最終的には使えないシステムになってしまう。どちらで作成しようかと悩んでいる場合は、アプリケーション自体の高速性がどの程度重要になってくるかを踏まえて検討してほしい。



Back Office Vol.2より抜粋