SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発?実行プラットフォーム
1. 杉下 誠
SAP Innovation Center Silicon Valley
2015年3月29日
Developers.IO 2015
SAP HANAは
単なるインメモリーデータベースじゃなくて
(賢い)アプリの開発?実行プラットフォーム
2. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 2Public
簡単に自己紹介:SAP入社後、約16年
購買?物流系
アプリケーション
コンサルタント
ミドルウェア系技術者
ESB/Portal/BPM/MEAP等
HANA
データベース
技術者
UI
エンジニア
アプリ?ミドルウェア?DBとレイヤーが下へ。
最近はアメリカの開発チーム所属でHANAアプリの画面をJSで作るお仕事がメイン。
フルスタックエンジニア目指しています。
名前:杉下 誠
経歴:
3. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 3Public
目次
SAP HANA 技術おさらい
HANA XSでアプリを動かす
様々なエンジンや機能で、“賢いアプリ“を
1. HANA内で統計処理機能を利用
2. 地理空間エンジン
3. グラフエンジン
4. 系列データ
5. テキスト系処理
まとめ
4. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 4Public
カラム&ロー
ストア
+
最小限の
プロジェクション
パーティショ
ニング
シングル?
マルチテナント
SQLインターフェース
カラム?ローストア
レイヤの削減
x
マルチコア/
並列化
ダイナミックな
拡張性
+ + +
アクティブ/パッシブ
& データエイジング
PA
バルクロード
デルタ領域へ
のインサート
+
+
+
+
T
テキスト検索
マップ?リデュース グループキー
過去データの分析
t
ノード内
マルチスレッド
化
SQL
集約不要
インメモリ圧縮
インメモリアプリ
SAP HANA 基礎技術おさらい
5. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 5Public
SAP HANA
イノベーションを起こすプラットフォーム
Supports
any Device
Any Apps
Any App Server
SAP Business Suite
and BW ABAP App Server
JSONR Open
Connectivity
MDXSQL
Other AppsLocationsReal-timeHADOOPMachineUnstructuredTransaction
SAP HANA Platform
SQL, SQLScript, JavaScript
Integration Services
Spatial
Business
Function Library
Search Text Mining
Predictive
Analysis Library
Database
Services
Stored
Procedure &
Data Models
Planning Engine Rules Engine
Application & UI
Services
SAP HANA Platform は
データベースのデータ処
理、アプリケーション開
発プラットフォーム、予
測のライブラリ等を含み、
テキストや空間情報の処
理など様々なものをリア
ルタイムで処理包含し、IT
環境をシンプルにします。
7. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 7Public
HANA XS はHANAのアプリケーションサーバ機能です
フロントエンド技術
? http/s
? HTML5 / SAPUI5
? クライアントサイド JavaScript
制御フロー技術
? OData
? サーバサイドJavaScript
? XMLA
データ処理技術
? SQL / SqlScript
? Calculation Engine関数
? Application Function Library (AFL)
画面描画ロジック
制御フローロジック
データ
Client:ブラウザかモバイルアプリ
SAP HANA
XS
演算ロジック
8. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 8Public
サーバサイドJavaScriptが動く
var conn = $.hdb.getConnection();
var query = 'SELECT * FROM "sap.hana.democontent.epmNext.data::EPM.Purchase.Item"' +
' WHERE "PRODUCT.PRODUCTID" = ?';
var rs = conn.executeQuery(query,productId);
var body = '';
for(var i = 0; i < rs.length; i++){
if(rs[i]["GROSSAMOUNT"] >= 500){
body += rs[i]["HEADER.PURCHASEORDERID"] + "?t" + rs[i]["PURCHASEORDERITEM"] +
"?t" + rs[i]["PRODUCT.PRODUCTID"] + "?t" + rs[i]["GROSSAMOUNT"] + "?n";
}
}
$.response.setBody(body);
(SP09でのAPI簡素化後の文法)
9. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 9Public
定義ファイル1つでODataベースのRESTサービスがつくれる
CRUD対応
service {
"hello.odata::otable" as “Entries”;
}
Studio-based editor
? “.xsodata” ファイルを定義し、HANAのビュー
もしくはテーブルを指定
? テーブルもしくはViewへOdataサービスとして
アクセス可能
SAPUI5
UIS
XSJS XSODATA
SINA
XSXMLA
CDS/HDBDD
SQLScript
SQL
Views
AFL
HDBTable HDBRole
JavaScript等で独自ロジック追加も可能
10. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 10Public
ODataとは?
ODataはRESTベースのWebプロ
トコル
? HTTP上に構築
? 軽量
? エコシステムでの幅広い適用
? SAP、Microsoft、IBM等が推進
? backend と frontendの分離
? URIによるアクセス
? マルチチャネル XML, JSON
HTTP
Atom
OData
OData for SAP
11. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 11Public
認証や権限設定も可能
現在サポートされている認証方式
? フォーム認証
? ベーシック認証
? X.509認証
? SAML
? Kerberos認証
? Logon/Assertion Ticket(SAP技術)
12. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 12Public
その他HANA XS の機能
SMTPで外部メール送信
同期/非同期で外部サービスへHTTPアクセス
ZIPやGZIP のサポート(読み書き双方)
アンチウィルス
ジョブスケジューラー
暗号化?ハッシュ化
等
13. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 13Public
UIは基本クライアントサイドフレームワークで
HANA XS自体が普通のWebサーバとして動くのでhtml/css/jsをそのまま置くこと
は可能です。サーバサイドUIフレームワークは存在しないので、XSJSベースもし
くはOdataのRESTサービスを使ったSPAを作るのが一般的です。
SAP UI5での画面作成例
15. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 15Public
予測分析
PAL および 統計言語”R” 統合機能
予測分析のための、
幅広い手法に対応した統計言語Rの活用とHANAネイティブPAL機能
未知の収益性向上機会の発見、高付加価値顧客の維持、関連度
が高くタイムリーなオファー、クロスセル?アップセル、不正
検知、顧客接点の改善…
? 拡張された予測分析アルゴリズムライブラリ
? ネイティブ予測アルゴリズムの拡張
? 強力かつ高速なデータベース内処理
? 迅速な実装
? 統計言語”R”統合機能
? オープンソース統計言語R(>3500以上の機能)をHANAインメモリ
DBと連携
? R統合機能により高速な並列化コネクタを提供
? RスクリプトをHANA CalculationViewのSQLScriptに埋め込み実
行
Y
X
Z
16. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 16Public
SAP HANA インメモリ予測解析
Predictive Analysis Library (PAL) – アルゴリズム一覧
?クラスター分析
? K-Means
? コホーネン自己組織化マップ
? Affinity PropSEation
? 階層クラスタリング
? K-Medoid クラスタリング
? K-Medians *SPS9
? ABC分析
? DBSCAN
?分類
? 決定木 C4.5
? 決定木 CHAID
? 決定木 CART
? サポートベクターマシーン
? ニューラルネットワーク *SPS9
? 線形回帰
? 多項回帰
? 指数回帰
? Bi-Variate Geometric Regression
? 2項ロジスティック回帰分析
? ロジスティック回帰
? 単純ベイズ
?外れ値検出
? Inter-Quartile Range Test (Tukey’s
Test)
? 分散検定
? 外れ値検出
?データ分析
? Common Neighbors;
Jaccard’s Coefficient;
Adamic/Adar; Katzβ
?データ加工
? サンプリング
? ビニング
? スケーリング
? 欠損値の補完
? ランダム分散サンプリング
?その他
? 重み付きスコアテーブル
?アソシエーション分析
? Apriori
? Apriori Lite
? FP-Growth
? KORD *SPS9
?時系列予測
? 単一指数平滑化
? 二重指数平滑化
? 三重指数平滑化
? ARIMA
? ARIMA-X *SPS9
17. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 17Public
Application Function Modeler
アプリケーションへ高度な予測解析機能を実装するための
グラフィカルツール
? HANA Studioに統合された拡張され
たグラフィカルデータフローモデリ
ングおよびプログラミングツール
? マルチステップのアプリケーション
機能に対応
? 移送可能なフローグラフのデザイン
タイムモデル(HANAリポジトリ内に
格納)
? PAF, BFL,カスタムAFL,Rと統合
? SQLScriptから実行可能
18. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 18Public
R連携例
Join
OP
ROP
OLAP
OP
Calc. Engine
R External
Packages
(Forecasting,
Parallelism,
statistics, etc.)
RClient
SAP RHANA
Package
データとR
スクリプト
送信
HANA DB Space OpenSource R
Space
1
3
HANA DB
R
Integration
Open Source
R
2 R scripts実行
R Servから結果
取得
シナリオ
? Rをデータマイニング演算エンジンとして利用
? アプリケーション開発者は Rでプロシージャを定義可能
CREATE FUNCTION LR( IN input1 SUCC_PREC_TYPE,
OUT output0 R_COEF_TYPE)
LANGUAGE RLANG AS'''
CHANGE_FREQ<-input1$CHANGE_FREQ;
SUCC_PREC<-input1$SUCC_PREC;
coefs<-coef(glm(SUCC_PREC ~
CHANGE_FREQ, family = poisson
));
INTERCEPT<-coefs["(Intercept)"];
CHANGEFREQ<-coefs["CHANGE_FREQ"];
result<-
as.data.frame(cbind(INTERCEPT,CHANGEFREQ))
''';
TRUNCATE TABLE r_coef_tab;
CALL LR(SUCC_PREC_tab,r_coef_tab );
SELECT * FROM r_coef_tab;
HANAのコード例
20. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 20Public
地理空間機能とは?
? 地理空間の情報をデーベースの中で直接保存、処理、
生成、共有、取得
? 地理ベクトルデータを各種解析関数で処理:
– 計測–
距離、 曲面、面積、 ペリメーター(周囲の長さ), 体積
– 関係性–
交差点、含まれる、内部にある、隣接する、接している
– 操作 –
バッファ、変換
– 属性–
種類、点の数
? 様々な2次元座標系でストア、変換
? べクトルデータ処理
? ISO/IEC 13249-3 standardと Open Geospatial
Consortium (1999 SQL/MM standard)の実装
point
line
polygon Multi-polygon
21. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 21Public
SAP HANA地理情報システムのエコシステム
データソース
データ統合ツール Load tools:
? SAP Data Services
? SAP Event Stream Processor
Types & Functions:
? Point
? Linestring
? Polygon
? SRID metadata
? Spatial function
library
? Clustering
? Spatial Joins
Engines:
? Indexserver
? Calc
? Spatial
? Attribute
? XS
Analytics GISVisualization
インターフェースサービス
SQL / Calculation Models
SAP Info Access
(HTML5)
Geo-Services:
? Geoservices
? Geocontent
odbc, jdbc, XS (InA, geoJSON, API, ODATA)
Views:
? Analytical
? Attribute
? Calculation
Geospatial Import/Export:
? Shapefile, csv, binary
? WKT / WKB Support
データアクセス
SAP HANA
(OGC Compliant)
Applications
SAP Data Spatial DataNon-SAP Data Real-Time Data
Mobility
GIS
22. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 22Public
コーディングサンプル
create column table geo_points( point ST_POINT);
insert into geo_points values ( new ST_POINT(0.0, 0.0) );
insert into geo_points values ( new ST_POINT( 'POINT(1.0 1.0)' ));
select point.ST_X(), point.ST_Y() from geo_points;
select point.ST_AsText(),
point.ST_AsBinary(),
point.ST_AsGeoJSON() from geo_points;
多角形の中に含む点を抽出
select point.ST_X(), point.ST_Y() from geo_points where
point.ST_Within( 'POLYGON((0.0 0.0,
2.0 0.0,
2.0 2.0,
0.0 2.0,
0.0 0.0))' ) = 1
23. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 23Public
Spatial Demo
x
y
(2,2)
(6,3)
(4.4)
(6,6)
(0,0)
(2 , 3) (3,3)
(1.5 , 4)
24. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 24Public
Spatial Demo
(1,1) (5,1)
(5,5)(1.5)
x
y
(2,2)
(6,3)
(4.4)
(6,6)
(0,0)
(2 , 3) (3,3)
(1.5 , 4)
25. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 25Public
Spatial Demo
(1,1) (5,1)
(1.5)
x
y
(2,2)
(6,3)
(4.4)
(6,6)
(0,0)
(2 , 3) (3,3)
(1.5 , 4)
27. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 27Public
系列データとは?
金融
予測保全
ユーティリティ小売り
エネルギー管理
系列データとはデータの点の集合体で、一般的な例としては一定期間に起きた連続
的な計測データ(センサーのデータや株価情報等)が挙げられます。
28. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 28Public
自然なSQLで表現すると「背が高くて短いテーブル」になるが??
単純に系列データをRDBMSで表現するのは意外と難しい
? データ保存の無駄が大きい
? 簡単な処理が意外と表現しずらい(線形近似を表してみる等)
? パフォーマンスが特殊要件を満たせない(タイムスタンプ情報を年、月、日でgroup byしたい等)
SAP HANAのカラムテーブル構造が拡張され、系列データを自然な表現の
まま効率的に処理できるようになりました。
Time 09:00 09:15 09:30 09:45 10:00 …
Profile 1
KWh 5 3 1 5 7 …
°C 20 21 21 22 23 …
…
KWh … … … … … …
°C … … … … … …
Profile N
KWh null 2 1 4 9999 …
°C null 11 12 9 14 …
ProfileI
D
Tim
e
KW
h
°C
Profile1 09:
00
5 20
Profile1 09:
15
3 21
Profile1 09:
30
1 21
Profile1 09:
45
5 22
Profile1 10:
00
7 23
… … … …
Profile n 09:
15
2 11
Profile n 09:
30
1 12
Profile n 09:
45
4 9
Profile n 10:
00
999
9
14
Profile n 10:
15
14 18
29. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 29Public
系列テーブルの作成:例
CREATE COLUMN TABLE DailyWeather(
station_id varchar(3) not null references WeatherStation,
date date not null,
maxtemp decimal(3,1),
primary key(station_id,date)
) SERIES (
SERIES KEY(station_id)
EQUIDISTANT INCREMENT BY 1 DAY MISSING ELEMENTS NOT ALLOWED
PERIOD FOR SERIES (date,NULL)
)
系列関連のプロパティはほかの句と組み合わせることも可能
(partitioning、 logging、location等…)
Equidistant テーブルは新しい圧縮?保存オプションを利用している
30. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 30Public
系列データサービス
圧縮効率の高いタイムスタンプ辞書アルゴリズム
通常の辞書圧縮方式 タイムスタンプ辞書圧縮方式
31. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 31Public
例:系列データテーブルと普通のカラムテーブル
系列データ定義
32. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 32Public
集約と分解例
縦方向の集約
SELECT time, SUM(solar_generation), SUM(total_consumption) FROM
StoreEnergy WHERE store_id in ('Store1', 'Store2', 'Store3')
GROUP BY time;
横方向の集約
SELECT station_id, TO_DATE(tsstart) AS date, MAX(temp) AS maxtemp, MIN(temp)
AS mintemp, AVG(temp) AS meantemp, SUM(rain) AS totalrain, SUM(snow) AS
totalsnow FROM HourlyWeather GROUP BY station_id, TO_DATE(tsstart);
分解
SELECT * FROM
SERIES_DISAGGREGATE_SECONDDATE('INTERVAL 5 DAY', 'INTERVAL 24 HOUR',
'2000-02-01', '2000-03-05');
34. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 34Public
グラフ理論に基づいたデータベースとは?
Key capabilities delivered in SAP HANA graph
? 複雑に関係しあっているようなグラフデータを表
現し、またデータ取得を行うことができるデータ
ベース
? がちがちのスキーマは不要で柔軟にグラフデータ
を生成
? グラフ演算の効率的な実行
? 単一もしくは複数のグラフトラバーサル
? 頂点間最短距離
? シンプルなアプリデザインと低開発コストを実現
する自然で理解しやすいデータの表現
? ネイティブのグラフ処理の機能
? Find all users who rated “Hamlet” and “Romeo and
Juliet” with 5 stars?
? Find all books that are in category “Fiction” or sub
categories and have been release to DVD?
35. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 35Public
使用例:ロット追跡
2015
36. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 36Public
グラフデータの表現方法
リレーションナルモデルvs.グラフプロパティモデル
“Herman” “Hugo”
頂点
(Vertex)
辺(Edge)
age = 68
type = Person
weight = 45
頂点のプロパティ (属性)
type = Person
age = 39
辺のプロパティ (属性)
since = 2006/01/24
辺のプロパティ (属性)
type = hasFather
2015
関係テーブル
関係の属性
Table A Table B
エンティティの
プロパティ
エンティティの
プロパティ
外部キー
外部キー
37. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 37Public
SELECT DISTINCT V.id
FROM WS.EDGES AS A, WS.EDGES AS B,
WS.EDGES AS C, WS.EDGES AS D,
WS. VERTICES AS V
WHERE A.source = “A”
AND D.target = V.id
AND A.type = “b”
AND A.target = B.source
AND B.target = C.source
AND C.target = D.source
USE WORKSPACE WS;
RESULT result FROM A->b(4,4);
GEM Language
GEM vs. SQL: Path Traversal
GEM SQL
USE WORKSPACE WS;
RESULT result FROM A->b(1,*);
2015
38. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 38Public
Demo sample
40. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 40Public
関連性ランキング
SELECT SCORE() AS S, CAMP_NO, DEFECT FROM TABLE
WHERE CONTAINS(DEFECT, 'throttle engine‘, FUZZY(0.7)) ORDER BY S DESC;
テキスト検索例
曖昧検索
SELECT CAMP_NO, DEFECT FROM MODELED VIEW WHERE CONTAINS(DEFECT, 'thrtle', FUZZY(0.7));
41. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 41Public
SAP HANA
テキスト分析インデックスを付けて形態素解析
テキスト分析の場合、ほかのインデックスと違い別テーブルに自動的に保存されます。
HANA
テキスト分析用
インデックス
テキスト分析
結果テーブル
もとテーブル
FulltextIndex
1. ファイルのフォーマット変換
2. トークン化
3. 語幹を認識
4. 言語解析
42. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 42Public
フルテキストインデックス
CREATE FULLTEXT INDEX [INDEX NAME] ON [SCHEMA].[TABLE]([COLUMN])
CONFIGURATION '[CONFIGURATION FILE NAME]' TEXT ANALYSIS ON;
[CONFIGURATION FILE NAME] refers to pre-defined, standard SAP configuration files.
以下のような設定オプションがSAP HANAに含まれています
? LINGANALYSIS_BASIC; LINGANALYSIS_STEMS; LINGANALYSIS_FULL
? Text Analysis results: tokens; tokens and stems; tokens, stems, and POS tags
? EXTRACTION_CORE
? Text Analysis results: predefined entities (cf. appendix), noun groups (concepts) etc.
? EXTRACTION_CORE_VOICEOFCUSTOMER
? Text Analysis results: EXTRACTION_CORE + sentiment, topics, problems etc.
CREATE FULLTEXT INDEX myIndex ON myTable(myColumn)
CONFIGURATION 'EXTRACTION_CORE' TEXT ANALYSIS ON;
43. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 43Public
テキストマイニング機能(SP09時点では英語のみ)
テキストマインングはドキュメントレベルで動き、ほかのド
キュメントと比較して意味的な決定をします。一方テキス
トアナリシスは言語解析を文書内の情報を抽出して行いま
す。
ベクトル空間モデルに基いた関数
? 類似文書の特定
? 文書のキーとなる用語の特定
? 関連用語の特定
? トレーニングコーパスに基づいた新規文書のカテゴライズ
シナリオ
? 特許文書を読むときキーワードのハイライト
? 問題解決のために過去の似たような事案を確認
? 新規技術論文をトピック階層に応じて分類
t1
tn
d1
d2
44. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 44Public
テキストマイニング ランキング機能
検索元/検索先 用語 文書
用語
関連用語
提案用語
関連文書
文書 関連用語
関連文書、
カテゴライズ
45. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 45Public
New Text Mining – Queries
SAP HANA ではテキストマイニ
ングエンジンに対してサーバサ
イドJavaScripのAPIを提供。
? getRelatedTerms
? getRelatdDocuments
? and more
SAP HANA
Indexserver
Tables
Engine
HANA App
Preprocessor
Linguistic
Processing
Entity, Fact
Extraction
Extended Application Services (XS)
TM API
Views
Text Mining
46. ? 2015 SAP SE or an SAP affiliate company. All rights reserved. 46Public
まとめ
? SAP HANAは高速インメモリーデータベースを超えて、速
く、賢いアプリを作るための基盤に成長
? アプリケーションサーバ機能を内蔵しているのでそのまま
Webアプリを作って動かすことができます。
? 統計ライブラリがあり、テキストデータ、地理データ、系
列データ等様々なデータが扱えるため、これまでは作るの
が難しかったものが比較的簡単に作れるように