ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Hello World程度のデータベース(その15:内部スキーマ(3)データ置き場)

2007-04-15 21:22:37 | 土日シリーズ

情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。

 今、三層スキーマ構造(概念スキーマ、内部スキーマ、外部スキーマ)の内部スキーマをやっています。
 で、内部スキーマはDBの構造の話なんですけど、前々回、そのうち、インデックスとデータの話をすると書きました。前回、インデックスの話をしたので、今回はデータの話です。




■データの型

 で、今回は、データベースのデータを置く場所についてです。
 っていっても、データをまあ、テキトーにおいていけばいいわけですが、実際には、コンピューターで文字や記号を表現するとき、整数の場合、小数の場合、文字の場合で違います。文字は日本語と英語でもちがいます。

 っていうことで、データを置くためには、データが、どういう形で入っているかの型を指定します。これは、テーブルで定義します。




■行連鎖など。。

 じゃあ、そのデータを型のカタチで格納しましょう。
 レコードごとに格納するとして、追加するとき、領域があるなら、これは、どんどんつぎたしていけばいいですので、かんたんです。
 でも、もし、こんな場合、どうしましょう(話を長簡単にしてるので、実際にはこんな単純なことではないです)。

・50バイトのレコードを削除しました
・つぎに、30バイトのほかのレコードを削除しました。
・60バイトのレコードを追加しようとおもいます。

 上記の50、30バイト以外、一切アキがないとします。
 そうすると、60バイトがないからXっていうわけじゃなく、60バイトを分割し、50バイトと10バイトなど、アキ領域に入るように分割しちゃうんです。
 こうなると、行が2つの領域にはいっているので、行を連鎖しないと、1行とってこれません(>_<!)これが、行連鎖といいます。

 で、この行連鎖がおこってしまうと、2つの領域(それ以上かもしれないけど)にアクセスしないと、1行とってこれないので、アクセス時間は遅くなってしまいます(>_<!)

どーしましょー。。。。

っていうはなし。

 このほかに、行移行っていうのもあって、それがおこると、アクセス上、おそくなってしまう。
 たいへんです。。

 っていうことで、この行連鎖、行移行については、以下のところにくわしいみたい

データベース・トラブル10選---第2回 パフォーマンスの悪化を食い止める(4)
オプティマイザの挙動を知り,領域管理で“連鎖”や“移行”を防ぐ
http://itpro.nikkeibp.co.jp/members/NOS/TROUBLE/20021031/4/


 なんで、興味ある人は、そっちをみてください。




■VSAMについて

 で、あと、もうひとつ、今は20Gのハードディスクとかあるので、1つのハードディスクで全部のデータをいれるっていうことができますが、むかしは、こんなに容量がなかったので、複数のハードディスクにデータをいれて、あたかも1つのように、DBでは処理できないといけませんでした。
 この複数ハードディスクをあたかも1つのハードディスクのように扱う技術がVSAMと言われます。

 いま、そんな必要はないんだけど、逆に言うと、もし、この時代の伝統に従うなら、データベースのデータは、複数箇所に格納されているかもしれないので、どこに散在しているか、宣言しないといけないってことに成りますよね。。(このはなしが、あとできいてくる。。)




 ということで、今日のデータについては、簡単ですが、ここまで。
 このシリーズの次回では、実際にデータとインデックスに関して、DBにたいして、どのように操作するのかっていう話をします。

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 「プログラマの権利宣言」だ... | トップ | 開発マシンは、最速がいいと... »
最新の画像もっと見る

土日シリーズ」カテゴリの最新記事