第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 サーバ (IIS, Apacheなど) Web ブラウザ Web ページ
サーバ側でプログラムを実行させる方法(その1) CGIを用いてWebサーバと別のプロセスを起動して プログラム実行 クライアント側 サーバ側 要求により起動 Web ブラウザ Web サーバ CGI Program HTML
サーバ側でプログラムを実行させる方法(その2) Webサーバに組み込まれたモジュールとして同一プロセスとして実行する、 クライアント側 サーバ側 要求により起動 Web サーバ内 モジュール Web ブラウザ Web サーバ
サーバ側でプログラムを実行させる方法(その3) Webサーバとは別のプロセスを起動しておき、Webサーバから要求を受けてプログラムを実行 クライアント側 サーバ側 要求 Web ブラウザ Web サーバ Program 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のインターフェース 標準化されたインターフェース(例: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) DBMSドライバ DLL(Sybase) ・・・ (SQL Server) (Oracle) (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を用いたB2B商取引環境が整備されつつある。 定型的なデータベースと非定型的なドキュメントデータベースをXMLで統合化できる可能性も秘められている。
(b)XMLとデータベース XMLとRDBとの比較 RDB XML スキーマ DTDやXMLスキーマ データ本体 XML文書 問合せ言語 XQuery データ構造は表形式なので、複雑なデータを表現するには複数の表が必要。 もともと文書記述に適した形式を目指しているので、自由度の大きい木構造である。 構造化データを扱う。 半構造化データを持つ。 データ型の宣言やデータの制約条件などの機能がある(オブジェクト指向の導入) データ型の宣言機能が不十分である。 データベース管理機能を持つ。 通常のファイルに格納される。
XMLをRDB格納する方法 ①非構造化格納法 XML全体を1つのデータ項目としてテキストとして格納。 ②構造化格納法 XML文書のスキーマに応じて、関係に対応させ、データを意味のある単位に分解して格納。 ③ハイブリッド方式 非構造化格納法と構造化格納法を併用する。 ④木構造格納法 XML文書は木構造なので木のノードや枝に着目して関係を作成し、文書を分割して格納する。
格納方法の選択条件 ①通常の文書に近いXML文書は、非構造化格納法かハイブリッド方式が適している。 ②内容がデータ中心の場合、可能であれば構造化格納法が適している。
XMLのRDBへの格納例 ISDN 書名 種類 出版社 9784904551XYZ 電気通信技術入門 教科書 △○出版 著者ID 氏名 所属 <書籍データ> <書籍 種類="教科書"> <書名>電気通信技術入門</書名> <著者><氏名>山田豊</氏名> <所属>○○大学</所属></著者> <著者><氏名>林昭三</氏名> <所属>○×大学</所属></著者> <出版社>△○出版</出版社> </書籍> </書籍データ> XMLのRDBへの格納例 <書籍> ISDN 書名 種類 出版社 9784904551XYZ 電気通信技術入門 教科書 △○出版 <著者> <書籍の著者> 著者ID 氏名 所属 000001 山田豊 ○○大学 000002 林昭三 ○×大学 ISDN 著者ID 9784904551XYZ 000001
(XMLとRDBのまとめ) ①Web-データベース連携によるXML利用が重要。 ②XMLを中間言語とすることで、データベースを扱うアプリケーション作成が容易になる。 ③業界や商品ごとに共通化したXML形式を使うことでアプリケーションを連携させることが容易になる可能性が高い。