ちょっと話題の記事

Amazon EC2上でSAP HANAを使ったインメモリコンピューティング事始め

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

SAP HANAとは?

SAP HANAは、High-Performance Analytic Applianceの略で、超高速なデータ処理を行うソフトウェアアーキテクチャーとそれを支えるアプライアンスサーバ群のブランドを指しているようです。当初、私は大きなハードウェア投資が必要で1エンジニアとしてHello Worldを書くことすらできないのではと思っていたのですが、Amazon EC2にHANAが載っているってことで飛びつきました。Amazon EC2インスタンスのメモリ領域を使いつつ、EBSをたくさんマウントしてRAIDしてトランザクション結果を書き込んでいるのではと妄想しています。実際のビジネスでは性能を最大化するためにパーシステンス層にioDriveなどを使うと思いますが、動作確認や開発にはEC2で十分です!

SAP HANA Developer Center

まずはポータルサイトにアクセスしてリンクをたどります。

Provision on Amazon Web Services (AWS) SAP HANA Database 1.00

次にAWS上で動くHANAを起動するためにライセンス承認をしてAWS CloudFormationのスタックテンプレートへと進みます。Get your own SAP HANA DB server on Amazon Web Services内のリンクからフォームに進みます。

ライセンス承認をすればAWS CloudFormationの画面に進みます。AWSのログインが必要です。AWS AccountIDとリージョンを指定します。

AWS CloudFormation

AWS CloudFormationは、AWSが提供するサーバテンプレートを使った構築サービスです。SAP HANA on AWSも、サーバテンプレートが用意されていますので、これを使って1クリックでデプロイ可能です。テンプレート自体は、SAPが用意したAmazon S3にアップされています。

次にインスタンスタイプを指定します。インメモリデータベースですので、メモリ量が多いデータベースを指定する必要があります。最低でも、m2.xLarge以上です。あわせて、SSHログインするためにキーペア名を指定します。ここらへんは、AWSを使っていれば直ぐに用意できるものばかりです。

内容を確認してサーバの構築をスタートします。

開始しました。

構築中。。。

無事に構築が完了するとグリーンマークとなります。キーペア名を間違えると失敗しますので気をつけてください。

SAP HANA on AWSの構築完了!!

SAP HANA Studio

SAP HANA Studioは、クライアント側のデータベース管理ソフトウェアで、Eclipseベースで動いています。Oracle Enterprise Manager的な感じでユーザ管理、テーブル管理、SQL実行などを行う事が出来ます。では、早速インストールと接続確認です。今回は、Windows 32bit版を使ってみます。

インストール自体はワンクリックで終了

SAP HANA Studio立ち上がりました。

SAP HANA StudioからSAP HANA on AWSに繋げる

ナビゲーターからシステムの追加を選択して接続先を指定します。

接続をするためには、AWS CloudFormationから起動したHANAサーバのEIPアドレスを指定します。また、データベースは初期状態ですので、固定のパスワードを使って接続します。SYSTEM / manager でログインできます。

固定のパスワードを入力します。後でユーザを追加しましょう。

接続できました!

ユーザを追加する

SYSTEMユーザはシステム管理者なのであまり触らずに開発用に使うユーザを追加したいと思います。HDB -> Catalog -> AutorizationからUsersを選択して、ユーザの追加を行います。

ユーザ名、パスワードを入力し、ロールを指定します。CONTENT_ADMINロールとMODELINGロールを指定してみました。また、システム権限として、DATA_ADMIN権限、DEVELOPMENT権限を付与しました。

ユーザの作成が完了しましたら、HDBのプロパティから接続ユーザを変更してください。これで完了です。作成したユーザでログインし直すと、新しいユーザスキーマが追加されていますね。

テーブルを追加する

SAP HANAはANSI92 SQLが使えます。普通にテーブル定義して普通にSQL文を発行できます。ということで順番にやってみましょう。まずはテーブルを定義します。

テーブル名を決めてカラムを定義してキーを決めてというエンジニアには理解しやすい流れです。

作成したテーブルにデータを挿入します。

いつものSQL文です。

そしてSELECT文を実行しましょう。ANSI92対応ですので、ORDER BY句、GROUP BY句など使えます。そしてこのSELECT文の実行時間がマイクロセカンドのスピードです。おそらくインメモリの検索よりもネットワークレイテンシのほうが大きいです。

まとめ

今までフツーのエンジニアにとって非常に敷居の高いSAPとHANAでしたが、今回のお試しによって予想外に簡単でした。クラウドによってハードウェア購入を無くし、AWS CloudFormationによって構築作業を無くし、HANA Studioによってデータベースを簡単に管理でき、ANSI92によって既存のエンジニアが今までの知識をそのまま活かせます。これらと、インメモりデータベースという何桁もスピードが変わってくるテクノロジーを使えれば、社会変えられそうですよね。テクノロジーを使いこなして社会の変革に間接的に貢献するって純粋に楽しそうじゃないですか。アントレプレヌールな精神に繋がるかな。そう思ったらクラスメソッドにエントリーしましょうw

参考資料

Get your own SAP HANA DB server on Amazon Web Services!

HANA Developer Edition-SAP HANA Studio

SAP HANA Developer Edition - Provision on Amazon Web Services (AWS) SAP HANA Database 1.00 - Suse Linux 64 bit version