2.4.4 DBエリアのファイル構成
表やインデクスといったDBエリアに格納されるデータは,物理的にはファイルに格納されます。DBエリアを構成するファイルをDBエリアファイルといいます。
- 〈この項の構成〉
(1) DBエリアファイルとして使用できるファイル
HADBでは,次に示すファイルをDBエリアファイルとして使用できます。
(a) レギュラーファイル(ファイルシステム上のファイル)
OSが標準でサポートしているレギュラーファイルを,DBエリアファイルとして使用できます。
レギュラーファイルを更新および参照する際は,ファイルシステムの管理部に対する更新処理および参照処理が行われます。そのため,特にファイルの拡張処理が行われた場合に,ブロックスペシャルファイルよりアクセス性能が低くなります。
レギュラーファイルの格納先ディスクには,セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。
(b) ブロックスペシャルファイル
ブロックスペシャルファイルを,DBエリアファイルとして使用できます。ブロックスペシャルファイルとは,ブロックデバイスの1つです。ディスク全体,またはパーティションで区切られたディスク上の領域を1ファイルと見なしてアクセスします。
ブロックスペシャルファイルは,ブロック単位にデータを操作します。そのため,ブロックスペシャルファイルは,レギュラーファイルよりも高速にアクセスできます。
ブロックスペシャルファイルは,ユーザがデータベースを作成する前に使用するデータベース領域の大きさを考慮し,割り当てておく必要があります。
なお,ブロックスペシャルファイルには,HADBサーバが読み書きできる権限を付与する必要があります。ブロックスペシャルファイルの設定を変更する場合は,必ずudevルールを使用してください。udevルールについては,OSのマニュアルを参照してください。
ブロックスペシャルファイルの構成元ディスクには,セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。
- 重要
-
ブロックスペシャルファイルをwriteモードでオープンすると,クローズ時にudevにイベントが通知され,udevルールに設定した状態に戻ります。そのため,chmodコマンド,chownコマンドなどでブロックスペシャルファイルの設定を変更した場合は,データベースの初期設定が完了したときやHADBサーバが終了したときに,所有者や権限がudevルールに設定した状態に戻ります。
(2) DBエリアファイルの種類
DBエリアファイルは,DBエリアの種類に合わせて次に示す5種類があります。
(a) データ用DBエリアファイル
データ用DBエリアファイルは,データ用DBエリアを構成するファイルです。
1つのデータ用DBエリアは,1つ以上のデータ用DBエリアファイルから構成されます。1つのデータ用DBエリアは,最大1,024個のデータ用DBエリアファイルで構成できます。
データ用DBエリアとデータ用DBエリアファイルの関係を次の図に示します。
|
データ用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに作成されます。
データ用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。また,データベースの初期設定後,データ用DBエリアを追加するときにも指定します。
(b) 作業表用DBエリアファイル
作業表用DBエリアファイルは,作業表用DBエリアを構成するファイルです。
作業表用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに,1つだけ作成されます。
作業表用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。
作業表用DBエリアファイルは,ブロックスペシャルファイルに作成することを推奨します。レギュラーファイルに作成すると,作業表を複数作成するSQL文が実行された場合に,レギュラーファイルを格納しているファイルシステムに対してI/Oが集中してしまい,SQL文の実行時間が長くなるおそれがあります。
(c) マスタディレクトリ用DBエリアファイル
マスタディレクトリ用DBエリアファイルは,マスタディレクトリ用DBエリアを構成するファイルです。
マスタディレクトリ用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに,1つだけ作成されます。
マスタディレクトリ用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。
(d) ディクショナリ用DBエリアファイル
ディクショナリ用DBエリアファイルは,ディクショナリ用DBエリアを構成するファイルです。
ディクショナリ用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに,1つだけ作成されます。
ディクショナリ用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。
(e) システム表用DBエリアファイル
システム表用DBエリアファイルは,システム表用DBエリアを構成するファイルです。
システム表用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに,1つだけ作成されます。
システム表用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。
システム表用DBエリアファイルは,ブロックスペシャルファイルに作成することを推奨します。ブロックスペシャルファイルに作成すると,システム表用DBエリアの空き容量が不足してシステム表の再編成が必要になった場合に,HADBサーバから警告メッセージが出力されるようになります。
なお,システム表用DBエリアファイルをレギュラーファイルに作成した場合は,システム表用DBエリアの空き容量が不足しても,HADBサーバから警告メッセージは出力されません。システム表用DBエリアファイルをレギュラーファイルに作成する場合は,運用を開始する前に,システム表の再編成を行うタイミングを検討してください。そして,検討結果を基に,定期的にシステム表を再編成するようにしてください。システム表の再編成については,「11.18 システム表の再編成」を参照してください。
(3) DBディレクトリ
データ用DBエリアファイルなど,各DBエリアファイルが格納されるディレクトリをDBディレクトリといいます。DBディレクトリは,データベースの初期設定時に作成されます。
DBディレクトリには,次のファイルも格納されます。
-
データベースの更新履歴情報(システムログファイル)
-
HADBサーバが異常終了した場合,再開始するための情報(ステータスファイル)
DBディレクトリの構成については,「付録A.3 DBディレクトリの構成」を参照してください。
なお,DBディレクトリを作成するディスクには,セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。
(4) DBエリアファイルの構成例
DBエリアファイルを,DBディレクトリ下以外のブロックスペシャルファイルに作成した場合,DBディレクトリ下にはファイルの実体へのシンボリックリンクファイルが作成されます。
DBエリアファイルの構成例を次の図に示します。
|
(5) ファイルシステムに関する注意事項
-
ext3,ext4またはXFSのファイルシステム上に,データベースを構成するファイル(DBエリアファイルおよびDBディレクトリ内のファイル)を作成してください。
-
NFSなどのネットワークを経由するファイルシステム上に,データベースを構成するファイル(DBエリアファイルおよびDBディレクトリ内のファイル)を作成しないでください。
(6) DBエリアファイルとマルチノード機能の関係
マルチノード機能を使用する場合,次のDBエリアファイルには,ブロックスペシャルファイルを割り当てる必要があります。
-
データ用DBエリアファイル
-
マスタディレクトリ用DBエリアファイル
-
ディクショナリ用DBエリアファイル
-
システム表用DBエリアファイル
また,割り当てるブロックスペシャルファイルに対応するディスクは,マルチノード構成の全ノードから参照できる必要があります。
- メモ
-
クラウドストレージ機能を使用する場合,上記のDBエリアファイルにはブロックスペシャルファイルを割り当てる必要はありません。AWS環境の場合は,上記のDBエリアのデータはAmazon S3のS3バケット内のS3オブジェクトに格納されます。Azure環境の場合は,上記のDBエリアのデータはAzure Blob Storageのコンテナー内のBLOBに格納されます。
クラウドストレージ機能については,以下を参照してください。
-
AWS環境でクラウドストレージ機能を使用する場合
「2.21.2 AWS環境でHADBサーバを使用する場合」の「(2) Amazon S3にDBエリアのデータを格納する場合(クラウドストレージ機能を使用する場合)」の「(a) クラウドストレージ機能とは」
-
Azure環境でクラウドストレージ機能を使用する場合
「2.21.3 Azure環境でHADBサーバを使用する場合」の「(2) Azure Blob StorageにDBエリアのデータを格納する場合(クラウドストレージ機能を使用する場合)」の「(a) クラウドストレージ機能とは」
(7) クラウドストレージ機能を使用する場合
AWS環境でクラウドストレージ機能を使用する場合は,次のDBエリアのデータはAmazon S3のS3バケット内のS3オブジェクトに格納されます。Azure環境でクラウドストレージ機能を使用する場合は,次のDBエリアのデータはAzure Blob Storageのコンテナー内のBLOBに格納されます。そのため,次のDBエリアのDBエリアファイルは,DBディレクトリ下に作成されません。また,次のDBエリアのDBエリアファイルをレギュラーファイルまたはブロックスペシャルファイルに割り当てる必要もありません。
-
データ用DBエリア
-
マスタディレクトリ用DBエリア
-
ディクショナリ用DBエリア
-
システム表用DBエリア
クラウドストレージ機能を使用する場合,上記のDBエリアのDBエリアファイルは作成されませんが,HADBサーバは,上記の各DBエリアのデータを格納しているS3オブジェクト群またはBLOB群を概念的なDBエリアファイル(仮想DBエリアファイル)に格納していると仮定して動作します。仮想DBエリアファイルの詳細については,AWS環境の場合は,「2.21.2 AWS環境でHADBサーバを使用する場合」の「(2) Amazon S3にDBエリアのデータを格納する場合(クラウドストレージ機能を使用する場合)」の「(b) DBエリアのデータの格納形式(S3バケットおよびS3オブジェクト)」を参照してください。Azure環境の場合は,「2.21.3 Azure環境でHADBサーバを使用する場合」の「(2) Azure Blob StorageにDBエリアのデータを格納する場合(クラウドストレージ機能を使用する場合)」の「(b) DBエリアのデータの格納形式(コンテナーおよびBLOB)」を参照してください。
- 重要
-
作業表用DBエリアのデータは,S3オブジェクトまたはBLOBには格納されません。作業表用DBエリアについては,クラウドストレージ機能を使用する場合であっても,作業表用DBエリアファイルをレギュラーファイルまたはブロックスペシャルファイルのどちらかに割り当てる必要があります。
クラウドストレージ機能については,以下を参照してください。
-
AWS環境でクラウドストレージ機能を使用する場合
「2.21.2 AWS環境でHADBサーバを使用する場合」の「(2) Amazon S3にDBエリアのデータを格納する場合(クラウドストレージ機能を使用する場合)」の「(a) クラウドストレージ機能とは」
-
Azure環境でクラウドストレージ機能を使用する場合
「2.21.3 Azure環境でHADBサーバを使用する場合」の「(2) Azure Blob StorageにDBエリアのデータを格納する場合(クラウドストレージ機能を使用する場合)」の「(a) クラウドストレージ機能とは」