SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

DB Magazine 転載記事

まったくの初心者もこれでバッチリ
12のキーワードから学ぶデータベース基本中のキホン(後編)

『DB Magazine 2007年05月号』 転載記事

keyword 11 論理構造と物理構造

 通常、マシン上で保存されるデータはすべてファイルとなります。ファイルはOSによって管理され、OSがメモリ上にキャッシュしたり、ディスクに書き込んでいます。

 例えばWindowsの「メモ帳」を考えてみると、ファイルはディスク上に保存されていて、メモ帳を起動して「ファイルを開く」ことにより、OSのカーネルと呼ばれる機能がメモリ上に該当データを持ってきます。その後に、文書作成などの作業を行ないます。またメモ帳で「保存する」という行為を行なうと、OSのカーネルがディスク上に書き込みます。つまりメモ帳は、そのプログラムの中ではディスクの読み込みや書き込みを行なっていないことになります。

 RDBMSもOSから見た場合には、メモ帳と同様のプログラムになります。つまりRDBMSでもデータの読み込みや書き込みはOSが行ないます。OSで管理しているデータの構成を「物理構造」と呼びます。

 OSで管理している物理構造は、入出力単位がブロック(OSブロック)で格納単位がファイル(データファイル)となります。この構成でデータベースのデータを管理しようとすると、必ずしも複雑な構成を持つRDBMSにとって効率良く管理できるとは限りません。

 では、どうしたらRDBMSでデータを効率良く取り扱えるだろうかということが考えられ、論理的な構造をRDBMS側で持ち、そのルールで管理することになりました。これが論理構造です。この考え方もデータベース製品によって異なりますが、Oracleを例に説明すると次のようになります。

 まず、論理構造としての最大単位がデータベースになります。表などのデータベースオブジェクトを格納する場所を「表領域」と言います。表領域を作成するときに、合わせて物理構造としてデータファイルを割り当てます。表領域は目的に応じて複数個作成できます。また、1つの表領域に対して複数のデータファイルを割り当てることができます。

セグメントとエクステント

 表領域に格納されるオブジェクトを「セグメント」とも呼びます。1つの表領域に複数のセグメントを格納できます。セグメントは複数のエクステントから成ります。エクステントは、データベースの領域割り当てにおける論理単位になります。論理的にエクステントを割り当てると、物理構造側のデータファイルにそのサイズ分の場所が割り当てられます。例えば、1MBサイズの社員表(セグメント)を表領域に作るためにCREATE TABLE文を実行したとします。すると、社員表のデータを入れるための場所が1MB分物理構造のデータファイルの中に確保されます。その確保した部分を「エクステント」と言います。

 ディスク(データベース)とメモリ(インスタンス)の間をやり取りする単位を「データブロック」と言います。エクステントは複数のデータブロックから成り立ちます。なお、実際に入出力を行なっているのは先ほど説明したとおり、OSのカーネルの機能となりますが、この単位を「OSブロック」と言います。データブロックのサイズが8KBでOSブロックのサイズが2KBだった場合、1個のデータブロックの入出力時に4個のOSブロックの入出力が行なわれることになります。

 最後にデータブロックは最小単位の行から構成されます。特定の行を検索すると、その行を含むデータブロックがディスクからメモリにキャッシュされるという仕組みです(図23、図24)。

図23:論理構造と物理構造
図23:論理構造と物理構造
図24:表領域とデータブロック
図24:表領域とデータブロック

次のページ
keyword 12 冗長化構成

この記事は参考になりましたか?

DB Magazine 転載記事連載記事一覧
この記事の著者

市川 道雄(イチカワ ミチオ)

 株式会社日立システムアンドサービス、人財教育部に勤務。サポート/ソリューションサービス部門と連携した教育企画/実施を担当後、現在はOracleを含むデータベース関連教育を選任で担当している。Oracle認定講師。データベーススペシャリスト、ORACLE MASTER Gold Oracle Databas...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3293 2009/02/06 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー