データ・ストレージ
あるEssbaseディメンションの1つのメンバーと他の各ディメンションの1つのメンバーの交差は、データ値です。データベースを異なる方法でスライスすることで、メンバーの関係に基づいてデータのパースペクティブが得られます。データを保管してアクセスするために、Essbaseはブロックと索引を使用します。
ノート:
この情報は、ブロック・ストレージ(BSO)キューブにのみ適用され、集約ストレージ(ASO)キューブには適用されません。
Essbaseデータベース内の各データ値は、1つのセルに保管されます。特定のデータ値は、それぞれの標準ディメンションに沿ってその座標を指定することで参照できます。
ノート:
Essbaseでは、属性ディメンションのデータは保管されません。Essbaseでは、属性ディメンション・データは、ユーザーがデータを取得する際に動的に計算されます。
図2-13の単純なデータベースについて考えます。このデータベースには、Accounts、TimeおよびScenarioの3つのディメンションがあります。
-
Accountsディメンションには、Sales、COGS、Margin、Margin%の4つのメンバーがあります。
-
Timeディメンションには4つの四半期メンバーがあり、Qtr1には3つの月メンバーがあります
-
Scenarioディメンションには、予算値を表すBudgetと実績値を表すActualの2つの子メンバーがあります。
図2-13 マルチディメンショナル・データベース・アウトライン

データ値
あるEssbaseディメンションの1つのメンバーと他の各ディメンションの1つのメンバーの交差は、特定のデータ値を表します。データ値は最小のデータ・スライスです。
次の例には、3つのディメンション(Accounts、TimeおよびScenario)があるため、ディメンションとデータベース内のデータ値をキューブで表すことができます。
図2-14 3ディメンショナル・データベース

Salesを指定すると、SalesがActualおよびBudgetと交差する、8つのSales値を含むデータベースのスライスを指定することになります。
図2-15 データベースのSalesスライス

データベースをスライスするということは、1つ以上のディメンションをある定数値に固定し、残りのディメンションは限定しないということです。
Actual Salesを指定すると、ActualとSalesが交差する、4つのSales値を含むデータベースのスライスを指定することになります。
図2-16 データベースのActual、Salesスライス

データ値は、データベース内の1つのセルに保管されます。マルチディメンショナル・データベース内の特定のデータ値を参照するには、各ディメンションでそのメンバーを指定します。たとえば、Sales、Jan、Actualのスライスは1つのデータ値で構成されます。このデータ値は、ディメンション間演算子(->)を使用して、Sales -> Actual -> Janと表現することもできます。
図2-17 Sales->Jan->Actualのデータ値

データ・ブロックおよびインデックス・システム
Essbaseでは、データ・ブロックとインデックス・システムという2つのタイプの内部構造を使用して、データを保管し、データにアクセスします。
Essbaseでは、疎標準ディメンション・メンバーの一意の組合せごとに、データ・ブロックが作成されます(その疎ディメンション・メンバーの組合せに対して、1つ以上のデータ値が存在する場合)。データ・ブロックは、疎ディメンション・メンバーの組合せに対するすべての密ディメンション・メンバーを表します。
Essbaseでは、データ・ブロックごとにインデックス・エントリが作成されます。インデックスは、疎標準ディメンション・メンバーの組合せを表します。これには、データ値が1つ以上存在する疎標準ディメンション・メンバーの一意の組合せごとに、エントリが含まれています。
たとえば、図2-18に示すSample.Basicのデータベース・アウトラインでは、ProductとMarketは疎ディメンションです。
図2-18 Sample.BasicデータベースのProductディメンションおよびMarketディメンション

New YorkのCaffeine Free Colaのデータが存在する場合、Essbaseでは、Caffeine Free Cola (100-30) -> New Yorkという疎メンバーの組合せに対して、データ・ブロックとインデックス・エントリが作成されます。FloridaでCaffeine Free Colaが販売されていない場合、Essbaseでは、Caffeine Free Cola (100-30) -> Floridaという疎メンバーの組合せに対して、データ・ブロックやインデックス・エントリは作成されません。
Caffeine Free Cola (100-30) -> New Yorkというデータ・ブロックは、Caffeine Free Cola (100-30) -> New Yorkに対するすべてのYear、MeasuresおよびScenarioディメンションを表します。
一意の各データ値は、データ・ブロックのセル内に存在すると考えられます。Essbaseは、データ値を検索するとき、インデックスを使用して適切なデータ・ブロックを検索します。次に、データ・ブロック内で、そのデータ値を含むセルを検索します。インデックス・エントリは、データ・ブロックへのポインタを提供します。インデックスには既存のデータ・ブロックへのポインタのみが含まれるため、疎データが効率的に処理されます。
図2-19は、Sample.Basicデータベースのデータ・ブロックの一部を示しています。ブロックの各ディメンションは、Sample.Basicデータベース内の密ディメンション(Time、MeasuresおよびScenario)を表しています。ProductおよびMarketの疎ディメンションのメンバーの一意の組合せごとに、データ・ブロックが存在します(その組合せに対して1つ以上のデータ値が存在する場合)。
図2-19 Sample.Basicデータベースのデータ・ブロックの一部

各データ・ブロックはマルチディメンショナル配列になっており、この配列には、密ディメンション・メンバーの可能な組合せそれぞれの固定の順序付けられた位置が含まれています。ブロック内のセルにアクセスするために、順次検索やインデックス検索は行われません。検索はほぼ一瞬で行われ、取得および計算速度が最適化されます。
Essbaseは、データベース・アウトラインの密ディメンション内のメンバーの順序に従って、データ・ブロック内のセルを順序付けします。
A (Dense)
a1
a2
B (Dense)
b1
b11
b12
b2
b21
b22
C (Dense)
c1
c2
c3
D (Sparse)
d1
d2
d21
d22
E (Sparse)
e1
e2
e3
図2-20のブロックは、先行するデータベース・アウトラインの疎メンバーd22とe3の組合せに含まれる3つの密ディメンションを表します。Essbaseでは、メンバーの組合せはディメンション間演算子で示されます。ディメンション間演算子の記号は->であるため、d22 -> e3は、d22とe3のブロックを指します。A、b21およびc3の交差は、A -> b21 -> c3と記述されます。
図2-20 d22 -> e3に対する密ディメンションを表すデータ・ブロック

Essbaseでは、疎ディメンションDおよびEのメンバーの一意の組合せごとに、データ・ブロックが作成されます(その組合せに対して1つ以上のデータ値が存在する場合)。
図2-20にあるようなデータ・ブロックには、データ値がないセルが含まれる場合があります。データ・ブロックは、ブロック内に1つ以上のデータ値が存在する場合に作成されます。Essbaseでは、値が欠落しているデータ・ブロックはディスク上で圧縮され、各ブロックはメモリーに読み込まれた時点で完全に展開されます。データの圧縮はオプションですが、デフォルトで有効になっています。
密標準ディメンションと疎標準ディメンションを慎重に選択することで、データ・ブロックに多数の空のセルが含まれることを防ぎ、ディスク・ストレージの要件を最小化するとともにパフォーマンスを改善できます。Essbaseでは、空のセルは#MISSINGデータと呼ばれます。