1
データベース
第 14 回 (2) データベースと WWW 連携
鈴木幸市
今日の内容
背景
Web 三層モデル
可用性を保つために
故障監視とフェイルオーバ
DB 特有の技術
共有ディスク
レプリケーション
DB クラスタ
3
WWW とデータベース
WWW の位置づけの変化
最初は静的な文書の閲覧
論文向けに開発された
動的にデータを埋め込んだりするための拡張機能あった
これを使うと動的に HTML 文書が生成できる
GUI アプリケーションのプラットフォームとして WWW
が使われるようになってきた
サーバサイドでは、 JAVA などの言語で動的に HTML 文書を作る
クライアントサイドでは、 Java Script や Active X を使って アプリケーションを動作させることができる
WWW をアプリケーションのプラットフォームとして使う
ようになると、データベースとの連携は自然な動き。
他のアプリケーションのプラットフォームと変らない要件
である
簡単な WWW の動作モデル
クライアント サーバサイド
5
サーバサイドスクリプトの例
<? php
function getMessage($prefix =
NULL)
{
$message = 'World';
return $prefix.$message;
}
echo Getmagge("Hallo\n“)
?>
WWW アプリケーションを構成する要
素
Web ブラウザ これは利用者が用意
Web サーバ
静的な HTML 文書を持つ
動的な HTML 文書はサーバサイ ドスクリプトに依頼して組み立て る
サーバサイドスクリプト言語
Web サーバからの要求によ
り、 HTTP に組み込まれたプログ ラムを実行
データベースへのアクセスの方法 もこのプログラムに書かれている
データベース
サーバサイドスクリプト言語から の要求に応じてデータベースの データを読み書きする
7
サーバの構成要素の配置 (1)
小さなシステムなら一つのサーバにすべて置
いてもいいが、、、
サーバはインターネットにさらされる
セキュリティを考えなければならない
Web サーバは静的な HTML を保管しているだけな
ので、ここは守りやすい
サーバサイドスクリプトやデータベースは乗っ取ら
れると困る
静的 HTML を書き換えて所望のプログラムを動かしてし まうことはできるが、その監視はできるはず
データベースを乗っ取られるのが一番困る
それぞれの構成要素の間にファイアウォールを置いて、 怪しいデータが来ないように予防する
サーバの構成要素の配置 (2)
サーバの構成要素の特性がそれぞれ違う
Web サーバとサーバサイドスクリプト言語の
部分
たくさんのリクエストを処理するので、 CPU と
ネットワークに負荷がかかる
CPU が早いサーバが必要
ストレージは量も速度も重要ではない
たくさんのサーバで処理を分担することができる
データベース
大量の入出力を行うので、 I/O に負荷がかかる
9
サーバの構成要素の配置 (3)
故障への対応も違う
Web サーバとサーバサイドスクリプト
静的な HTML をコピーしておいたサーバを予備にして
おく
動作中のサーバが故障したら予備を動かせばよい
複数のサーバで負荷分散させていた場合
故障したサーバに処理を行わせないようにすればいい
性能が低下するだけ
データベース
データは時々刻々変っていくので
あらかじめデータをコピーして予備にすることができない
レプリケーションや、ディスクの切替などを使って、最 新のデータを使ってサービスをしなければならない。