高速分析処理のハイブリッド・モード
Oracle Essbaseハイブリッド・モードの計算および問合せプロセッサにより、手続き型計算と読取りおよび書込みモデリングを使用したリアルタイム分析を実行できます。ハイブリッド・モードは、ブロック・ストレージ問合せの動的依存性分析のデフォルト・エンジンです。計算スクリプトのデフォルトではありません(有効にできます)。
Essbase 11gオンプレミスを使用したことがあれば、様々な目的にあわせて調整された1つ以上のキューブ設計モードに慣れている可能性があります:
- ブロック・ストレージ: 大規模な疎ディメンションが存在する場合に最適です。このモードのキューブは、問合せのパフォーマンスを向上させるために、保管および事前集約されます。分析用の計算関数が豊富に用意されています。
- 集約ストレージ: ディメンションと上位レベル集約の数が多いキューブに最適です。メンバー式はMDXを使用して指定できます。
- ハイブリッド・モード: 集約ストレージの利点が拡張されたブロック・ストレージ・モードです。
ハイブリッド・モードは、Essbase 21c、Essbase 19cおよびOracle Analytics Cloud - Essbaseのブロック・ストレージ・キューブにおける、問合せの動的依存性分析のデフォルトの問合せエンジンです。ハイブリッド・モードは、依存性分析が強力で集約が高速です。動的メンバーに依存するメンバーの複雑な問合せの処理に優れています。
Oracleでは、分析アプリケーションで疎の集計を含む動的依存性を使用することをお薦めします。Essbase 11gオンプレミスの場合と同様に、動的計算を選択的に疎ディメンションに実装することに限定されません。特に、パフォーマンス・チューニングのガイドラインやテストに従って、動的な疎の集約が使用可能で推奨されています。
ハイブリッド・モードは、ブロック・ストレージ・キューブのデフォルトの問合せプロセッサですが、計算スクリプトを実行する際のデフォルトではありません。計算スクリプトに多数の動的依存性が含まれている場合、Oracleでは、計算スクリプトに対してもハイブリッド・モードを有効にすることをお薦めします。これを実行するには、アプリケーション構成プロパティで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セルのみロード可能 |
はい |
保管済レベルの場合、はい 動的レベルの場合、いいえ |
バッファを使用してデータを増分ロードする機能 |
はい |
いいえ |
いいえ |
疎ディメンションでの式の評価の結果が、密ディメンションでの同じ式の結果と異なる |
該当なし |
はい。ハイブリッド・モードなしのブロック・ストレージでは、Essbaseの計算スクリプトが、疎ブロックに対する依存性を解決する目的で繰り返し書き込まれる場合があります。ディメンション・タイプを疎から密(またはその逆)に変更すると、同じ式に対して異なる結果が得られる可能性があります。 |
いいえ。式の依存性は、疎性や密度に関係なく同様に計算されます。 ハイブリッド・モードでは、Essbaseはアルゴリズムを使用して動的依存性を解決します。計算スクリプトから導出されたデータが、ハイブリッド・モードとハイブリッドなしのブロック・ストレージ・モードで異なる場合もあります。 |
ハイブリッド・モードの開始
ハイブリッド・モードを開始するには、次のガイドラインに従います:
-
開発環境を設定し、既存のブロック・ストレージ・アプリケーションをその環境に移行します。ブロック・ストレージ・キューブでは、デフォルトでハイブリッド・モードが有効化されています。
-
可能な場合は、大規模な疎ディメンションを動的にします。
-
ハイブリッド・モードを有効化する前と後に、テスト問合せを実行し、アプリケーション・ログを確認します。これにより、集約ストレージ問合せプロセッサが使用された程度と、ハイブリッド・モードによって改善された点がわかります。各問合せについて、アプリケーション・ログには、
「ハイブリッド集約モードを使用できます。」
またはハイブリッド集約モードを使用できません。
と示されます。 -
ハイブリッド・モードを無効にしてログに記録される問合せが多すぎる場合は、Oracle Supportに連絡してください。
ハイブリッド・モード向けのキューブの最適化
ハイブリッド・モードを最も効果的に使用するには:
-
ハイブリッド・モードでは、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に設定されます。
-
集約は、次の例外を除き、アウトラインの順序で実行されます。
- 保管階層のメンバーが最初に処理されます。
- 動的階層のメンバーが次に処理されます。
ハイブリッドでないブロック・ストレージ・キューブでの、デフォルトの解決順序は
-
密の前に疎
-
時間の前に勘定科目
-
最後に属性
ノート:
勘定科目メンバーの解決順序が時間メンバーの解決順序よりも大きくなるように手動で設定されている場合、勘定科目は動的時系列メンバーの後に評価されます。