徒然日記

 | 

2017-08-31 SAP HANA 備忘

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

SAP HANAを語るうえで、エンジン存在があります。
A : Join Engine
 マスタテーブル同士を表結合する。(Join)
B : OLAP Engine
 トランザクションテーブルを集計する。(Group by)
 トランザクションテーブルとマスタテーブル群を表結合する。(Join)
C : Calculation Engine
 こまいいろいろ。Union含むJoinCaseなど...
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レコードセットっと言ったほうが通りが良いかな?
これら言語一般的プログラマーは、データセット(内部テーブル)をデータベースから取得して、
ループを回しながら、行単位で処理を記述すると思う。
しかしながら、SQLHANA 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

以上

 |