- ベストアンサー
データベースサーバー構築
- Webで公開するデータベースのシステムを構築しようとしています。自分のスキルの範囲でやろうとしていますが、分からないことがあります。
- データベースサーバーとは何かについて理解があやふやです。データベースサーバーを別に設ける必要があるのかどうかも分かりません。
- どのデータベースが適しているか迷っています。メインで商品在庫を公開し、更新頻度が少ないシンプルなデータベースの場合、SQL ServerとMySQLのどちらが良いのか悩んでいます。また、SQL ServerをインストールするPCは何が最適かも分かりません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
はじめまして。以下、長文ですが回答いたします。 1.データベースサーバーとは何か? データベースをインストールしたPC = データベースサーバという認識で、概ね問題はないと思います(時によりですが、データベースソフトそのものをデータベースサーバと言う事もあるでしょう。IISというソフトそのものをウェブサーバと呼ぶように)。 ウェブサーバとデータベースサーバを別々のPCに別けるかどうかは、また別の問題です。 よくあるパターンとしては、開発時には1つのPCに IIS とSQL Server をインストールして開発を行い、実稼動時には物理的に別々のPCにウェブとデータベースを別けるなんてやり方があります。 2.データベースは何がよいか?(SQL Serverでよいか?) 質問の内容を拝見する限りでは、機能面的にはどれでも大差ないというのが実感です。 1万~3万レコードというのは、商用RDBで扱うボリュームとしては、かなり小規模な部類に入ると思いますので、高速性云々を気にされているようですが MySQL を選んだために致命的に遅くなったということは無いと思います(当然、ミリSec、マイクロSecの差は出ますが、致命的とは言えないですよね?)。 ですので、選ぶポイントとしては、価格、サポート内容、ネット上のコミュニティーの有無、周りに識者がいるかどうかといった点を考慮された方が良いと思います。 そういった意味で、SQLServer を選択されるというのは、有力な選択肢の一つと考えて良いでしょう。 3.SQL ServerをインストールするPCは何が最適か? XP よりも 2000 の方が安定しているかどうかというのは、大変難しい問題な気がしますが、2003Server が使えるのであれば、それをお勧めします。セキュリティ、サポート、安定性などを考えて、ウィンドウズ系OSとしては、もっとも有効な選択といえるでしょう。 4.最終的に自分の思っていることと実体の構成(理解)は理解は以下のような感じで正しいのでしょうか? 正しいです。 正しいですが、必ずしもウェブサーバとデータベースサーバを別ける必要はありません。 金銭的に余裕があるなら、別けるべきですが、1台のPCで構成してもとりあえずは問題なく動くでしょう。パフォーマンスの問題も、さほど気にならないと思います。 ただし、障害時復旧という観点から言えば、断然別けるべきです。このあたりの話は、話し出すとかなり長くなるので割愛しますが…。 老婆心ながら1点付け加えるならば、「共有データベースで壊れにくい?壊れない?」との記述がありましたが、壊れないデータベースというものはありえません(また、壊れないと明確に謳っているデータベースも無いでしょう)。ですので、マニュアルなどをきちんと読んで、障害時対応の最低限の知識を得ておくことと、バックアップ運用のルールしっかりと決めておくことをお勧めします。 5.SQL ServerのデータベースはMDBのような最適化というような作業が必要なのでしょうか? 商用RDBはMDBに比べるとだいぶ高級ですので、さほど気にする事はないかと思います。 ただ、delete/insert を繰り返し何度も行うと、パフォーマンスが下がる場合がありますので、1年に1度くらい気にしてあげた方が良いかもしれません。 最適化のやり方は、データベースの実装依存ですので、マニュアルを見るしかありませんが、一般的なTIPSとして、バックアップ⇒TRUNCATE⇒インポートなんてのもあります。 6.SQLServerは行ロックできないか そんなことはありません。ちゃんと行単位でロックできます。 行単位でデータベースにロック命令を出すことを「悲観的ロック」といいますが、このロックのやり方は、真面目に考え出すと結構むずかしく(ロックしたら必ずロック解除する必要があるが、ユーザが途中で操作をやめてしまったら…?)、採用には一考の必要があります。 ちなみに、提示の例ですと、Aさんが更新を終えるまで、Bさんは「更新画面を見れない」ということになると思います。 一般的に、行ロックされたレコードに対する取得要求は即時エラーになるか、ロックが解除されるまで待つかです。ロック解除まで待つ方法を選択した場合、確実にロック解除されるように実装しないととんでもない目にあいます。 排他制御の方法として、悲観的ロック以外に「楽観的ロック」という方法もありますので、導入を検討してみてください。 MDBとRDB(SQLServer等)は、似ている部分もありつつも、本質的にかなり異なるものですので、導入直後はかなりの想定外トラブルに悩まされると思います。 ただ、システムを大規模化していく以上、避けては通れない道だと思いますので、がんばってください。
お礼
大変参考になる回答ありがとうございます。 おおむね自分の理解が正しかったようなので自信になりました 今、win2000にエキスプレスエディションをインストールしてみました これからが大変ですが、しっかり勉強していこうと思います ロックについては cgiをやっていたときに すごく悩んだことがあり やはりこれは複数が使うデータでは避けて通れない問題ですね 自分のシステムにあったロック方法を勉強してやってみようと思います ありがとうございました。