とあるITエンジニアたちの備忘録

新米エンジニア5人がお送りする、ちょっとためになる話

-記憶域構造-

みなさん、こんにちは。

どうも、さいばーきゃっとです。

私がOracleデータベースを学習しているときに、記憶域構造という仕組みを理解するのが大変でした。Oracleの記憶域構造は、「物理構造」と「論理構造」に分けられているのですが、この「論理構造」という仕組みが、如何せんイメージがしづらいです。そこで、今回は「物理構造」と「論理構造」を分かりやすく説明していきたいと思います。

物理構造

以下のような「学生表」の表データは、「データファイル」という物理的なファイルに格納されます。この「データファイル」の中に、表を作成してデータを挿入していきます。

f:id:cloudy0901:20161220004858p:plain

実際に表データの検索や変更をする場合は、その表データが格納されている各「データファイル」にアクセスしています。

物理構造のように、「データファイル」という物理的なファイルが存在し、実際にそのファイルに表データが格納されているという仕組みはイメージがしやすいですが、論理構造の仕組みは物理構造のように単純ではありません。

論理構造

論理構造には、上記の「学生表」の表データなどを格納する「表領域」や、「セグメント」、「エクステント」、「データブロック」のような、データ管理を容易にするための構造が存在します。

今回は、「表領域」について解説していきます。

「表領域」は、表や索引などのオブジェクトを格納する入れ物です。この「表領域」はあくまで論理的な記憶域単位ですので、データの実態は「データファイル」という物理構造に格納されます。

この「表領域」は、1つ以上の「データファイル」を「表領域」という単位でグループ化することにより、データを容易に管理できるようにする役割を持っています。

例えば、表の作成時に、表を格納する「データファイル」を「/home/oracle/……」のようにパスを指定する必要がありますが、表領域があればその必要はなく、表領域とデータファイルを、対応付けて管理することができるので、表領域の名前を指定するだけで、データは表領域とひも付いたデータファイルに格納されるようになっています。