インターネットとデータベース

第8章 データベースシステムの発展
8.1 オブジェクトリレーショナルデータベース
8.2 分散データベース
8.3 インターネットとデータベース
8.3 インターネットとデータベース
1.Webとデータベース
(a) Webの普及とデータベース
1991年、商用に使用できない制限(AUP : Acceptable Use
Policy)が外されてから、研究者・技術者以外の一般の人の利
用が普及してきた。
今や、個人ユーザやビジネスに欠かせない存在
世界中の情報間を行き来することが可能(Webの利用)
企業内ネットワークとしてのイントラネット
ビジネスへのインターネットの応用
データベースとの関連
① Webの情報そのものもデータベースの一種と考えることが
できる。
② 検索エンジンは情報検索のツールであるが、データベース
の検索とはかなり異なっている。
③ インターネット上の機密保持機能は不十分なので、信頼性
確保はDBMSで行い、Webサーバとのインターフェースを
とる機能が開発されている。
(b)Webを用いたアプリケーション
Webのシステム構成
クライアント側
Web
ブラウザ
サーバ側
Web
サーバ
(IIS, Apacheなど)
Web
ページ
サーバ側でプログラムを実行させる方法(その1)
CGIを用いてWebサーバと別のプロセスを起動して
プログラム実行
クライアント側
サーバ側
要求により起動
Web
ブラウザ
CGI
Program
Web
サーバ
HTML
サーバ側でプログラムを実行させる方法(その2)
Webサーバに組み込まれたモジュールとして同一プロセスとし
て実行する、
クライアント側
サーバ側
要求により起動
Web
ブラウザ
Web
サーバ
Web
サーバ内
モジュール
サーバ側でプログラムを実行させる方法(その3)
Webサーバとは別のプロセスを起動しておき、Webサーバから
要求を受けてプログラムを実行
クライアント側
サーバ側
要求
Web
ブラウザ
Program
Web
サーバ
HTML
CGIを用いる方法
① CGIはどのWebサーバでも使用できる。
② Perlなどのスクリプト言語やC言語など、一般
のプログラミング言語を使用できる。
③ 要求ごとにプロセスが起動されるのでオー
バヘッドが大きいので大規模なアプリケーシ
ョンには向いていない。
Webサーバのモジュールとして実行する方法
① スクリプト言語PHPやRubyなどが使える。
② CGIに比べて高速な処理が可能である。
③ PerlをWebサーバのモジュールとして組み込
むこともできる。
Webサーバと別のモジュールを常駐させる方法
① Java Servlet, JSP, ASP.NET等がある。
② どのWebサーバでも利用できるとは限らない。
③ 効率が良いとともに大規模アプリケーションプ
ログラム開発も可能である。
(c) プログラムとHTMLの記述方法
<html>
<head><title>CGIの呼び出し</title></head>
<body>
<form method="GET" action="cgiprog.cgi">
<p>入力データ
<input type="text" size=20 name="indata"></p>
<p><input type="submit" VALUE="OK"></p>
</form>
</body>
</html>
2番目のOKボタンをクリックすると、actionで指定されたプログラム
が起動され、indataという変数名の値としてテキストボックスのデー
タが渡される)
実行結果をWebに表示させる方法
①プログラムのprint文等にHTML を埋込み、そ
れを表示する。(CやPerlの方法)
②HTML文書の中にプログラムを記述する。(PHP
やRubyの方法)
Webを記述するほうが簡単なのでPHPがよく使われる。
Web-データベース連携など特定目的のプログラムの場合、HTML
タグを拡張し、HTML内に直接処理を記述する方法がある。
MTMLとプログラムを混在させる方法
Webデザインとプログラムの混在によって、
大規模プログラムの場合は複雑になってしまう。
混在したプログラムから通常のプログラムを呼び出して実行する。
JSPのページからJavaBeansのプログラムを利用する。
(d) Web-データベース連携
【最も単純な方法】
入力画面と出力画面を用意し、入力画面で入力したテキストをSQL
の問合せとする。
一般ユーザにとって使いやすいとは言えない。
①グラフィカルな入力画面を用意する
②動作指示のためのボタンを用意する。
etc.
通常の利用方法
① ユーザがWeb画面から何らかの指定を行うことでアプリケーシ
ョンが起動される。
② アプリケーションからDBMSにアクセスする。
形態上は、サーバ上でのアプリケーションの起動と同じ
アプリケーションとDBMSのインターフェース
① DBMS, プログラミング言語別の専用インターフェース
② 標準化されたインターフェース(例:ODBC)
ODBC( Open Database Connectivity)
① 同一コンピュータ内だけでなくネットワーク経由でも利用可能。
② Javaでは各所のDBMSの利用を可能とするためJDBCが標準とし
て用意されている。
Application 1
Application 2
Application n
・・・
ODBC API
ODBCドライバ・マネージャ(ODBC.DLL)
DBMSドライバ
DLL(SQL Server)
DBMSドライバ
DLL(Oracle)
(SQL Server)
(Oracle)
DBMSドライバ
DLL(Sybase)
(Sybase)
・・・
2.XMLとデータベース
(a) XMLの概要
Extensible Markup Language and Data Base
<?xml version="1.0" encoding="Shift-Jis" ?>
<!DOCTYPE 学生データ[
<!ELEMENT 学生データ(学生)>
<!ELEMENT 学生(氏名, 性別, 体格データ)>
<!ELEMENT 氏名(#PCDATA)>
<!ELEMENT 性別(#PCDATA)>
<!ELEMENT 体格データ(身長, 体重)>
<!ELEMENT 身長(#PCDATA)>
<!ELEMENT 体重(#PCDATA)>
]>
<学生データ>
<学生><氏名>加藤哲哉</氏名><性別>男</性別>
<体格データ><身長>172</身長><体重>63</体重></体格データ>
</学生データ>
XML宣言
DTD
本文
もうひとつの例
DTD
<?xml version="1.0" encoding="Shift-Jis" ?>
<!DOCTYPE 書籍データ[
<!ELEMENT 書籍データ(書籍)>
<!ELEMENT 書籍(書名, 著者 +, 出版社)>
<!ELEMENT 書名(#PCDATA)>
<!ELEMENT 著者(氏名, 所属)>
<!ELEMENT 氏名(#PCDATA)>
<!ELEMENT 所属(#PCDATA)>
<!ELEMENT 出版社(#PCDATA)>
<!ATTLIST 書籍 種類 CDATA #REQUIRED)>
]>
もうひとつの例
本文
<書籍データ>
<書籍 種類="教科書">
<書名>電気通信技術入門</書名>
<著者><氏名>山田豊</氏名>
<所属>○○工業大学</所属></著者>
<著者><氏名>林昭三</氏名>
<所属>○×大学</所属></著者>
<出版社>ゆたか創造舎</出版社>
</書籍>
</書籍データ>
スタイルの記述
①HTMLにおけるCSSでもスタイルを記述可能。
②XSLで書式情報付き文書に変換できる。
(ここではデータベース的側面に関する話題
が中心なので詳細については省略)
XML文書の検索
① XML文書は木構造になっているので、文書の一
部を探したり、特定の場所を指示するために
XPathを用いてルートから該当ノードまで検索
できる。
② タグ名でデータ種類を指定できるので、SQLに
類似したXQueryという言語が用意される。
XMLに関する傾向
① 特定業界や特定商品に関する情報のXMLによる標準化を行う動
きが盛んになってきている。
② データベース管理システムのXML対応が急速にすすんでいる。
③ XMLを用いたB2B商取引環境が整備されつつある。
④ 定型的なデータベースと非定型的なドキュメントデータベース
をXMLで統合化できる可能性も秘められている。
XMLとRDBとの比較
(b)XMLとデータベース
RDB
XML
スキーマ
DTDやXMLスキーマ
データ本体
XML文書
問合せ言語
XQuery
データ構造は表形式なので、複雑なデー
タを表現するには複数の表が必要。
もともと文書記述に適した形式を目指してい
るので、自由度の大きい木構造である。
構造化データを扱う。
半構造化データを持つ。
データ型の宣言やデータの制約条件など
の機能がある(オブジェクト指向の導入)
データ型の宣言機能が不十分である。
データベース管理機能を持つ。
通常のファイルに格納される。
XMLをRDB格納する方法
①非構造化格納法
XML全体を1つのデータ項目としてテキストとして
格納。
②構造化格納法
XML文書のスキーマに応じて、関係に対応させ、デ
ータを意味のある単位に分解して格納。
③ハイブリッド方式
非構造化格納法と構造化格納法を併用する。
④木構造格納法
XML文書は木構造なので木のノードや枝に着目して
関係を作成し、文書を分割して格納する。
格納方法の選択条件
①通常の文書に近いXML文書は、非構造化格納法か
ハイブリッド方式が適している。
②内容がデータ中心の場合、可能であれば構造化
格納法が適している。
<書籍データ>
<書籍 種類="教科書">
<書名>電気通信技術入門</書名>
<著者><氏名>山田豊</氏名>
<所属>○○大学</所属></著者>
<著者><氏名>林昭三</氏名>
<所属>○×大学</所属></著者>
<出版社>△○出版</出版社>
</書籍>
</書籍データ>
XMLのRDBへの格納例
<書籍>
ISDN
書名
種類
出版社
9784904551XYZ
電気通信技術入門
教科書
△○出版
<著者>
<書籍の著者>
著者ID
氏名
所属
ISDN
著者ID
000001
山田豊
○○大学
9784904551XYZ 000001
000002
林昭三
○×大学
9784904551XYZ 000001
(XMLとRDBのまとめ)
①Web-データベース連携によるXML利用が重要。
②XMLを中間言語とすることで、データベースを扱
うアプリケーション作成が容易になる。
③業界や商品ごとに共通化したXML形式を使うこと
でアプリケーションを連携させることが容易に
なる可能性が高い。