SAP HANA 備忘

SAP HANA関連を少し書こうと思う。(あらびきです。最新は違うかもしれない)

SAP HANAを語るうえで、エンジンの存在があります。
A : Join Engine
 マスタテーブル同士を表結合する。(Join)
B : OLAP Engine
 トランザクションテーブルを集計する。(Group by)
 トランザクションテーブルとマスタテーブル群を表結合する。(Join)
C : Calculation Engine
 こまいいろいろ。Union含むJoinやCaseなど...
D : SQL Engine
 スクリプトベースのSQL

そして、OLAP Engineに汗をかかせると、SAP HANAは無理なく軽やかに動作する。
厳密ではないけれど、だいたい以下Viewが各エンジンに対応する。

SAP HANA SPS10くらいまで、
 HANA View:HANAユーザで動作
 A : Attribuite View
 B : Analytic View
 C : Calculation View

SAP HANA SPS10〜12およびSAP HANA2
 HANA View:HANAユーザで動作
 A ; Calculation View - Dimmension
 B : Calculation View - Cube - Star join:on
 C : Calculation View - Cube - Star join:off
 ABAP CDS View:Netweaver(ABAP)7.4以降:SAPユーザで動作
 A : 追記予定
 B : 追記予定
 C : 追記予定

少し毒を吐きます。
上記内容は、眉間にしわを寄せて(笑)語るといいかも。
なんかね、どんな技術で実装しても、本質的な部分では変わらないのに、
SAP HANAで実装すると、アカデミックになり、
Microsoft Accessで実装すると、小馬鹿にされる。
じゃぁ本質ってなんだよ。
個人的には、データの処理単位とこれに伴う設計の違いだと思っています。
ABAPや他の言語、JavaのORマッパーやdotNETのレコードセットっと言ったほうが通りが良いかな?
これら言語の一般的なプログラマーは、データセット(内部テーブル)をデータベースから取得して、
ループを回しながら、行単位で処理を記述すると思う。
しかしながら、SQL、HANA View等は、データセットを一括で処理しようとする。
(DBカーソルとかあるけれど、基本的にループを回さない)

以下書籍のコラムに、
https://www.amazon.co.jp/dp/4774173010/
SQLを設計した頭のいいお兄さんは、
行単位でループを回すような処理は行わなくても、
あらゆる機能は実装可能なんだっというような内容を主張していて、
だからSQLは、カーソルの機能は貧弱なんだとのこと。
僕も全てでは無いけれど、ほとんどの処理をループ無しに記述するように、
脳内矯正をしています。
理由というか好き嫌いなんだけれど、
SQLでデータセットを一括処理させると、
バグが発生したときに、派手な動きとして現れるので、(レコードが大量増幅したり)
見つけやすいと思う。
あと、だいたいにおいてローコストでパフォーマンスが良いと思う。


検索キーワード
ABAP
ABAP 7.4
ABAP 7.40
ABAP 7.5
ABAP 7.50
Netweaver 7.4
Netweaver 7.40
Netweaver 7.5
Netweaver 7.50
Open SQL
New Open SQL
Classic Open SQL
SAP HANA
HANA VIew
CDS View
ABAP CDS View
Code to Data
Code Pushdown

以上