SAPがインメモリ・データベースHANAを開発したとき、SAPは自社のアプリケーションが新しいインメモリー・データベースの最悪の敵であることを発見しました。SAPは、HANAのメリットを得るためにアプリケーションを最適化する必要があることに気付きました。しかし、SAPはHANAだけを念頭に置いていましたが、オラクルのような機能豊富なデータベースも同じ最適化をサポートしており、そのメリットを享受することができます。
SAPは、データベースを単なるデータストアだと考えていました。ユーザーがデータに対して有用な操作を行う場合は常に、インテリジェントなSAPアプリケーション・サーバーに転送する必要がありました。
この方法の欠点は明らかです。100万個の値の合計を計算する必要があり、それらの値が異なる通貨のお金を表している場合、100万個の個々の値がデータベースサーバーからアプリケーションサーバーに転送され、計算が行われた後には消去されます。このアプローチによって発生するネットワークトラフィックが、パフォーマンス低下の原因となっています。
この問題に対応するため、SAPは「プッシュダウン」戦略を開発しました。「プッシュダウン」戦略とは、データ集約型の計算を必要とするコードをアプリケーション層からデータベース層にプッシュダウンするものです。彼らは、ABAPコードが(暗黙的または明示的に)データベースに格納されたプロシージャを呼び出すことを可能にする、まったく新しいプログラミングモデルを開発しました。また、SAP NetWeaver Core Data Services (CDS)と呼ばれる標準的なプロシージャのライブラリを定義しました。
20年前、オラクルはすでに同じ考えを持っており、同じ決断を下していました。バージョン7以降、Oracle Databaseでは、開発者はプロシージャや関数を作成し、データベース内に格納して実行することができます。そのため、Oracle DatabaseでもCDSを利用できるようになりました。現在では、SAPアプリケーションの開発者もCDSを利用できます。
SAPのデータ・モデル(アプリケーションが使用する表のセットとそれらの間の関係)は、15~20年前に定義され、ディスク指向データベース用に最適化されていました。しかし、ディスクベースのコンピューティングの時代における最適化は、インメモリ・コンピューティングの時代には障害となることが判明しました。
最も有名な例は、おそらくSAP BWキューブの内部構造です。ビジネスまたはユーザーの観点から見ると、単一のキューブのように見えますが、実際には複数の表のセットであり、それらの間の関係は、マルチレベル階層(スター・スキーマまたはスノーフレーク・スキーマ)として記述できます。この複雑な構造は、クエリやレポートの実行時に多くの結合を必要とするため、インメモリデータベースの処理速度を大幅に低下させます。そこでSAPは、SAP BW on HANA用に新しくシンプルなデータモデルを設計し、これをHANA-Optimized InfoCubesと名付けました。しかし、この新しいデータモデルは、HANA用に最適化されているだけではありません。一般にインメモリー・コンピューティング用に最適化されています。したがって、Oracle Database In-Memoryをアクティブ化したOracleユーザーのSAPも実装できます。唯一の違いは名前(Flat InfoCubesまたはシンプルにFlat Cubes)です。
あまり有名ではありませんが、重要な最適化が表のデクラスタ化です。クラスタ表は、完全な(論理的な)レコードを1つの(物理的な)表の列に格納します。このような複雑な値は、SAP Application Serverでは解釈できますが、データベース・サーバーでは解釈できません。つまり、クラスタ表が関与している場合、コードのプッシュダウンはできません。したがって、SAPでは、HANAおよびOracle DatabaseのTable Declusteringがサポートされるようになりました。
前述したCDSフレームワークの利点は、SAPアプリケーション(SAP開発者が作成した標準アプリケーション)に限定されるものではありません。顧客にとって、自社開発アプリケーションはSAPランドスケープの重要な一部です。これらのアプリケーションの多くは、CDS機能を使用することで大きなメリットを得ることができます。
CDSビューは、ODataを介して公開できます。CDSのOData公開に基づいて、開発フレームワークSAP WEB IDEを使用してSAP Fioriアプリケーションを作成することは比較的簡単です。詳細は、レポートABAP Core Data Services on anyDBを参照してください。
ご購入をお考えですか?
営業担当者に問い合わせる営業担当者とチャットアカウント/サブスクリプション、プロモーションの問題
チャットを開始テクニカルサポート、またはその他のサポートリクエスト
サポート・オプションを表示