法政大学国際文化学部

情報システム概論

担当 重定 如彦

2008122

 

10回 ソフトウェア(その3)

1.      ファイルの処理方式

ファイルのレコードを処理する方式には順処理と直接処理の2種類の方式があります。

·           順処理

どのレコードをアクセスする場合でもレコードをファイルの先頭から順番にアクセスする方式を順処理と呼びます。例えば先頭から50番目のレコードを読み込みたい場合でも、先頭から順番にレコードを49個読み込んでからようやく50番目のレコードを読み込みます。磁気テープ(例:カセットテープ)や紙テープのように、前から順番に読み込まなければならないタイプの補助記憶装置などでこの形式が用いられていますが、レコードが後ろに格納されていればいるほどアクセスの効率が悪くなるという欠点があります。

·           直接処理

乱処理とも呼ばれる方式で、アクセスしたいレコードの位置に関わらず、直接そのレコードをアクセスする方式です。順処理方式と比べてアクセスの効率が良い処理方法で、フロッピーディスクや光ディスク(CD−ROM)のように、ランダムアクセス(ディスクの好きな場所にいきなりアクセスすること)が可能な装置で良く使われます。

2.      ファイル編成

ファイルをディスクに格納する際に、ファイルを構成するレコードをどのような順序で格納するかを示したものがファイル編成です。ファイル編成には様々な種類があり、ファイルの利用目的や、ディスクの性質によって効率の良いファイル編成が選ばれます。

