Essbaseは、データ・ファイルを使用してデータ・ブロックを保管します。デフォルトでは、データ・ファイルは、関連付けられたデータベース・フォルダに配置されます。データ・ファイルは、essn.pagという命名規則に従います。ここで、nは1以上、65,535以下です。
Essbaseは、インデックス・ファイルを使用して、データベースのインデックスを保管します。デフォルトでは、インデックス・ファイルは、関連付けられたデータベース・フォルダに配置されます。インデックス・ファイルは、essn.indという命名規則に従います。ここで、nは1以上、65,535以下です。
Essbaseは、データおよびインデックス・ファイルのためのストレージを自動的に割り当てます。ディスク・ボリュームを使用して、これらのファイルへのストレージの割当て方法を制御できます。
ストレージの割当て方法を制御するようにディスク・ボリュームを指定するには:
Essbaseがインデックス・ファイルとデータ・ファイルを保管するために使用するスペースのサイズを確認します。サイズを確認する方法については、インデックス・ファイルとデータ・ファイルのサイズ確認を参照してください。
Essbaseがこれらのファイルを保管するために使用するボリューム(ドライブ)を指定します。ディスク・ボリュームの指定を参照してください。
ディスク・ボリュームを使用して、Essbaseのインデックス・ファイル(essn.ind)およびデータ・ファイル(essn.pag)を保管する場所を指定します。
ファイルは、次のディレクトリ構造でディスク・ボリュームに書き込まれます:
.../app/app_name/db_name
ディスク・ボリューム設定を使用しない場合は、Essbaseによって、ARBORPATHディレクトリが存在するボリューム上にデータのみが保管されます。ARBORPATH変数が設定されていない場合は、Essbaseでは、サーバーが起動されたボリューム上にデータのみが保管されます。
新しいファイルの場合、ディスク・ボリューム設定への変更は、そのデータベースの次回の起動時に有効になります。既存のファイルやボリュームには影響を与えません。
インデックス・ファイルとデータ・ファイルのサイズを確認する方法については、インデックス・ファイルとデータ・ファイルのサイズ確認を参照してください。 |
ディスク・ボリュームは、Administration Services、MaxLまたはESSCMDを使用して指定できます。ディスク・ボリュームを使用する場合は、Essbaseによって、ディスク・ボリュームごとに次のオプションが提供されます:
ボリューム上で使用する最大スペース(Administration Servicesでは「パーティション・サイズ」、ESSCMDでは「ボリューム・サイズ」と呼ばれます)
インデックス・ファイル、データ・ファイルまたはその両方を指定できます。デフォルトは、同じボリューム上のインデックス・ファイルとデータ・ファイルです。
デフォルト値および推奨値は、2,097,152KB(2GB)です。最大ファイル・サイズに達すると、Essbaseによってファイルが作成され、そのファイルに漸増的に名前が付けられます。たとえば、ess00001.indが最大サイズに達すると、Essbaseによってess00002.indが作成されます。
Essbaseは、次の状況でデータ・ファイルとインデックス・ファイルを作成します:
すべてのファイルの合計サイズが、ディスク・ボリューム設定で指定されている最大サイズに達した場合
デフォルトでは、この合計は、すべてのインデックス・ファイルおよびデータ・ファイルのサイズの合計です。ファイル・タイプとしてインデックスを指定した場合、この合計は、ボリューム上のすべてのインデックス・ファイルの合計を示します。ファイル・タイプとしてデータを指定した場合、この合計は、ボリューム上のすべてのデータ・ファイルの合計を示します。
たとえば、EssbaseファイルのためにボリュームE上で最大12GB、ボリュームF上で最大16GB、ボリュームG上で最大16GBを使用するとします。インデックス・ファイルとデータ・ファイルのサイズがボリュームE上で12GBに達し、ディスクにさらにデータを書き込む必要がある場合は、EssbaseによってボリュームF上にファイルが作成されます。
任意のボリューム上の個々のインデックス・ファイルまたはデータ・ファイルのサイズが2GBに達した場合
前述した例(ボリュームEでは12GB、ボリュームFでは16GB、ボリュームGでは16GB)で、ボリュームEおよびFが最大容量に達し、EssbaseがボリュームGを使用しているとします。ボリュームG上で、Essbaseによってess00001.indが作成されてデフォルトの2GBの制限までデータが書き込まれ、ess00001.pagが作成されて1GBまでデータが書き込まれています。ボリュームGでは16GB内の3GBが使用されています。ess00001.indが2GBの最大ファイル・サイズに達しているため、次回、Essbaseがディスクにインデックス・ファイルを書き込むときにストレージ・スペースが必要になった場合は、ess00002.indが作成されます。ess00002.indが2GBの制限に達すると、Essbaseはess00003.indを作成します。Essbaseは、データ・ファイルについても同じ手順を実行します。
Essbaseはファイルに、ess00001.xxxから始まる連続的な名前を付けます。ここで、xxxはインデックス・ファイルの場合はind、データ・ファイルの場合pagであり、最大ess65535.xxxまで続きます。この命名規則はボリュームごとに適用されるため、上の例では、E、FおよびGの各ボリュームに、ess00001.pagおよびess00001.indという名前のファイルがあります。
ディスク・ボリュームを指定する際は、次のガイドラインに留意してください:
ディスク・ボリュームは、各ボリュームを使用する順序で指定してください。Essbaseがインストールされているボリュームをボリュームの1つとして指定する必要はありません。1つのボリュームにインストールし、他のボリュームにデータを保管できます。
指定されたすべてのボリュームが最大容量に達すると、Essbaseでは進行中のデータベース操作を停止し、エラー・メッセージを発行して、致命的なエラーの処理を実行します。致命的なエラーの処理の理解を参照してください。これらのイベントが発生した場合は、データベースをシャットダウンし、より多くのディスク・スペースを割り当ててから、データベースを再起動してください。
Essbaseに対しボリュームにファイルを保管するのを停止するよう指示できます。Essbaseは、必要に応じてそのボリュームに引き続きアクセスできますが、そのボリュームにこれ以上インデックスやデータの情報が保管されることはなくなります。ボリュームへの情報の保管を停止するには、削除するボリューム定義を選択し、「削除」をクリックします。
ディスク・ボリュームは、データベースごとに設定します。同じボリューム上のスペースを複数のデータベースで使用できるため、慎重にスペースを割り当ててください。たとえば、データベース1のためにボリュームA上の7GBを、データベース2のためにボリュームA上の7GBを指定した場合は、EssbaseファイルのためにボリュームA上の14GBを割り当てたことになります。
Windowsでは、Universal/Uniform Naming Convention (UNC)を使用して、ディスク・ボリュームをネットワーク・リソースの場所(共有ディレクトリなど)として指定できます。構文:
\\ComputerName\SharedFolder\Resource
新しいボリュームを割り当てるには、『Oracle Essbaseテクニカル・リファレンス』の「ESSCMD SETDBSTATEITEM 23」を参照してください。
追加する新しいディスク・ボリュームの番号を、コマンドラインで入力しなかった場合には、入力を求めるプロンプトが表示されます。
さらに、コマンドラインで次の値を入力しなかった場合、新しいボリュームごとに、それらの入力を求めるプロンプトが表示されます。
ESSCMDを使用する場合は、ボリューム・サイズをバイト(B)、キロバイト(K)、メガバイト(M)、ギガバイト(G)またはテラバイト(T)単位で指定できます。ESSCMDには、最小値、最大値、現在の値、無制限を示す0が表示されます。
次の例では、ボリュームE上で最大10GBを割り当て、2GBの最大ファイル・サイズを設定し、さらにデータ・ファイルをEにのみ保管するように指定しています:
SETDBSTATEITEM 23 "SAMPLE" "BASIC" "1" "E" "10G" "2" "2G"
コマンドラインで指定しない場合、ESSCMDから次の値を求めるプロンプトが表示されます:
次の例では、ボリュームC上で最大20GBを割り当て、2GBの最大ファイル・サイズを設定しています:
SETDBSTATEITEM 24 "SAMPLE" "BASIC" "1" "C" "20G" "3" "2G"
Essbaseによってボリュームにこれ以上ファイルが保管されないようにするには、ESSCMDでSETDBSTATEITEM 25と入力してプロンプトに従うか、またはコマンドラインで必要な値を入力します。Essbaseは、割当て解除されたボリューム上のファイルに引き続きアクセスしますが、そのボリュームに新しいファイルを書き込むことはなくなります。
削除するボリューム定義の値をコマンドラインで指定しなかった場合は、ESSCMDにより値の入力を求めるプロンプトが表示されます。現在定義されているディスク・ボリュームのリストや、各ボリュームに割り当てられている番号を表示するには、ESSCMDのGETDBSTATEコマンドを使用します。
次の例では、4番目として指定されているボリュームの割当てを解除します:
SETDBSTATEITEM 25 "SAMPLE" "BASIC" "4"
アプリケーションまたはデータベースを削除した場合、Essbaseでは、アプリケーションやデータベースを含む、ディスク・ボリューム上にあるディレクトリは削除されません。コンピュータのオペレーティング・システムでは、ディスク上にフォルダおよびファイル・ラベルが表示されたままになります。ただし、ディスク・ボリューム上で削除したアプリケーションまたはデータベースと同じ名前を再使用することはできます。 |
この構文の詳細は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。
UNIXでは、volume_nameはマウントされるUNIXファイル・システムです。Essbaseのインストール・ディレクトリ(ESSBASEPATH)への完全修飾パス名を入力する必要があります。Essbaseによって、そのパスにappディレクトリが自動的に追加されるので、appディレクトリを指定する必要はありません。
/vol2/EssbaseServer 10M
ボリューム・サイズは、そのボリュームに割り当てられた最大スペース(KB)です。デフォルト値は無制限であり、Essbaseによってそのボリューム上の使用可能なすべてのスペースが使用されます。
Essbaseファイルのために、ボリュームE上で最大20GB、ボリュームF上で最大25GB、ボリュームG上で最大25GBを使用するとします。2GBのデフォルトのファイル・サイズ制限を使用しています。データをロードすると、EssbaseによってボリュームE上に最大20GBが保管されます。データベースのサイズが20GBを超えると、EssbaseによってボリュームF上に次の25GBが保管され、以降も同様に処理されます。
表154は各ディスク・ボリュームに関する情報の例を示しています。
Essbaseでは、ディスク上に保管されているデータ・ブロックを圧縮するかどうか、さらにはどの圧縮方式を使用するかを選択できます。Essbaseでは、データ圧縮が使用可能になっていると、データ・ブロックがディスクに書き込まれるときにそれらのデータ・ブロックが圧縮されます。圧縮データ・ブロックがデータ・キャッシュにスワップインされるときに、Essbaseによって、そのブロック(空のセルを含む)が完全に展開されます。
一般には、データ圧縮によってストレージの使用が最適化されます。圧縮率の統計を確認することによって、圧縮効率をチェックできます。圧縮率の確認を参照してください。
Essbaseには、データ圧縮のためのいくつかのオプションが用意されています:
Essbaseでは、データ・ブロックがディスクに書き込まれるときに圧縮されるため、同じデータ・ファイル内にビットマップ、RLEおよび非圧縮データ・ブロックが共存できます。次のルールに注意してください:
ブロックの密度が非常に高く(90%以上)、連続した繰返しデータ値がほとんどない場合は、データ圧縮を使用不可にした方がよいこともあります。このような状況では、圧縮を使用可能にするとリソースが不必要に消費されます。
データ・ブロックが圧縮されていない場合、Essbaseでは、どの非欠落セル(データ値が存在するセル)の保管にも8バイトが使用されます。また、ブロックが圧縮されているかどうかにかかわらず、Essbaseはブロックごとに72バイトのブロック・ヘッダーを使用します。
ビットマップ圧縮では、Essbaseはビットマップを使用してデータ・セルを表し、ビットマップ、ブロック・ヘッダーおよびその他の制御情報のみを保管します。ビットマップでは、セル値が欠落しているか("0")、欠落していないか("1")にかかわらず、データ・ブロック内のセルごとに1ビット("1"または"0"と表記)を使用します。したがって、ビットマップ方式ではデータ圧縮のために固定のオーバーヘッドが発生します。
ビットマップ圧縮を使用している場合は、Essbaseによって非欠落値のみが保管され、繰返し値や0は圧縮されません(RLEデータ圧縮で説明されているRLE圧縮と対照的)。Essbaseでは、データ・キャッシュにデータ・ブロックが配置されるとき、欠落している値がビットマップを使用して再作成され、データ・ブロックが完全に展開されます。
次に示す例は圧縮されていないデータ・ブロックの一部で、8つのセル(1番目の行がセル1から4、2番目の行がセル5から8)があります。1番目の行のデータ値は25、#MISSING、#MISSINGおよび#MISSINGです。2番目の行のデータ値は#MISSING、16、7および#MISSINGです。
Uncompressed data block 25 #MISSING #MISSING #MISSING #MISSING 16 7 #MISSING
データ・ブロックがメモリー内で完全に展開される場合、Essbaseは64バイト(8バイト* 8セル)を使用します。データが圧縮されずにディスク上に保管される場合、Essbaseは24バイト(8バイト*データのある3セル - つまりセル1、6および7)を使用します。
データが圧縮されてディスク上に保管される場合、Essbaseは1バイト(1ビット* 8セル、8ビット= 1バイト)を使用してビットマップを保管します。次に示すのは、前述した圧縮されていないデータ・ブロックのビットマップの例です:
Bitmap of compressed data block 1 0 0 0 0 1 1 0
ほとんどの場合、ビットマップ圧縮ではディスク・スペースをより効率的に節約できます。ただし、これはデータの構成に大きく依存しています。
ランレングス符号化(RLE)圧縮方式を使用している場合は、Essbaseによって、連続した繰返し値、つまり、連続して3回以上繰り返される任意の値(0を含む)が圧縮されます。Essbaseによって、各繰返し値と、連続して繰り返される回数が追跡されます。
RLE圧縮では、Essbaseは3つ以上の連続した繰返しセルのセットに対する合計24バイトについて、8バイト、プラス16バイトの繰返し係数を使用します。繰り返されていない、または2回だけ繰り返されている値の場合、Essbaseは各値に対して8バイトを使用します。
次に示すデータ・ブロックの例では、Essbaseは、1番目の行の3つの連続した#MISSING値(セル2、3および4)と、2番目の行の一番左側の#MISSING値(セル5)を繰返し値として想定します。2番目の行の一番右側の#MISSING値(セル8)は繰返し値ではありません。この値は、(それぞれ16および7の)データ値を持つセル6および7によって、セル5の#MISSING値から離されているためです。
Data values in data block 25 #MISSING #MISSING #MISSING #MISSING 16 7 #MISSING
データ・ブロックがメモリー内で完全に展開される場合、Essbaseは64バイト(8バイト* 8セル)を使用します。データが圧縮されずにディスク上に保管される場合、Essbaseは24バイト(8バイト*データのある3セル - つまりセル1、6および7)を使用します。
データが圧縮されてディスク上に保管される場合、Essbaseは56バイトを使用します:
セル1 - 8バイト
セル2から5 - 24バイト(8バイト+ 16バイト)
セル6 - 8バイト
セル7 - 8バイト
セル8 - 8バイト
また、ブロックが圧縮されているかどうかにかかわらず、Essbaseはブロックごとに72バイトのブロック・ヘッダーを使用します。
この方法は、PNG、Zip、gzipなどのパッケージで使用されます。計算およびデータ・ロードは、バッファI/OとZLIB圧縮を使用するより、直接I/OとZLIB圧縮を使用した方が高速です。データ・ストレージが最大の制約要因である場合はZLIBを使用しますが、状況によっては、データ・ロードがビットマップ圧縮より最大10%低速になる可能性があることに注意してください。ただし、ZLIB圧縮を使用すると、データベースのサイズは一般に大幅に小さくなります。
ビットマップ圧縮では、欠けている値を追跡するためにアルゴリズムが使用され、他のタイプのデータとのやり取りがありませんが、ZLIB圧縮では、圧縮されている実際のデータ(欠落しているすべての値を含む)に基づいてデータ辞書が構築されます。そのため、極端に高密度のデータの場合は、ZLIB圧縮によってビットマップ圧縮より高い圧縮率が得られます。ただし、ZLIBアルゴリズムの効果は圧縮されている実際のデータに(ビットのレベルで)依存するため、どのような場合にZLIB圧縮によってビットマップ圧縮より高い圧縮率が得られるかに関する一般的なガイドラインを密度のみに基づいて示すことはできません。他の圧縮方式とは異なり、節約できるストレージ・スペースは、欠けているセルの数や、等しい値を持つ連続したセルの数にはほとんど、またはまったく関係しません。一般に、ビットマップ圧縮またはRLE圧縮と比較して、ZLIBの圧縮率はデータの密度または異種性が高ければ高いほど向上します。ただし、状況によっては、ZLIBによってビットマップ圧縮またはRLE圧縮を使用した場合より優れた結果が得られない可能性があります。代表的なデータ・サンプルを使用してテストすることをお薦めします。
ZLIBで得られる可能性のあるストレージ削減を見積るには、通常の圧縮手法(ビットマップまたはRLE)を使用して実際のデータの少量のサンプリングを含む小さなデータベースを作成し、Essbaseサーバーをシャット・ダウンします。作成されたデータ・ファイルのサイズに注目してください。次に、サンプル・データベース内のデータを消去し、圧縮設定をZLIBに変更して、同じサンプル・データを再ロードしてから、Essbaseサーバーを再度シャット・ダウンします。ここでは、使用されているストレージの違いに注目します。また、小さなサンプル・データベースを使用して、計算またはデータ・ロード速度の変化を見積ることもできます。
インデックス値ペアは、ブロックがきわめて疎の状態にある、ブロック・サイズの大きいデータベースの圧縮に対応しています。この圧縮アルゴリズムをユーザーが選択することはできませんが、該当する場合は常に、データベースによって自動的に使用されます。ただし、ユーザーは、Administration Servicesを使用して、圧縮タイプ(なし、ビットマップ、RLE、ZLIB)を選択する必要があります。
表155は、ユーザーが選択できる使用可能な圧縮タイプと、Essbaseによって評価および適用される圧縮タイプを示しています。
たとえば、ユーザーがRLEを選択すると、Essbaseで各ブロックを確認して、RLE、ビットマップまたはインデックス値ペアのどの圧縮タイプで最も高い圧縮率が得られるかが評価されます。ユーザーがZLIBを選択した場合、適用される圧縮タイプはZLIBのみになります。
圧縮の設定は、ビットマップ(デフォルト)、RLE、ZLIBおよび圧縮なしの4つから選択できます。
ほとんどの場合、設定の選択について心配する必要はありません。通常は、ビットマップ圧縮により、高速なパフォーマンスと小さいデータ・ファイルという最適な組合せが得られます。ただし、これはデータの構成に大きく依存しています。
データ圧縮は、CPUを集中的に使用します。圧縮設定を選択する場合は、計算のコストと、I/Oのコストおよびディスク・スペースのコストの間のトレードオフを考慮してください。
一般に、特定のブロックに関して繰返しの非欠落データ・セルが多数あり、その値が同じである場合は、ビットマップの設定よりRLEの設定を使用した方がデータベースの圧縮率は高くなります。RLE圧縮を使用すると、ビットマップ圧縮を使用した場合より計算のコストは高くなります。ただし、RLE圧縮を使用してデータベースが大幅に圧縮される場合は、I/Oコストの低下によってパフォーマンスが向上する可能性があります。
ZLIB圧縮を使用した場合、通常はデータベースが圧縮されますが、常にそうなるとは限りません。ZLIB圧縮を使用すると、CPU処理が大幅に増加します。ほとんどのデータベースでは、この追加の処理によって、ブロック・サイズ削減の利点が打ち消されます。ただし、ZLIB圧縮を使用してデータベースが大幅に圧縮される場合は、I/Oコストの低下によってパフォーマンスが向上する可能性があります。
「なし」の圧縮設定では、ビットマップ圧縮と比較して、データベースのディスク使用量は削減されません。実際、ビットマップ圧縮はきわめて高速であるため、圧縮なしではデータベースのパフォーマンス向上に関して違いが出ない場合があります。
データベースはそれぞれ固有であり、ここで説明した内容は圧縮タイプの一般的な特性であることに注意してください。デフォルトのビットマップ圧縮はほとんどのデータベースに適していますが、個々のデータベースにとっての最適な圧縮設定を決定するための最善の方法は、各設定を試してみることです。
データ圧縮設定への変更は、Essbaseによりデータ・ブロックがディスクに書き込まれるときにただちに有効になります。すでにディスク上にあるブロックに対して、Essbaseにより圧縮方式が変更されたり、圧縮が使用可能または使用不可になったりすることはありません。すでにディスク上にあるブロックのデータ圧縮設定を変更した場合、Essbaseでは、Essbaseの次回のブロックへのアクセス、更新および保管時に新しい圧縮方式が使用されます。
コマンドラインで指定しない場合、ESSCMDから次の値を求めるプロンプトが表示されます:
データ圧縮のタイプを指定するには、ESSCMDでSETDBSTATEITEM 15と入力してプロンプトに従うか、またはコマンド・ラインで必要な値を指定します。ESSCMDにより、「1」(ランレングス符号化)または「2」(ビットマップ、デフォルト)の値を入力するよう求められます。
SETDBSTATEITEM 14 "SAMPLE" "BASIC" "Y" "2"
圧縮率は、有効になっている圧縮タイプには関係なく、圧縮されたブロック・サイズ(オーバーヘッドを含む)と圧縮されていないブロック・サイズの比率を表します。オーバーヘッドとは、圧縮/展開を管理するメカニズムに必要な領域のことです。
データ・ブロック・サイズは、密次元の特定の組合せにおけるデータ量によって決まります。たとえば、データベース内の1つ以上の次元の密または疎構成を変更すると、データ・ブロック・サイズが変わります。データ・ブロック・サイズは、8nバイトです。ここで、nは、密次元のその組合せに対して存在するセルの数です。
データ・ブロックのサイズの判定については、展開済データ・ブロックのサイズを参照してください。