Unix実験テーマ: データベース
店長 : 035737F 中村 匡
035709A 宇座 瞬
035727J 平良勇志
035740F 根保 光秀
035743A 比嘉 雅樹
035756B 宮國 渡
035758J 村山 正嗣
-お品書き-
  Level 0   Level 1   Level 2  Level 3   Level 4  Level 5   Level 6  Level 7  Level 8  Level 9   Level X
実験の目的
この実験では、サーバー上で動作するデータベース閲覧システムを作成し、データベース の構築方法やデータベースにアクセスするためのサーバーの設定方法 サーバー上で動作するプログラミング手法に付いて学ぶこと目的とする。
実験の背景
データベースには、MySQLやPostgresSQLなどフリーで使えるものや Oracleのような商用データベースなどがあり、Webサービスや業務などに使用されている。 本実験では商用として実際に多く使われているOracleを使用し、データベースを構築しデータベース閲覧システムを開発する。
Oracleデータベースの最新バージョンであるOracle10gが発表された。上述のようにOracleは商用データベースなのでトライアル版をインストールして使用することにした。
サーバー上で動作するプログミング言語はphpやperlなどがある、 本実験ではhtmlやデータベースとの相性が良いphpを使用して閲覧システムを開発する。
Level 0 インストール/環境構築
オラクルデータベースをインストールする時の手順をメモしたのでここで示す。
Level 1 データベース設計ための情報収集
作成するアプリケーションを決定し、データベース設計に必要な情報を収集する。 まず、ユースケース分析から始めるのが良い。つまり、実際に、これらの業務にかかわっている人にインタビューし、どのような記録(データベース、通常は、帳簿などの形になっている)があり、どのような仕事があるか調べよう。また、データの流れに注目して、業務を理解しよう。 仮想的な業務を想定して、それに対して分析を行っても良い。
Level 2 収集した情報の記述
収集した情報を、UMLなどの記法を用いて記述せよ。Pattern Weaverなどのツールを用いても良い。 特に概念モデルは、データベースに直接に関係しているので、丁寧に作成しよう。 データベースの依存関係を理解しないと、後で、リレーショナル・データベースをアップデートする際の作業が増える。
Level 3 データベースの構築
作成した、概念モデルにしたがって、Oracle のデータベースを作成せよ。
Level 4 テスト・データベースの構築
テスト用のデータベースを構築する。最低でも1万件以上、大きさにして、10MB以上1GB以下の大きさのテスト・データベースを生成する必要がある。 これらを手で入力することは不可能である。プログラムを作成し、乱数、または、WWW上のデータなどを利用しながら、テスト・データベースを作成する。 ヒント: 最初からデータベースにするのではなく、一度、テキスト(CSVなどか?)としてテストデータを生成する方が良い。そして、そのテキストを読み込んで、データベースに insert するプログラムを作成する。
Level 5 データベース閲覧システムの作成
作成したデータベースを、QBE (Query by Example) 形式で、検索するシステムを構築せよ。 ヒント: 使用する言語は任意で良い。PHP, Java, Perl などを使用すれば、既に WWW 上にあるプログラムを少し修正するだけでできるはずだ。
Level 6 WWインタフェースを持つデータベース閲覧システムの作成
作成したデータベースを、WWW形式で、検索するシステムを構築せよ。 つまり、WWW サーバをCGI,Servlet,PHP対応にし、そこから、データベースにアクセスできるようにする。 ヒント: 使用する言語は任意で良い。level 5 をこちらで兼ねても良いが...
level 7 トランザクションの実装
最初の設計に沿って、実際のデータベースのアップデートを行う部分を作成する。WWWベースでも良い。 ロックは必要だろうか? 必要でないなら、それは何故か? ヒント: 最初の仕様をすべて実装するところまでは期待してません。
level 8 速度の測定
作成したトランザクションの速度を測定する方法を提案し、実際に、速度を測定せよ。 最低でも数百トランザクションのテストが必要である。手動で測定することは出来ない。プログラムを作成せよ。 WWWベースであれば、このテストを書くには、HTTPを話すプログラムを書く必要がある。しかし、WWWベースである必要があるのだろうか?
level 9 システムの改良
システムを改良し、速度の向上を測定せよ。 WWWベースは速度上有利であることはありえない。しかし、実際には、WWWベース以外でシステムが作られることは、もはや、ありえない。改良点はどこにあるのだろうか? データベース設計自体を工夫することが考えられる。同時にアップデートされるテーブルは少ない方が良い。 データベースサーバに、なにかのオプションがないだろうか? インデックスとかキャッシュとか... プログラムで工夫できないか? 複数のアップデートをまとめるとか。
Level 10
新しい level を提案し、実装し、測定せよ。 想定したアプリケーションには、本当にデータベースは必要だったのだろうか? 通常のテキストと全文検索システム程度で十分だったのでは? PHPとServletの比較でも良い。 人工的なテストは、実際のアプリケーションの使われ方にそっているのだろうか? 複数のトランザクションを同時に処理するベンチマークを作るにはどうすれば良いのだろうか? データベースをPCクラスタ上で高速化するにはどうした良いのだろうか? ユーザインタフェースの適切さを評価するには、どうすれば良いか?
お会計
店長、一万円入りまーす
原材料名
当店では、遺伝子組み換え食品や寄生虫入り食品は一切使用しておりません。
- OracleSQLエキスパートリファレンス :株式会社アスキー
- PHP5徹底攻略 : 桑村潤 堀田倫英 共著 : SOFTBANK Publishing
- データベースの原理 : 赤間世紀著 : 技術堂出版
-お品書き-
  Level 0   Level 1   Level 2  Level 3   Level 4  Level 5   Level 6  Level 7  Level 8  Level 9   Level X