データベースを管理する方々にとっては、大容量のディスクを用いたシステムを構築することが多くなってきたと思います。そのため、データベースおよびデータファイルの管理方法を理解する必要があります。ここでは論理オブジェクトよりも物理オブジェクト(データファイル)、つまりデータがどのようなファイルに作成されるのか(ファイル構成)について解説します。
第2回「OracleとDB2、アーキテクチャはこれだけ違う」、第3回「OracleとSQL Server、導入・構築・運用の違いとは?」で解説したように、インスタンスとデータベースの関係は、Oracleでは1対1、DB2とSQL Serverでは1対Nとなります。それでは上記の関係の中で、各インスタンスとデータベースを構成する主な要素にはどのようなものがあるのでしょうか?(図5)
Oracleでは、1つのインスタンスにつき、インスタンス構成情報とデータベース構成情報を1つずつ持ちます。SQL Serverは1つのインスタンスに複数のデータベースを持つことが可能なため、インスタンスの構成情報を1つのシステムデータベースに格納し、各データベース構成情報はユーザーデータベースのシステムテーブルに格納されます。またDB2ではデータベースマネージャ構成ファイルにインスタンス情報を格納し、その情報はインスタンス内のデータベースに共通の情報として適用され、各データベース構成情報はデータベース構成ファイルに記述されます。
では、システム情報やユーザーデータを格納するテーブルなどを持つ表領域(論理オブジェクト)とデータファイル(物理オブジェクト)の関係はどうなっているのでしょうか(図6)。
Oracleでいうシステム情報を格納するシステム表領域は、SQL Serverではプライマリファイルグループとなり、DB2ではカタログ表スペースとなります。Oracleが表領域に複数のデータファイルを割り当てることが可能なように、SQL ServerやDB2も同様に可能です。ただしDB2はOracleと同様にコンテナ単位(データファイル単位)で割り当てますが、SQL Serverは表領域に割り当てる単位がファイルをグループ化したファイルグループとなり、そのファイルグループを割り当てます。このように表領域は複数のデータファイルを割り当てることが可能なため、データファイルを複数のディスクに分散配置し、I/Oを分散できます。
I/O分散を行うためには、Oracleではパーティション機能を用いてデータの分散配置を行います。SQL Serverでは複数のデータファイルを割り当てた場合、自動的に64Kbytesごとにデータを分散して格納するため、これらのデータファイルをディスクに分散配置することでI/Oを分散できます。またDB2ではコンテナという単位で表スペース(表領域)が作成され、1つの表領域に対し複数のコンテナを配置できます。さらに複数コンテナを持つ表スペースはラウンド・ロビン方式でエクステントを均等に配置し、I/O分散が行われます。つまり、複数の物理ディスク内にコンテナを作成することで、ディスク間でデータの読み取り・書き込みが並行して行われ、高いパフォーマンスを得ることが可能となります。
次ページでは「バックアップ・リカバリ管理」について、各RDBMSの違いを見ていきます。
Copyright © ITmedia, Inc. All Rights Reserved.