SQLエンジンで数分を要する処理をミリ秒単位に短縮するSAP HANA Viewの高速パフォーマンス
作成者:森﨑 敏朗 投稿日:2013年10月29日
読者の皆様、こんにちは。SAPジャパンの森﨑と申します。今回から2回に分けて、「SAP HANA Viewとハイパフォーマンス実現に向けた施策」というテーマで、関連する各機能についてご紹介させていただこうと思います。第1回は、SAP HANA Viewについて見ていくことにします。
SAP HANAで実装されている3つのView
SAP HANA内部にはDB以外にも、Planning Engine、Calculation Engineなど、さまざまな処理エンジンが搭載されています。SAP HANA Viewは、マルチコアCPUの性能をフルに活用できるようソースコードレベルで最適化を施し、該当エンジン内の処理をパラレルに処理させるための機能を提供することで、SAP HANAの高速処理実現に貢献します。
SAP HANA Viewには、Attribute View、Analytic View、Calculation Viewと呼ばれる3つのViewがあります。それぞれの概要を以下に簡単にまとめてみます。
それでは、実際にSAP HANA内部での処理の流れを追いながら、SAP HANA Viewの位置付けを確認していくことにしましょう。
SAP HANA Viewによる超高速処理実現の流れ
SQL文が発行されると、通常はOptimizerを介して処理が行われます。標準的なSQLの場合、Optimizerが判断し、SQL Engineを使ってRow StoreやColumn Storeでの処理の結果を返す形を取ります。一方、SAP HANA Viewを作成した場合には、SQL Engineを使用せず、Calculation Engine、OLAP Engine、Join Engineを使用して処理を行います。
SAP HANA Viewを使用した場合の大きな違いは、処理速度の速さです。たとえば、SQL Engineを使った場合とSAP HANA Viewを使った場合を比較すると数百倍高速に処理することができます。そして、このようなスピードを実現できる背景には、次のようなメカニズムの違いがあります。
Attribute viewやAnalytic viewでは、where文で使用される“INNER JOIN”や“OUTER JOIN”を事前定義し、覚え込ませておくというような設定を行います。これによって、通常のSQLの処理で実施されるようなOptimizerによるJOIN状況の確認ステップなどが省かれます。そして、もう一つ高速処理するための代表的な機能としてOLAP EngineのParallel Aggregationがあります。これは、複数のスレッドを生成して入力データを小さい単位のパーティショニングでフェッチし並列に集約処理を行います。集約したものはバッファー内に格納され、並列に結合処理を実施します。
言い換えれば、SAP HANA Viewは「分析用途で高速性を要求される処理」に適していると言えるでしょう。SAP HANA Viewの高速性維持・向上のためには、3つのEngineであるCalculation Engine、OLAP Engine、Join Engineそれぞれの用途を活かし、組み合わせて使用したり、単独で使用したりといった使用形態を検討し、さらにEngine間の転送データ量をできだけ小さくすることが重要となります。
Calculation Viewで提供する複数のオプション機能
Calculation Viewでは、複数のオプションが提供され、用途や利用者レベルに応じて選択することができます。通常のSQLを使用してSQLスクリプトを記述する方法、CE Functionを使用してSQLスクリプトを記述する方法、さらにGraphical Modelerを使用して直感的なGUIを使ってモデリングを行う方法があります。
Calculation Viewを含めたモデリングオブジェクトの用途、メリット、デメリットを以下にまとめます。
通常のSQLでSQLスクリプトを記述する方法は、SQL文を理解している開発者にとって非常に馴染みのある形態で、きめ細かな対応が可能となります。ただし、SQLに習熟していないと十分に活用できず、またクライアント側のクエリーが最適化されないため、他の方法と比べてパフォーマンスが劣るというデメリットがあります。CE(Build-in)Functionの場合、最適化および並列化を行うため、一般的なSQLよりも高いパフォーマンスを実現できますが、CE Functionという新しいスクリプトの構文を覚える必要があります。
通常のGraphical Modelerを使用する場合には、SQLやCE Functionの構文を知っている必要がないため、これらに習熟した開発者でなくても取り扱うことができます。ただし、グラフィカルなインターフェースで隠ぺいされるため、SQLスクリプトを直接記述する方法と比較すると、きめ細かな対応ができないというデメリットがあります。Graphical Modelerで使用可能な関数については、順次開発され提供される予定となっています。これらのオプションについては、利用者(開発者)のレベルや、用途(複雑な計算であるか/項目数が少ない簡単な計算であるか)などに応じて最適な対象を選択することで、より有効にViewの機能を享受することができます。
今回は、SAP HANA Viewについて見てきましたが、いかがだったでしょうか?
細かな内容となりましたが、SAP HANAを利用される方々の参考になれば幸いです。次回は、「SAP HANA Viewとハイパフォーマンス実現に向けた施策」というテーマで説明させていただきたいと思います。引き続きご覧いただければ幸いです。
ご質問はチャットやWebからも受け付けております。お気軽にお問い合わせください。
●お問い合わせ先
チャットで質問する
Web問い合わせフォーム
電話: 0120-554-881(受付時間:平日 9:00~18:00)