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クラスタ上で高速化するにはどうした良いのだろうか? ユーザインタフェースの適切さを評価するには、どうすれば良いか?

お会計

店長、一万円入りまーす

原材料名

当店では、遺伝子組み換え食品や寄生虫入り食品は一切使用しておりません。

-お品書き-
  Level 0   Level 1   Level 2  Level 3   Level 4  Level 5   Level 6  Level 7  Level 8  Level 9   Level X