←講義のツボメニューへ
←【ファイルとデータベース】シラバスへ データレコードとファイルアクセスの種別
【2000.04.21 1限 第2回】副題:データはどのように蓄えられるか
- データベースに蓄えられるデータ:通常のファイルと同様に、ハードディスクやCD−ROMなどの補助記憶装置に格納される
- ただし、どのような秩序のもとに格納しておくかによって、取り出しやすさに違いが出てくる。
- 今回の内容は、データベースを作る側に立った場合の、システムの内容でなされているノウハウに関するものである。
- これを知っていると、データベースを使う側に立った場合にも、何も知らずに使っているのとは違った視点が出てくる。
1.物理レコードの構成
- 「物理レコード」=計算機が1回の入出力命令で読み出したりあるいは書き出したりするデータの単位。「ブロック」ともいう。
- 「ページ」=物理レコードの大きさは、可変長の場合もあるし、固定長の場合もあるが、ここでは固定長の場合の各物理レコードの事を「ページ」と呼ぶことにする。
- 各ページが補助記憶装置に格納されている様子を簡単化して表現すると下図のようになる。
図2・1 ページの格納方法
- 「論理レコード」=計算機でデータをファイルに蓄積する場合の、利用者にとって意味のある、一連のデータ単位。単に「レコード」と言った場合、物理レコードではなく、論理レコードのことを指す
- 物理レコードと論理レコードの関係:物理レコードの方が大きく、一つの物理レコードには、複数の論理レコードが格納されている。
- レコードの中はさらに細分化され、「フィールド」という単位に分けられる。逆に言えば、複数のフィールドが集まって一つの意味あるものとなったのが「レコード」
- レコードの構成の仕方の3種:
- 各フィールドが固定長の場合
- 各フィールドが可変長で、フィールド長も記憶する場合
- 各フィールドが可変長で、フィールド長とフィールド名を記憶する場合
- 上記の各場合の長短所:
※万能な方法はない。
- 固定長の長さを越えると超えた部分を格納出来ない点、固定長を長くとりすぎると無駄が生じやすい点だが、一般に、処理はしやすい。
- aの短所をカバー出来ることが長所だが、処理するさいに、レコードごとに長さを見る必要が生じる。
- 値が設定されないもしくはされていないフィールドの格納領域を無駄に消費しないという長所があるが、bの短所に加え、フィールドごとに何のフィールドか判断する必要が生じる。
- 「データ圧縮」=無駄な情報を取り去って蓄積データを減らすこと
- データ圧縮の方法としては、前後のレコードを比較して差異のある部分だけを記憶するとか、コード化する、などが代表的
- 例)静止画(jpeg、gif)、動画(mpegのIフレーム等)
- データベースではデータ量が莫大になることが多いので、データ圧縮が必要になることが少なくない。ただし、データ圧縮をすれば、当然逆変換としての解凍作業の必要も生じる。
2.レコードを早く呼び出す方法
設問:あなたならどうしますか?
Q1.10枚の名刺の中から、ある特定の人物の名刺を探すには、どのようにするか?
Q2.100枚の名刺の中から、ある特定の人物の名刺を探すには、どのようにするか?
Q3.1000枚の名刺の中から、ある特定の人物の名刺を探すには、どのようにするか?
- 前から順番にすべてを見ていく方法には、数が多くなるほど使いものにならなくなる。この場合の「名刺」は、データベースにおける「レコード」と置き換え可能。
- データベースに蓄積されるレコードの件数が多くなると、その中から特定のレコードを素早く取り出すことがだんだんと難しくなる。
- 現在、実システムで使われているノウハウとして、「ハッシング」、「インデックス」の2つを紹介する。
2.1 ハッシング
- 「キー」=レコードを識別するフィールド。異なるレコードで同一の値をとることがなく、このフィールドの値さえわかればレコードを一意に特定出来るフィールド。
例)学籍番号など- メインアイディア:キーkに変換fを施して、格納ページpを得る/決定する
p=f(k)
- f:ハッシュ関数。キーをページ総数で割った余りを使うのが代表的
- ページがレコードであふれたら、他のページに格納するためのルールも決めておく。(例:最も簡単には「次のページ」など)
- 格納のルールが定まれば、探すためのルールも定まる。
インデックス(索引)
- 書物の巻末にあるインデックスとにている。ある手がかりとなる情報(キー)が与えられたとき、そのありかを示す情報をたどっていく。
- データベースの場合、具体的にはレコードのキーからそのレコードまたはレコードの所在番地を与える。
2.3 二つの方法の比較
- データの読み出し速度:ハッシングが○
- ファイルの拡張性:インデックスが○
- キーの順に沿った呼び出し:インデックスが○
3.逆ファイル
- データのありかが番地として分かっていて、番地を与えることにより必要なデータを取り出すのがこれまでやってきたこと。しかし、番地が分かるまでが大変であることが少なくない。
※実際の検索要求にしても、主キーを与えて対応するレコードを探すよりは、主キー以外のフィールドに条件を与えて探すことのほうが相対的に多い。- 上記のように、「番地→内容」という関係とは逆に、「内容→番地」の情報を与えるのが、「逆ファイル」である。
- 「番地→内容」では、内容は一意に定まるが、「内容→番地」では、複数の番地が生じる可能性があることに注意
※よって番地リストは可変長になる。とりあえず番地リストがあれば、そこからハッシング、インデックスを用いて所望のレコードを得ることが出来る。- 逆ファイルに現れる「内容」のフィールド(群)は「キー」と呼ばれるが、前出の「主キー」とは異なる。「主キー」が略されて「キー」と呼ばれることがあるので、「キー」という言葉が出てきたときには、どちらの意味なのか、注意する必要がある。
←【ファイルとデータベース】シラバスへ