·           順次編成ファイル(SAM:Sequential Access Method

ファイルのデータを頭から順番にレコード単位で記録する方式で、最も単純な編成方法です。順次編成ファイル方式の利点、欠点は以下の通りです。

利点:

·           データを頭から連続して記録しているために、他の方式に比べて無駄がない。

·           他の方式と比べて大量のデータを効率よく処理することが可能である。

·           磁気テープをはじめとし、任意の種類の記憶媒体で使用可能である。

 

欠点:

·           ファイルの処理方式は順処理のみである。

·           ファイルのデータを更新した場合の処理が大変(新しくファイルを作るetc.)である。

例えば順次編成ファイルで以下の図のような形でファイルが保存されている場合、ファイルBの内容を更新した結果、ファイルのサイズが増えた場合はファイルBを元の場所で増やすわけには行かないため、ファイルBを別の場所へ移動させる必要があります。また、移動した結果、もともとファイルBがあった領域が開き領域になってしまいます。

また、ファイルを変更した結果ファイルのサイズが小さくなった場合は、上記のように別の場所にファイルを移動させるか、以下のように同じ場所でファイルのサイズを縮小するか方法が考えられますが、いずれの場合もファイルBをほとんどまるごと書きなおす必要があり、またディスクに無駄な開き領域ができてしまいます。

·           直接編成ファイル(DAM:Direct Access Method

直接編成ファイルは、ファイルを構成するそれぞれのレコードのキーに番号を設定し、そのキー番号からアクセスするレコードの位置を計算する方法です。

例えば、ファイルに学生の成績一覧を格納し、一つのレコードに一人分の学生のデータを格納する場合、学生章番号をレコードのキーとすることができます。例えば以下のような学生のデータを直接編成ファイル方式でファイルに保存する例を挙げます。

 

学生証番号

名前

田中

佐藤

鈴木

小泉

竹中

この例の場合、それぞれの学生のデータは以下のように自分の学生章番号に対応するレコードに格納されます。(四角の左の数字がレコード番号。データの左の数字がキー)

 

 

 

1 田中の成績データ

 

 

2 佐藤の成績データ

 

7 小泉の成績データ

3 鈴木の成績データ

 

 

 

 

9 竹中の成績データ

 

利点:

·           ファイルの処理方式は順処理、直接処理共に可能である。

·           直接処理が使用可能なのでどのレコードもアクセス時間がほぼ一定になる。

·           レコードの更新や削除の際の手間が少ない。例えば学生証番号が5番の小渕さんのデータを追加する場合は、5番のレコードにデータを格納すれば良いので順次編成ファイルの場合のように新しいファイルを作成する必要がない。また、佐藤さんのデータをファイルから削除するには、2番のレコードの内容を削除すれば良い。

欠点:

·           磁気テープのような記憶媒体ではこの方式は使えない。

·           上記の例のように、キーが飛び飛びの値を取る場合、多くのレコードが未使用のままになるため、記憶効率が低い。

 

先ほどの例では、キーを直接レコード番号に対応させていましたが、この方法のことを直接アドレス方式と呼びます。直接アドレス方式では、例えば銀行の顧客データのようにキーの番号が7桁(0000001〜9999999)のように非常に大きな数になる場合はレコードをその数だけ用意しなければなりません。また、そのような場合に実際に使用されるキーの番号の割合が(例えば10%のように)少ない場合、ファイルの中で無駄なレコードが非常に多くなります。そこで、キーの番号に対して特定の計算を行い、その計算結果をレコードのアドレスに変換するという間接アドレス方式が考案されました。

間接アドレス方式で使われる計算方法には、除算法、基数変換法、重ね合わせ法などがありますが、授業では除算法の例を説明します。除算法ではキーを特定の数字で割った余りをレコード番号として使用します。わかりやすいようにファイルが0〜19の20個のレコードで構成されている状態で、以下の生徒のデータを除算法で格納してみましょう。

レコードの数が20なので、それぞれの学生の学生章番号を20で割り余りを求めます(次の表では余りの列に計算結果を表示しています)

 

 

学生証番号

名前

余り

 

学生証番号

名前

余り

田中

 

210

伊藤

10

14

佐藤

14

 

226

板垣

25

鈴木

 

304

土井

37

小泉

17

 

500

橋本

125

竹中

 

624

杉田

 

余りが計算できたら、余りをキーとして対応する生徒のデータをキーのレコード番号に順番に格納します。この時格納しようとしたレコードに既に他の生徒のデータが格納されていた場合はあいているレコードが見つかるまで次のレコードを探し、見つかったレコードにデータを格納します。この例の場合、竹中さんのデータを格納しようとした場合、5番目のレコードには既に鈴木さんのデータが格納されているので、次のあいている6番目のレコードに竹中さんのデータを格納します。このように、すでに対応するキーのレコードに既にデータが格納されていたことをシノニムが発生したと言います。

下に除算法を使って上記のデータをレコードに格納した結果を表示しています。この中でレコード6,7,8に格納されている3人のデータにシノニムが発生しています。

 

500 橋本

25 鈴木

10

210 伊藤

15

 

1 田中

125 竹中

11

 

16

 

 

226 板垣

12

 

17

37 小泉

 

625 杉田

13

 

18

 

304 土井

 

14

14 佐藤

19

 

 

間接アドレス方式は、キーの番号が飛び飛びになっている場合でも、レコードの数を必要な数(データの数)だけ用意すれば良いので無駄がなく、直接アドレス方式に比べて効率よくデータを格納できます。しかし、その反面うまく計算方法を設定しないとシノニムが大量に発生し、データの検索の効率が落ちてしまうという欠点があります。

 

 

 

 

 

·           索引付き順次編成ファイル

 索引付き順次編成ファイルは順次編成ファイル方式に索引をつけることで直接処理を可能にするという方式です。別の言葉で言うと、レコードを探す際に「まず索引をひいて大雑把な位置を調べ、その位置から順番にレコードを検索する」というものです。

索引にすべてのキーに対応するレコードの位置を格納するのはキーの数が多くなった場合に効率が悪いので、索引は飛び飛びのレコードに対して行います。索引には、そのキーより小さな番号のキーを探すには何番目のレコードから探せばよいかが格納されています。例えば以下の図の場合、キー番号が14のレコードのデータを検索するにはまず索引をみて、14以上で一番小さな番号を探します。19がそれに該当するので19の横に記述されている3番目のレコードから順番にレコードを検索します。目的のキーが14のレコードは3,4,5と3回レコードを調べることでたどり着くことができるので結果として3回レコードをアクセスすれば目的のデータを見つけることができます。

この方法では、ファイルに新しくレコードを追加する場合に備えてあふれ領域というレコードが用意されています。例えば100〜199番のレコードがあふれ領域として用意されていた場合で、上記のファイルに新しくキー番号が15番の竹内さんのデータを挿入する場合、100番のレコードに竹内さんのデータを格納し、索引の部分を以下のように変更します(灰色の部分が変更された部分)。

このように、索引付き順次編成ファイル方式は、ファイルの内容を更新した場合でも、順次編成ファイル方式のように新しくファイルを作成しなおす必要はありませんが、更新を行うと「キーの順番にレコードが保存されている」という性質が壊れてしまうために索引やファイル内のレコードの構造がいびつになり、検索の効率が悪くなってしまいます。これを解消するために一定以上の更新を行うとファイルをと索引を作り直してキーの順番にレコードが保存されるように再構成を行うのが一般的です。

·           区分編成ファイル(PAM:Partitional Access Method

索引付き順次編成ファイルの発展形で、一つのファイルを複数の順次編成ファイル方式で記述された部分(これをメンバと呼びます)に分割し、それぞれのメンバがどのレコードから格納されているかを記した索引を作成する方式です。この方法は、順次編成ファイルと索引順次編成ファイルの両方の特徴をもっています。

·           仮想記憶編成ファイル(VSAM:Virtual Storage Access Method

順次、直接、索引順次、区分編成法の考え方を一つにまとめたファイル編成法で、平たく言えばそれぞれの性質のいいとこ取りをした方式です。この方法の仕組みはかなり複雑なので授業では説明しませんが、現在の多くのOSで仮想記憶編成ファイル方式が採用されています。

·           ファイルの処理方式の使い分け

こうしてみるとVSAMが最もすぐれているのですべてVSAMでやればいいのではないかと思うかもしれませんが、VSAMは高度な計算能力を必要とするので小規模なシステムでは仕組みが簡単で機械の性能が低くても実現できるVSAM以外の方式のファイルシステムが現在でも使用されています。例えば、一旦書き込んでしまった後は二度と変更をすることがないとわかっているようなファイルを格納する場合は、順次編成ファイル方式の多くの欠点が解消され、単純で大量のデータを効率よく格納できるという利点を活かすことができるようになります。このように使用するシステムの要求にあった処理方式が何かを見極め、状況に応じて方式を使い分けることが重要です。

·           断片化とデフラグ

ハードディスクなどでファイルの読み書きを行っていくと、ハードディスクの中に保存されたファイルを構成するレコードがだんだんバラバラになっていくという現象がおきてしまいます。このような状況のことをファイルの断片化(fragmentation)と呼び、ファイルの断片化が進むとファイルの読み書きに時間がかかるようになったり、ハードディスクの寿命の低下につながったりしてしまいます。Windowsではファイルの断片化を整理する方法としてデフラグ(defragmentation)というツールが用意されています。デフラグはマイコンピュータのハードディスクのプロパティのパネルの「ツール」タブで表示される「最適化」のボタンをクリックすることで行えます。また、最近のWindowsでは定期的に自動的にハードディスクのデフラグを行うような設定ができるようになっているようです。

3.      応用ソフトウェア

基本ソフトウェアは、コンピュータの基本的な動作を司るOSや、コンピュータのプログラムを作成するための言語処理ソフトウェアのように、コンピュータの中で欠かすことのできない基本的な処理をおこなうソフトウェアです。これに対し、それぞれの特別な目的のために作られたソフトウェアのことを応用ソフトウェアと呼びます。応用ソフトウェアは、目的の数だけつくることができるのですべてをここで紹介することは不可能です。ここでは、代表的な応用ソフトウェアについて紹介します。

·           ワードプロセッサ

一般にワープロと略してよばれるソフトウェアで、見栄えを重視した文章を作成する際に使われます。Word、一太郎などが代表的なワープロです。

·           表計算

家計簿や成績表など、数多くのデータの計算を扱う為のソフトウェアで、計算能力を持った表を作ることができます。Excelが代表的な表計算ソフトウェアです。

·           ウェブブラウザ

WWWを閲覧するためのソフトウェアです。Internet ExplorerNetscapeなどがあります。

·           メールソフト

電子メールの送受信を行う為のソフトウェアです。ウェブブラウザとメールソフトは現在一般のユーザが最もよく使うソフトウェアと言えるでしょう。

·           データベース

企業の顧客情報等、大量の情報を扱う(格納・検索など)為のソフトウェアで、現在のコンピュータソフトウェアの中でも非常に重要なソフトウェアの一つです。データベースを使った身近な例としては、YahooGoogleなどのサーチエンジンや、インターネット上で見ることができる辞書や地図や時刻表などが挙げられます。先ほど説明した、ファイルシステムもファイルという情報を扱う(格納・検索が可能な)データベースの一種と考えることができます。データベースに関しては、次回から授業で詳しく解説する予定です。

·           その他

この他にも画像処理ソフトやゲームなどさまざまな応用ソフトウェアが存在します。

4.      課題

以下のデータを直接編成ファイル方式でプリントの4Pと同じ方法でファイルに格納した場合、0から19番目のそれぞれのレコードには誰のデータが格納されるかを計算せよ。

答えは「データの格納されているレコード番号」、「学生証番号」、「名前」の組で1行に一つのレコードを記述すること。

記述例:

 1,6,田中

 2,12,佐藤

 ・・・

 

学生証番号

名前

 

学生証番号

名前

田中

 

114

伊藤

12

佐藤

 

147

板垣

34

鈴木

 

193

土井

76

小泉

 

352

橋本

106

竹中

 

647

杉田

 

また、上記のデータを索引付き順次編成ファイル形式で保存し、3つのレコードおきに索引をつけた場合索引域はどのようになるかを記述せよ。答えは「キー」、「レコード番号」の組で1行に一つの索引を記述すること。

 

 

 

 

 

 

 

 

 

 

 

 

課題のメールはta080017@mail.edu.i.hosei.ac.jpにお願いします。

質問のメールなどは、sigesada@hosei.ac.jpまでお願いします。

授業の資料の最新版はhttp://www.edu.i.hosei.ac.jp/~sigesada/にあります。