高速分析処理に対するハイブリッド・モード
Oracle Essbaseハイブリッド・モードの計算および問合せプロセッサにより、手続き型計算と読取りおよび書込みモデリングを使用したリアルタイム分析を実行できます。ハイブリッド・モードは、ブロック・ストレージ問合せの動的依存性分析用のデフォルト・エンジンです。計算スクリプトのデフォルトではありません(有効化は可能です)。
Essbase 11gオンプレミスを使用したことがあれば馴染みがあると思いますが、キューブ設計モードにはいくつかの種類があり、様々な目的に合せて作成されています。
- ブロック・ストレージ: 大規模な疎ディメンションがある場合に最適です。このモードのキューブは、問合せのパフォーマンスを向上させるために、格納および事前集約されます。分析用の計算関数が豊富です。
- 集約ストレージ: ディメンションと上位レベル集約の数が多いキューブに最適です。メンバー式はMDXを使用して指定できます。
- ハイブリッド・モード: 集約ストレージの長所で拡張されたブロック・ストレージ・モードです。
ハイブリッド・モードは、問合せ、Essbase 21cおよびEssbase 19cのブロック・ストレージ・キューブに対する動的依存性分析用のデフォルトのクエリー・エンジンである。ハイブリッド・モードは、依存性分析が強力で集約は高速です。動的メンバーに対する依存性を持つメンバーの複雑な問合せの処理に優れています。
分析アプリケーションでは、動的な依存性(疎集約を含む)を使用することをお薦めします。Essbase 11g On-Premiseの場合と同様に、動的計算を選択的に疎ディメンションに実装することだけに限定されません。特に、動的な疎集約の使用が可能で、推奨されており、パフォーマンス・チューニングのガイドラインやテストの対象になります。
ハイブリッド・モードは、ブロック・ストレージ・キューブのデフォルトの問合せプロセッサですが、計算スクリプトを実行する際のデフォルトではありません。計算スクリプトに動的な依存性が多く含まれる場合は、計算スクリプトでもハイブリッド・モードを有効にすることをお薦めします。これを実行するには、アプリケーション構成プロパティでHYBRIDBSOINCALCSCRIPT構成設定をオンにします(または、計算ごとに制御するには、SET HYBRIDBSOINCALCSCRIPT計算コマンドを使用します)。
ほとんどのEssbase計算関数は、ハイブリッド・モードで動作します。ハイブリッド・モードでサポートされているすべての計算関数のリスト、構文および一部の例外を確認するには、ハイブリッド・モードでサポートされる関数に関する項を参照してください。FIXPARALLELを使用したパラレル計算は、ハイブリッド・モードではサポートされますが、CALCPARALLELを使用したパラレル計算はサポートされていません。
デフォルト設定以外のハイブリッド・モードを構成する場合は、「ASODYNAMICAGGINBSO」で構文を確認してください。
このセクションのトピック:
ハイブリッド・モードのメリット
Essbaseハイブリッド・モード・キューブでは、疎ディメンション間での高速な集約、キューブ・サイズの小型化、メモリー・フットプリントの最適化、柔軟なバッチ計算、および強力な式の依存性分析のメリットを得ることができます。
ハイブリッド・モードでは、ブロック・ストレージ(BSO)の手続き型計算とライトバック機能が、集約ストレージ(ASO)集約パフォーマンスと結合されています。ハイブリッド・モードのメリットは、疎集約を格納する必要がないことによる高速なパフォーマンスです。これにより、データベース・サイズとメモリー・フットプリントが低減され、バッチ計算時間が短縮されます。レベル0の計算が多い場合にはブロック・ストレージを使用するか、上位レベルの集約が多い場合には集約ストレージを使用するか、ディメンション行に沿ってキューブを分割することで計算のパフォーマンス向上をサポートするパーティション化されたモデルを設計するかについて考慮する必要がなくなったため、デプロイメントの懸案事項もシンプルになりました。
次に、ハイブリッド・モードによって計算のパフォーマンスが向上する可能性が高いシナリオをいくつか示します:
-
ブロック・ストレージ・データベースにレベル0ではない疎メンバーが存在し、(計算スクリプトではなく)階層に応じて計算される場合。
-
疎の動的計算の親メンバーに100を超える子がある場合。
-
空の集約ストレージ・ターゲットとブロック・ストレージ・ソース間に透過パーティションを使用している場合。集約ストレージ・ターゲットの式がシンプルで、ブロック・ストレージの式言語に変換可能な場合は、ハイブリッド・モードを使用すると、ブロック・ストレージに関する結果を高速で取得できます。
-
2つのブロック・ストレージ・データベース間に透過パーティションを使用していて、計算のパフォーマンスが懸案事項の場合。
ハイブリッド・モードのもう1つのメリットは、アウトラインの順序に依存性がないことです。ディメンションの順序を並べ替えるかわりに、解決順を簡単にカスタマイズできます。
ハイブリッド・モードでは、シナリオ管理を使用して、ストレージ要件を追加せずにワークフロー形式を使用して仮想データをテストおよびモデル化することもできます。
ハイブリッド・モード、ブロック・ストレージおよび集約ストレージの比較
ハイブリッド・モードなしの場合、動的計算メンバーのブロック・ストレージ・アルゴリズムを大規模な疎ディメンションで使用するには限界があります。ハイブリッド・モード(と集約ストレージ)は動的依存性分析用に最適化されています。主な違いを読み、Essbase アプリケーションに最適な問合せプロセッサ・タイプを選択する際に役立ててください。
ハイブリッド・モードがなければ、ブロック・ストレージ・データベースの大規模な疎ディメンションは格納する必要があります。そのようなディメンションを動的にすると、問合せや計算時のブロックI/Oが過剰になり、パフォーマンスに影響が出ます。非常に大規模な疎ディメンションを格納すると、バッチ集約時間が長くなるだけでなく、疎ディメンションの数とサイズに比例してデータベースのサイズが増大し、大規模になります。そのようなデメリットがありますが、機能が強力なため、ブロック・ストレージは広く利用されています。
集約ストレージは、大規模なデータベースで、より大きく、さらに多数のディメンションの使用を可能にすることに特化して設計されています。ブロック・ストレージとは異なり、問合せのパフォーマンスを向上させるために、大規模な疎ディメンションを事前に集約する必要はありません。鍵は集約ストレージのデータベース・カーネルにあり、このカーネルが、大規模なディメンション全体の高速で動的な集約を円滑にしています。
集約ストレージにはこのようなメリットがありますが、ブロック・ストレージの方が適している用途も数多く存在します。任意の粒度でデータをロードする機能、複雑なバッチ割当てを頻繁に実行する機能、グローバル財務向けに通貨換算を実装する機能などです。そのような場合、またそれ以外の場合にも、ハイブリッド・モードが解決策になり得ます。ハイブリッド・モードには、ブロック・ストレージと集約ストレージの優れた機能が組み合されています。ハイブリッド・モードでは、Essbaseで次のことが可能です
-
計算が動的な疎集約に依存している場合でも、完全に柔軟な手続き型計算が可能です。
-
動的疎メンバーにアクセスする問合せにハイブリッド・エンジンが使用されます。この方法で処理できないごく一部の問合せに対して、Essbaseは、ブロック・ストレージの計算フローでリクエストに対応します。
-
疎メンバーを動的とマークすると、次のメリットがあります:
- 事前集約の必要がなくなります
-
再構築のパフォーマンスが向上します
-
バックアップのパフォーマンスが向上します
-
ディスク領域要件が緩和されます
-
ハイブリッド・モードには動的計算が関係しているため、解決順を使用して、計算に順序を付けることができます。
ノート:
問合せスクリプトと計算スクリプトのどちらで実行されるかにかかわらず、ハイブリッド計算は、式キャッシュや集約ストレージ・キャッシュを使用して、一時メモリー領域で実行されます。
主な違い
次に示す主な違いは、アプリケーションに最適な問合せプロセッサ・タイプを選択する際に役立ちます。
| 要件 | 集約ストレージ(ASO) | ブロック・ストレージ(BSO) | ハイブリッド・モード |
|---|---|---|---|
|
多くの疎ディメンションにわたる高速での集約のために最適化 |
○ |
× |
○ |
|
ディスク領域の使用量の最小化とバックアップ時間の短縮のために最適化 |
○ |
× |
○ |
|
財務アプリケーション向けに最適化 |
× |
○ |
○ |
|
割当てを実行する機能 |
○ |
○ |
○ |
|
バッチ計算を実行する機能 |
× |
○ |
○ |
|
メンバー式のサポート |
はい、MDXとして表されます |
はい、Essbase計算関数として表されます |
はい、Essbase計算関数として表されます |
|
メンバー式での前方参照のために最適化 |
× |
× |
○ |
|
計算/集約の解決順をカスタマイズする機能 |
○ |
× |
○ |
|
ボトムアップ問合せ実行を指定し、小規模な入力データ・セットの依存性分析を高速化する機能 |
× |
× |
○ |
|
問合せ実行のトレースおよびデバッグを行う機能 |
○ |
× |
○ |
|
問合せ用に許可されたメモリーの使用を制限する機能 |
○ |
× |
○ |
|
2パス計算のサポート |
× |
○ |
× |
|
任意のレベルのデータをロードする機能 |
いいえ。式の依存性を持たないレベル0のセルのみがロード可能です |
○ |
保管済のレベルについては、はい 動的レベルについては、いいえ |
|
バッファを使用してデータを増分ロードする機能 |
○ |
× |
× |
|
疎ディメンションでの式の評価の結果が、密ディメンションでの同じ式の結果と異なる |
N/A |
はい。ハイブリッド・モードなしのブロック・ストレージでは、Essbaseの計算スクリプトが、疎ブロックに対する依存性を解決する目的で繰り返し記述される場合があります。ディメンション・タイプを疎から密、またはその逆に変更すると、同じ式に対して異なる結果が得られる可能性があります。 |
いいえ。式の依存性は、疎か密かに関係なく、同様に計算されます。 ハイブリッド・モードでは、Essbaseはアルゴリズムを使用して動的依存性を解決します。計算スクリプトから導出されるデータが、ハイブリッド・モードとハイブリッドなしのブロック・ストレージ・モードで異なる場合もあります。 |
ハイブリッド・モードの開始
Essbaseアプリケーションのハイブリッド・モードでの実行を開始するには、テスト環境で開始し、大きい疎ディメンションを動的にして、アプリケーション・ログを調査します。
ハイブリッド・モードを開始するには、次のガイドラインに従います:
-
開発環境を設定し、既存のブロック・ストレージ・アプリケーションをその環境に移行します。ブロック・ストレージ・キューブでは、デフォルトでハイブリッド・モードが有効化されています。
-
可能な場合は、大規模な疎ディメンションを動的にします。
-
ハイブリッド・モードを有効化する前と後に、テスト問合せを実行し、アプリケーション・ログを確認します。これにより、集約ストレージ問合せプロセッサが使用された程度と、ハイブリッド・モードによりよくなった点がわかります。問合せごとに、アプリケーション・ログに
Hybrid aggregation mode enabledまたはHybrid aggregation mode disabled.と表示されます。 -
ハイブリッド・モードが無効と記録された問合せが多すぎる場合は、Oracleサポートに連絡してください。
ハイブリッド・モード向けのキューブの最適化
ハイブリッド・モードを最も効果的に使用するには:
-
ハイブリッド・モードでは、2パス計算を使用しないでください。かわりに解決順を使用してください。
-
可能な場合に、レベル0でない保管済メンバーを動的計算に変換します。
-
動的計算メンバーに変換することで、依存する式の解決順に影響がある場合は、アウトラインのディメンションの順序を調整して、前のバッチ計算の順序と2パス計算の設定の解決順を合せる必要があります。
ハイブリッド・モード・キューブのデフォルトの解決順は、一部拡張されていますが、ブロック・ストレージ・キューブの計算順に似ています。デフォルト以外の解決順を使用する場合は、ディメンションやメンバーにカスタムの解決順を設定できます。
-
不適切な解決順で処理された動的な計算済の式を使用すると、問合せが非常に多数の式を実行することになり、パフォーマンスが低下します。可能な場合、動的に計算された疎式では、階層的に集約された疎ディメンションより高い解決順である必要があります。
一部のアプリケーションでは、異なる解決順が正しい式の結果を取得するために必要なため、これは可能ではありません。たとえば、単位と価格を含むアプリケーションは、正しい売上げ値を上位レベルで取得するために疎集約の前に売上げ値が実行されている必要があります。
-
ディメンションの密と疎の構成の調整が必要な場合があります(該当するのは、ハイブリッド・エンジンを使用できず、ブロックストレージ・エンジンを使用している場合のみです)。
-
可能な場合は、ブロックのサイズを最小化します。
Essbase管理者は、次のツールを使用すると、ハイブリッド・モードで問合せのパフォーマンスをモニターおよび最適化できます:
-
1つの問合せで消費されるメモリーの量を制限するには、MAXFORMULACACHESIZE構成設定を使用します。
-
ディメンション間操作および複数のIF/ELSE文を含む複雑なメンバー式がキューブにある場合、パフォーマンスの懸案事項が式の実行に関係する場合があります。これが疑われる場合、式計算に対してボトムアップ問合せ処理をアクティブ化できます。これにより、計算に必要な交差を特定し、問合せ回数を入力データ・サイズに比例させることで、問合せ回数が最適化されます。
リリース21Cでこれらの問合の最適化を行うには、QUERYBOTTOMUP構成設定および@QUERYBOTTOMUP計算関数を使用します。リリース19Cの場合、BOTTOMUP構文によるIGNORECONSTANTS構成設定および@NONEMPTYTUPLE計算関数を使用します。
-
問合せのトレースを使用して、問合せのパフォーマンスをモニターおよびデバッグします。ユースケースに応じて、複数のアプリケーションレベルの構成設定を使用できます。QUERYTRACEを使用して、問題があると思われる1つの問合せに短期のデバッグを実行します。TRACE_REPORTを使用して、同時実行中の問合せに関する統計収集を行います(開発環境でのデバッグに最適)。本番環境では、LONGQUERYTIMETHRESHOLDを使用して、設定時間より長い問合せに関する統計をアプリケーション・ログ・ファイルに出力します。
ハイブリッド・モードの制限事項と例外
ハイブリッド・モードで問合せが最適に実行されない場合があります。この状況が発生するとEssbaseによって検出され、ブロック・ストレージ・モードに集約されます。問合せにハイブリッド・モードの計算タイプのサポートされるものとサポートされないものが混在する場合、Essbaseではデフォルトで、ブロック・ストレージの計算が実行されます。
有効化されている場合、ハイブリッド・モードは、サポートされる関数を使用したメンバー式に対して有効です。サポートされる関数とサポートされない関数のリストは、ハイブリッド・モードでサポートされる関数を参照してください。
ハイブリッド・モードでは、次のタイプの問合せは実行されません:
-
透過パーティションのターゲットの式を含む動的計算メンバー
-
共有メンバーがターゲット・パーティション定義の外部にあり、プロトタイプ・メンバーが内にある問合せ、またはその逆の問合せ
-
XOLAP
-
テキスト・メジャー/テキスト・リスト
属性計算がハイブリッド・モードで実行されるのは、Sumの場合のみです。
依存メンバーの解決順の値が式メンバーより大きい場合は、次の警告が表示されます。
Solve order conflict - dependent member member_name with higher solve order will not contribute value for formula of member_nameハイブリッド・モードの解決順
Essbaseでの解決順は、動的計算がハイブリッド・モードで実行される順序を決定します。解決順は、カスタマイズすることも、デフォルトを受け入れることもできます。デフォルトは高可用性と依存性分析用に最適化されています。
解決順の概念は、動的メンバー式と計算スクリプトの動的依存性のいずれによって開始されたかにかかわらず、動的計算の実行に適用されます。セルがマルチディメンショナル問合せで評価される際、必要な計算の優先度を示す解決順が指定されている場合を除き、計算が解決される順序は不明瞭です。
ディメンションやメンバーの解決順を設定することも、Essbaseのデフォルトの解決順を使用することもできます。設定できる最小の解決順は0で、最大は127です。解決順の値が大きいと、メンバーが計算されるのは後になります。たとえば、解決順が1のメンバーは、解決順が2のメンバーより前に解決されます。
ハイブリッド・モードが有効化されている場合、デフォルトの解決順(計算順とも呼ばれる)は、ブロック・ストレージ・データベースの解決順とほぼ同じです。
| ディメンション/メンバー・タイプ | デフォルトの解決順の値 |
|---|---|
| 保管済メンバー | 0 |
| 疎ディメンション・メンバー | 10 |
| 密の勘定科目ディメンション・メンバー | 30 |
| 密の時間ディメンション・メンバー | 40 |
| 密の通常のディメンション・メンバー | 50 |
| 属性ディメンション・メンバー | 90 |
| 2パス動的メンバー | 100 |
| MDX計算済メンバーまたは名前付きセット(MDX Withで定義済み) | 120 |
要約すると、ハイブリッド・モードのデフォルトの解決順では、アウトラインに表示される順序(上から下)で、保管済メンバーは動的計算メンバーより先に、疎ディメンションは密ディメンションより先に計算することが指定されています。
解決順が指定されていない動的メンバー(式がある場合もない場合も)は、2パスとタグ付けされている場合を除き、それぞれのディメンションの解決順を継承します。
2パス計算は、ブロック・ストレージ・モードで、正しい値を算出するために2回計算する必要がある式を持つメンバーに適用可能な設定です。
ノート:
ハイブリッド・モード・キューブでは2パス計算を使用しないでください。解決順のみを使用します。
ハイブリッド・モードでは2パスを適用できず、2パスとタグ付けされているメンバーは、属性の後で最後に計算されます。ハイブリッド・モードでは、デフォルトの解決順が要件に合ない場合は、2パスではなく、カスタムの解決順を実装する必要があります。
ハイブリッド・モードのデフォルトの解決順は、次のシナリオ向けに最適化されています:
-
動的メンバー式で、アウトラインの順序が後のメンバーが参照される前方参照。ハイブリッド・モードには、アウトラインの順序に依存性はありません。
-
等価式を使用した集約により多く一致するアウトラインの順序に基づいた子の値の集約。
-
疎式内部の依存性としての動的密メンバー。ハイブリッド・モードでは、疎ディメンションが先に計算されるため、疎式が密動的メンバーを参照する場合、その参照は無視されます。これを変更するには、密ディメンションの解決順より値が大きい(後から計算される)疎ディメンションに解決順を割り当てます。
解決順のカスタマイズ
ハイブリッド・モードでの動的計算の動作を調整する必要がある場合は、ディメンションおよびメンバーの解決順をカスタマイズすると、アウトラインに大幅な変更を加えることなく目的を達成できます。
カスタムの解決順を実装すると、デフォルトの解決順がオーバーライドされます。メンバーまたはディメンションの解決順が等しい場合は、アウトラインに表示される順序(上から下)で競合が解決されます。
特定のメンバーの解決順をカスタマイズする場合を除き、一番上のディメンション・メンバーの解決順がディメンション内のすべての動的メンバーに適用されます。
解決順序を変更するには、Essbase Webインタフェースのアウトライン・エディタを使用するか、Smart Viewを使用してください(選択したPOVでの解決順序の変更を参照)。
設定できる最小の解決順は0で、最大は127です。解決順の値が大きいほど、メンバーが計算されるのは後になります。
解決順のユースケースを詳しく知るには、Essbaseのファイル・カタログにあるアプリケーション・ワークブックのギャラリで、テクニカル・セクションの解決順のテンプレートを参照してください。
非ハイブリッド・モードの解決順に関するノート
集約ストレージ・キューブでは、
-
解決順はすべてのディメンションで0に設定されます。
-
集約は、次の例外を除き、アウトラインの順序で実行されます:
- 保管済階層のメンバーが最初に処理されます。
- 動的階層のメンバーが次に処理されます。
ハイブリッドでないブロック・ストレージ・キューブでは、デフォルトの解決順は次のようになります
-
密より疎が先
-
時間より勘定科目が先
-
属性が最後
ノート:
勘定科目メンバーの解決順が時間メンバーの解決順より大きくなるように手動で設定されている場合、勘定科目は動的時系列メンバーより後に評価されます。