特集:第3回 Visual Studio .NETプログラミングの勘どころ(4/6 ページ)

» 2004年08月11日 08時45分 公開
[石井宏治,ITmedia]

アプリケーション開発に密接なデータベース

 開発環境以外でもっとも使われるツールはやはりデータベースではないだろうか。

 データベース、というと大げさに聞こえるかもしれないが、コードを記述する上での用途としてデータベースを考えれば、同じ種類のデータを配列として管理し、検索や絞込みを行うものはデータベースといえる。そこでデータベースエンジンを使わないのは、データベースエンジンの購入や開発のコストを考えてのことだろう。

 本格的なデータベースの利用は本記事の主題ではないので割愛するが、ツールとしてどのようなものがあるかを知っておけば設計時に選択肢が広がる。

SQL ServerとMSDE

 予算に制限がない、大規模な外部公開サイトを作る、という幸運な場合はぜひSQL Serverを使うべきだろう。環境を整えるためにはある程度のコストが必要だが、マイクロソフトのデータベースソフトの中ではもちろん最高性能を誇る。

 そこまでは、という場合には、ADO.NETでMySQLなども利用できるが、MSDE、あるいはMDBというオプションもぜひ検討するべきだ。MSDEの利点は、なんといってもSQL Serverと互換のエンジンである点だ。MSDEで作っておけば、将来SQL Serverへの移行は容易になる。MSDEではもちろんSQL Serverにはない制限事項が加えられている。主な制限は、

1. データファイルの最大サイズが2Gバイトまで

2. 対応プロセッサ数が2まで

3. 利用できるメモリが2Gバイトまで

4. Analysis Serviceやフルテキストインデックスなどの機能がない

5. 同時処理数が8まで

といったところだ。1〜4の制限事項は避けようがないので、これらに該当する場合にはSQL Serverが必要になる。そして、この程度の規模や機能を使うのであればSQL Serverの購入を検討しても見合うのではないだろうか。

 MSDEやMDBを利用するのは、そこまでの機能や規模は求めないけれど、基本的なデータ処理タスクを簡単に、高速に行いたい場合だ。この場合、最後に挙げた同時処理数の制限が問題になり、通常の設定のままではMSDEはSQL Serverよりも大きく劣る性能を示す。

 しかしMSDEの同時処理数が8を超えた時に遅くなるのは、アーキテクチャの問題ではなく、MSDEがその制限事項としてウェイトを入れるからである。実際、MSDEのアーキテクチャはSQL Serverと同じだ。

 データベースへのアクセス手段を考えてみると、クライアント サーバ型のアプリケーションとは異なり、ASP.NETサイトにおいては原則Webサーバからのアクセスしかない。逆にいえば、ASP.NETからMSDEへ流れる同時処理数を8以下に抑えれば、MSDEはSQL Serverに匹敵するコストパフォーマンスとなる。この設定は決して面倒なことではない。接続文字列としてオプションを指定しておくだけのことだ。

Server=localhost;Database=Pics2Share;Trusted_Connection=True;Connection Timeout=60;Pooling=True;Min Pool Size=1;Max Pool Size=5

 この例では、Connection Poolingの最大数を5にしている。また、これによりConnection Poolingが不足して待ちが入ることがあるため、Connection Timeoutを既定の15秒から60秒に増やしている。マイクロソフトのレポートによると、この設定を変えるだけで「4 RPS」(Requests/Second)だったMSDEの処理性能が「49 RPS」と10倍強になり、「53 RPS」のSQL Server 2000とそれほど変わらなくなったという。実際の最大値やConnection Timeoutの値は、ある程度コードが仕上がってからパフォーマンス チューニングの一環としてテストしてみればよいだろう。

 この設定の詳細は残念ながら日本語化はされていないようだが、英語でよければマイクロソフトのサイトで公開されているので参考にしてほしい。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