データベース動的コンテンツ 2011 年 5 月 19 日 4 班宇賀一登尾形勇磨田口龍一藤森夏輝藤原祐太 目次 データベースシステム データベース データベース管理システム SQL 動的コンテンツ 今回の課題について データベースシステム DBS (Data Base System) 各種アプリケーションが取り扱うデータを効率的に管理 共有 利用 ユーザ アプリケーション データベース管理システム (DBMS) データベース (DB) データベースシステム (DBS) 1 2 3 DBS の開発動機 データ格納手段として OSによるファイルシステム ファイルシステムの問題点 データがファイルごとにばらばらになる 不正な更新や誤ったデータ入力を認識する機能が存在しない ファイル単位でしか機密を保護できない 複数ユーザがデータ操作を同時に行うとデータが不正に システムの障害時にデータの整合性を保てない これらの問題点の解決 データベース 様々な利用 応用を考慮して格納されたデータの集まり データベース 生産能力確認 売り上げ予測 生産担当 販売担当 データベースの形態 カード型データベース 一枚のカードに必要な情報を記入 簡単なデータ記録のみ 関連する別のカードは更新されない 関係 ( リレーショナル ) 型データベース データモデルに表構造を用いる 複数の関係によって構成される表の集まり 4 5 6 1
データベース管理システム (1) データベース管理システム (2) データ操作言語 DBMS (Data Base Management System) アプリケーションとデータベースとの橋渡し 以下の要件を満たす 物理的データ管理 データの独立性 データの一貫性, 同時実行制御 機密保護 障害回復 物理的データ管理 データを抽象化して扱う データの独立性 データ構造の変化にもアプリケーションの変更が不必要 データの一貫性 同時実行制御 データへの複数のアクセスによる矛盾を発生させない 機密保護 利用者に応じてデータへのアクセス制限 障害回復 障害時にもシステムを矛盾のないようにする DML (Data Manipulate Language) DBMSによるデータ操作のための言語 データの登録 データの検索 データの更新 データの削除 SQL も含まれる 7 8 9 関係データベース RDB (Relational Data Base) 表構造 表は関係 ( リレーション ) と呼ばれる 関係は組 ( タプル ) の集合 組はドメイン ( 定義域 ) から取り出したアトリビュート ( 属性 ) により構成 複数の関係により構成 表構造 関係 ( リレーション ) 組 ( タプル ) 武器 属性 ( アトリビュート ) 名前 種別 攻撃力アンロック MP5K SMG 40 0 AK74u SMG 35 17 AUG AR 35 26 AK47 AR 40 38 M60 LMG 50 21 RDB の技術要素 (1) キー (key) 関係するデータを指定できる入力 (a[0]=1,..) 主キー : データを一意に指定可能なキー 候補キー : データを複数指定するキー テーブル (table) データに複数の属性を持たせる 表構造 10 定義域 ( ドメイン ){SMG,AR,LMG} から 11 12 2
RDB の技術要素 (2) ハッシュ (Hash) 与えられたキーをハッシュ関数によって別の数値に変換し データの格納番地 ( ハッシュ番地 ) を得る データ指定のための計算量 O(1) 例 : キーをハッシュ関数 f(k)=k/16の余りに変換 3015 番の情報の格納番地? 3015/16=188 あまり 7 7 ページに格納 関係データベース管理システム 操作や定義を行うソフトウェア SQLによりデータベースの操作を行う データベースシステム データ データ 命令 クエリ データベース 管理システム ユーザ オープンソースの管理システム MySQL PostgreSQL オープンソースの管理システムのシェア世界的にはおよそ 8:2 日本ではおよそ 5:5 13 14 15 MySQL 歴史 1996 年自力で開発,6 月には公式リリース 2000 年 MySQL AB 社設立 2008 年サンマイクロシステムズが買収 2010 年 Oracleが買収 2010 年最新版の MySQL ver.5.5.12 をリリース Monty Widenius 氏 ストレージエンジンの設定の自由度が高い データベースを操作するための基礎となるシステムの部品 PostgreSQL オブジェクト関係データベース管理システム 1980 年頃開発開始 1989 年発表 データ型とオブジェクトの作成が可能 データ型 : データの意味を指定できる オブジェクト : 演算子や関数が作成可能 商用の管理システム Oracle Database 大規模データベース向け 1979 年に発表された Microsoft Access 小規模データベース向け操作が簡単であり設定も容易 Microsoft SQL server 大規模データベース向け拡張性が高く 柔軟性がある 16 17 18 3
SQL の開発の経緯 SQL データ定義言語 Codd の論文 IBM 社の SanJose 研究所 System R を開発 System R のデータ操作言語として SEQUEL を開発 SQL Donald Chamberlin 氏 19 SQL とは関係データベースのデータ作成 操作 取得のための言語 機能データ定義データ操作データ制御 create 作成 drop 削除 alter 変更 truncate 全ての行を削除 スキーマ データ構造の定義の記述 20 21 CREATE の使用例 列名 型 mysql> CREATE TABLE person テーブル名 -> (person_id int, -> fname char(20), -> name char(20), -> birth_date date), -> constraint pk_person primary key (person_id); 生成されたテーブル mysql>desc person; Field Type Null Key Default Extra person_id int NO PRI 0 fname char YES NULL name char YES NULL birth_date date YES NULL データ操作言語 insert 挿入 select 検索 update 更新 delete 削除 22 23 24 4
INSERT,SELECT の使用例 データ制御言語 動的コンテンツ mysql-> INSERT INTO person -> (person_id, fname, name, birth_date) -> VALUES (1, TAGUCHI, Ryuuichi, 1990-08-21 ); mysql-> SELECT person_id, fname, name,birth_date -> FROM person; person_id fname name birth_date 1 TAGUCHI Ryuuichi 1990-08-21 grant 権限を与える revoke 権限を剥奪 例 connect 接続 select 検索 insert 新規登録 利用者の挙動に応じて変化 静的コンテンツ 25 26 27 動的コンテンツの実現 SSI の動き CGI の動き SSI (Server Side Include) HTML 内にその記述をすることにより 文字通りその処理結果をその場に挿入し表示するもの CGI (Common Gateway Interface) Webサーバ内のプログラムを実行し その実行結果を表示するもの 利用者 要求 結果 Web サーバ 要求 結果 Web サーバ 結果 起動 28 29 利用者 作成しておいたプログラム 30 5
SSI と CGI の違い CGI はユーザーからの入力を受け取れるが SSI はそれができない CGI では CGI を通じて実行されたプログラムが直接 Web サーバーに対して HTML データを送ることができる コメント : 上記の差は本質的ではなく, 動的にコンテンツを作成するプロセス (SSI->HTTP サーバ,CGI-> 別のプログラム ) の違いと, コンテンツの作成方法 (SSI->HTML の中にコマンドを埋め込む,CGI-> プログラムを記述し, プログラムで HTML を出力する命令を書く ) の違いが本質です. 31 主なスクリプト言語 PHP 単独のプログラミング言語として独立して動かすことが可能 ECMAScript JavaScript と JScript の動作を統一するために作られた言語 Perl 速度的には遅いが 手軽にコーディングでき テキストファイルの処理に関して強みを持っている言語 Ruby コメント : プログラム言語だが, HTML 中に埋め込む形で書き, PHP はプリプロセッサとして動く. コメント : 名称の似ている Java (Oracle) とは, 関係のないもの. コメント : スクリプト言語は一般にPerlに限らず速度は遅いので,Perl の特徴ではない. 今回の課題について MySQL のインストール データベース操作 OSへの直接アクセスが可能なインタープリタ言語 コメント :Perl と目的や特徴も似ているが, 完全なオブジェクト指向の言語 32 33 参考文献 Sasha Pachev 著, 伊藤直也 田中慎司 吉川英興監訳 詳解 MySQL ( オライリージャパン 2007) Alan Beaulieu 著, 株式会社クイープ訳 初めてのSQL ( オライリージャパン 2009) 北川博之著, データベースシステム ( 昭晃堂 2011) 穂鷹良介著, データベース入門 ( オーム社 1997) 谷中一朝著, 実践 Perl プログラミング ( 日経印刷株式会社 2000) 34 6