Contenu connexe
Similaire à Qlikアプリケーションのパフォーマンス最適化戦略 (20)
Plus de QlikPresalesJapan (20)
Qlikアプリケーションのパフォーマンス最適化戦略
- 1. Qlik Application Performance Optimization Strategies
(QAPOS)
Qlikアプリケーションのパフォーマンス最適化戦略
QlikPerf.com
Document Author: Jeff R. Robbins
Email: Jeff.Robbins@qlik.com; jr@QlikPerf.com
Date: February 2nd
, 2020
目次
はじめに .......................................................................................................................................2
パフォーマンスライフサイクル.................................................................................................................2
QAPOS 1: オブジェクトと数式のリファクタリング ........................................................................................4
QAPOS 2: データモデルの複雑さを軽減する ............................................................................................5
QAPOS 3: ファクト行の事前集計(統合)について ....................................................................................5
QAPOS 4: ストリームライン テーブルリンク..............................................................................................6
QAPOS 5: 冗長なデータや未使用のデータの削除 .....................................................................................6
QAPOS 6: キャッシュウォーミング..........................................................................................................7
QAPOS 7: アプリケーションのセグメント化...............................................................................................8
Appendix 1: CalcTimeによるユニットパフォーマンステスト(QlikViewのみ) ...................................................9
Appendix 2: PMPTによるユニットパフォーマンステスト(QlikViewのみ) ...................................................... 10
- 2. はじめに
Qlik Application Performance Optimization Strategies(略称:QAPOS1)
は、QlikViewとQlik
Senseのアプリケーションにおいて、特定の最適化を識別して実装するためのフレームワークを提供します。最適化とは、経
験的に測定可能なパフォーマンスの向上をもたらすアプリケーションの変更のことで、以下の1つまたは複数の側面がありま
す:
1. レスポンスタイムの短縮
2. ハードウェアリソースの消費量の減少
3. システムの信頼性・安定性の向上
パフォーマンスライフサイクル
フトウェア・アプリケーションのパフォーマンス測定と改善は、この図に示すように循環的なプロセスです:
1
QAPOS "の発音は/kāpōs/で、ギターアクセサリーの複数形である "capos "の発音と同じです:
https://en.wikipedia.org/wiki/Capo
- 4. February 2nd
, 2020
QlikPerf.co
m
Qlik Application Performance Optimization
Strategies
Page 4 of 10
QAPOS 1: オブジェクトと数式のリファクタリング
ここでは、リファクタリングの 2 つのカテゴリー、すなわち、オブジェクトの計算時間の短縮(UI の変更を必要としない)
とオブジェクトの計算回数を減らす(UI の変更が必要な場合もあります)。
A. オブジェクトの計算時間の短縮(UIの変更なし)
Qlikオブジェクト(チャートなど)とそれに含まれる式は、SQLの集約クエリに似ています。目的の出
力を達成するために、通常、複数の可能なSQLクエリ(それぞれが異なるパフォーマンス特性を持つ)
があるのと同じように、特定の結果を達成するためにQlikオブジェクトとその構成式を構築するための
複数の方法があることがよくあります。このように、非常に強力なQlikパフォーマンス改善戦略は、次
のようなステップでオブジェクトと式のリファクタリングです:
1. 様々な選択状態でオブジェクトが示す結果を確認する。
2. オブジェクト全体(構成する式や変数を含む)を調べ、データモデルに対してどのように計算を行う
のかを理解します。
3. オリジナルのオブジェクトと同じ出力を提供する代替オブジェクトのバージョンを考え、実装する。
場合によっては、より効率的なオブジェクトの作成をサポートするために、データモデルにフィール
ドを追加することが価値あることもあります。この概念の一般的な例は、チャートの計算されたデ
ィメンションを、新しいデータモデルのフィールドに基づいたディメンションに置き換えることです。
4. オブジェクトの代替バージョンのパフォーマンスをテストします。変更後のパフォーマンスがいずれか
の代替バージョンで改善された場合、そのバージョンを新しいベースラインに昇格させます。
B. オブジェクト算出頻度の減少(UIの変更が必要な場合があります。)
Qlikの計算エンジンは、ユーザーのアクション(フィールドでの選択など)がUIオブジェクトに表示
されているデータに影響を与えることを検出した場合、すべてのUIオブジェクトを再計算します。そ
のため、特定の時点でオブジェクトの計算を無効にすることは、多くのケースで有用です。 ユーザ
ーが行う以下の手順を考えてみましょう。:
1. 「フィルターを開く」ボタンをクリックすると、ディメンションフィールドのリストボックスが表示されます。
2. ディメンション・フィールドAの値を選択します。
3. ディメンション・フィールドBの値を選択します。
4. フィルターを閉じる]ボタンをクリックすると、ディメンションフィールドのリストボックスが非表示になります。
5. チャートを見る
ユーザーが操作するたびにすべてのUIオブジェクトが再計算されると、クリックするたびに顕著な遅延が発
生し、一連の遅延からなる遅いユーザー体験を提供することになります。そのため、ユーザーが(クローズ
フィルターなどのボタンをクリックして)チャートを見たいと言うまで、リソースを多く消費するチャートの計算を
無効にした方が有利な場合があります。チャートの計算を遅延させるには、シートオブジェクトの計算条件
や表示条件を設定するだけでよい。
- 6. QAPOS 4: ストリームライン テーブルリンク
テキストキーを数字キーに置き換える。Qlikデータモデルの数値キーは、テキストキーに比べて消費スペース
が少なく、実行時のパフォーマンスも速くなる可能性があります。
前述の戦略(ファクト行の統合)と同様に、実行時の応答時間とデータ更新時間の間のトレードオフを評価
する必要があります。テキストキーを数字キーに変換する(通常、Qlik AutoNumber機能を使用する)こと
で、エンドユーザーへの実行時の応答が速くなる可能性がありますが、周期的なデータ更新時間が長くなる可
能性があります。
QAPOS 5: 冗長なデータや未使用のデータの削除
データモデル内のフィールドで、チャート、UIオブジェクト、変数などで使用されていないものは、システムリソ
ースを消費しますが、何のメリットもありません。このような未使用のフィールドを特定して削除することで、
パフォーマンスを向上させることができます。
また、ETLプロセスの欠陥により、データモデル内のレコードが重複することがあります。例えば、1,000万人の
顧客がいることがわかっているのに、QlikのデータモデルのCustomersテーブルに2,000万件のレコードがある
場合、ETLプロセスのどこかでレコードの重複が発生している可能性があります(Qlikの前のETLプロセスや、
Qlikのロードスクリプト自体の中にある可能性もあります)。
理想的には、ETLプロセスを分析して、どの時点で重複したレコードが発生するかを理解し、ソースで問題を
修復する必要があります。分析に十分な時間が取れない場合は、Qlik LOADスクリプトコマンドのプレフィックス
を明確にすることで、アプリケーション構築プロセスのどの時点でも、重複レコードを排除することができる便利な
方法です。
- 8. QAPOS 7: アプリケーションのセグメント化
1つの論理アプリケーションを複数の物理的なQVWまたはQVFファイルに分割し、各ファイルをシームレスに
「オンデマンド」でロードすることができます。分割されたQVWやQVFは、単一のQVWやQVFよりもサイズ
が小さくなり、チャート式の集計対象となるレコードの数も少なくなるため、物理的に分割することで、エン
ド・ユーザーへの応答時間を短縮することができます。
1. ソフトウェア開発において、分解とは、大きなソフトウェアをより小さなコンポーネントに分割し、パフォ
ーマンスの向上やメンテナンスを容易にすることである。例えば、Microsoft Outlookは、単一のファ
イルではなく、ディスク上の80以上の個別ファイルで構成されています。多くのファイルで構成されて
いるとはいえ、Outlookは1つのアプリケーションです。
2. Qlikのアプリケーション開発は、ソフトウェア開発の一種であるため、Qlikのプロジェクトに分解の技術を
適用することで、レスポンスタイムを短縮してユーザーエクスペリエンスを向上させることができます。
3. 1 つの論理的な Qlik アプリケーションを複数の物理的なファイル (QVF または QVW) に分割 (「セグメ
ント化」) し、必要なときに各ファイルをシームレスにロードすることができます。セグメント化されたQVファイ
ルは、単一のモノリシックなQVファイルよりもサイズが小さく、チャート式の集約対象となるレコードのセット
も小さくなるため、この分解によりパフォーマンスが向上します。
1. アプリケーションのセグメンテーションは、2つの異なる方法で実行できます:
a. 先験的に、定期的に行われるデータ更新プロセスでアプリケーション・セグメントを構築する場合
b. aposteriori (アプリケーションセグメントがエンドユーザーの要求に基づいてアプリケーションのランタイムに構
築される)
c. 先験的なアプローチは従来から「ドキュメントチェイニング」と呼ばれ、後験的なアプローチは
「ODAG」(オンデマンドアプリ生成)と呼ばれることが多いです。しかし、どちらのアプローチも、
実際には複数のQVWを連鎖させて(またはリンクさせて)、まとまったナビゲーションパスを作
っていることに注意してください。a prioriアプローチとa posterioriアプローチの唯一の違いは、
アプリケーションセグメントのQVWの作成が、仕様に基づいてプロアクティブに行われるか、ユー
ザーのランタイムリクエストに基づいてリアクティブに行われるかということです。
d. 先験的なアプローチ(「ドキュメントチェイニング」)は、ユーザーがデータをスライスする方法
が限られている場合に最も効果的であり、したがって、ユーザーの分析要件を満たす管理
可能な数のアプリケーションセグメントを作成するためのスケジュールを設定することができま
す。
e. 事後的なアプローチ(ODAG)は、ユーザーがデータをスライスする方法が非常に多く、すべ
てのスライスを事前に作成されたセグメントで実装すると、セグメントの数が増えすぎてしまい、
その多くが定期的に使用されない可能性がある場合に適したオプションです。ODAGでは、作
成されるセグメントの数は、ユーザーがダッシュボードの実行時に要求したものに限定されます。