この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
AWS Marketplaceから利用開始
AWS MarketplaceからSAP HANA Oneが使えるようになりました!しかも、本番運用可能なライセンス付きです。インメモリコンピューティングをするためにハードウェアやソフトウェアを買う必要はありません。1時間単位で借りることができるのです!現在、SAP HANA Oneは、US East(Virginia)、US West(Oregon)、EU West(Ireland)にあるクラスタコンピュートインスタンス上で直ぐに使うことが出来ます。
クラスタコンピュートインスタンス
SAP HANA Oneで使われる、クラスタコンピュートインスタンスの性能をご覧下さい。モンスターです。
クラスタコンピュートエイトエクストララージインスタンス
- 60.5 GiB メモリ
- 88 EC2 コンピューティングユニット(ECU)(2 × Intel Xeon E5-2670、8コア "Sandy Bridge" アーキテクチャ)
- 3370 GB インスタンスストレージ
- 64ビット プラットフォーム
- I/O 性能: 超高速(10 ギガビットイーサネット)
- EBS 最適化: 使用不可*
- API 名: cc2.8xlarge
AWS Marketplaceから起動する
SAP HANA Oneの使い方は簡単です。AWS Marketplaceから選択するだけです。ここから選んで起動するだけで、ソフトウェアのライセンスとEC2インスタンスの使用料がセットになって計算されます。
今回は、オレゴンで起動してみましょう。
そして、起動ボタンを押せばOK!ひとつ、注意点としては、KeyPairを先に作っておきましょう。
インスタンス起動中です。。。
無事に起動完了しました!
AWS管理コンソールの設定
無事に起動が確認できましたら、AWS管理コンソールで外部から接続できるようにセキュリティグループの設定をします。SSHのポート(22)、JDBC接続のポート(30015)、HANA Studio接続のポート(50013-50014)を開けて下さい。また、固定IPアドレス(EIP)を付与すると接続文字列が短くてイイ感じです。
SAP HANA OneへSSH接続する
SSHのポートを開きましたので接続してみましょう。
$ ssh -i hogehoge.pem root@XXX.XXX.XXX.XXX
楽しんでね〜というメッセージ
__| __|_ ) SUSE Linux Enterprise
_| ( / Server 11 SP1
___|\___|___| x86_64 (64-bit)
For more information about using SUSE Linux Enterprise Server please see
http://www.novell.com/documentation/sles11/
Have a lot of fun...
hanaserver:~ #
接続すると、ライセンスについて承認を求めて来ます。全部読んだら最後にYesを選択して次に進みましょう。次に行うことは、管理者パスワードの変更です。
$ passwd hdbadm
そして、ユーザを変更します。
$ su - hdbadm
続けてSAP HANAを起動します。
hanaserver:/usr/sap/HDB/HDB00> HDB start &
さらに、HANAのシステム管理ユーザのパスワードを変更します。hdbsqlというDB接続ターミナルを使います。
hanaserver:/usr/sap/HDB/HDB00> hdbsql
Welcome to the SAP HANA Database interactive terminal.
Type: ¥h for help with commands
¥q to quit
hdbsql=> ¥c -i 00 -n localhost:30015 -u SYSTEM -p manager
Connected to HDB@hanaserver:30015
hdbsql HDB=> alter user SYSTEM password hogehoge
0 rows affected (4155 usec)
hdbsql HDB=> quit
SAP HANA Studioから接続する
SAP HANA Studioを使ってアクセスする方法は、以前の記事で紹介させて頂きましたので、そちらをご覧下さい。
Amazon EC2上でSAP HANAを使ったインメモリコンピューティング事始め
接続確認できましたので、データベース概要を見てみましょう。50GBのメモリ領域と16CPUを使えるという夢のマシンです。
JDBC接続してみる
最後にJDBC接続をしてみたいと思います。まずは、簡単なテーブル検索です。フツーに書けますね。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class HanaOne {
public static void main(String[] args) throws Exception{
Class.forName("com.sap.db.jdbc.Driver");
String url = "jdbc:sap://XXX.XXX.XXX.XXX:30015/?autocommit=false";
Connection conn = DriverManager.getConnection(url, Credencials.user, Credencials.pass);
Statement stmt = conn.createStatement();
String sql = "select * from account";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
System.out.print(rs.getString(1)+",");
System.out.print(rs.getString(2)+",");
System.out.print(rs.getString(3)+"\n");
}
System.out.println("finished.");
}
}
データベースのメタデータを取得する
DBの概要を知るために、JDBCメタデータを取得して表示したいと思います。
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
public class HanaOneMeta {
public static void main(String[] args) throws Exception{
Class.forName("com.sap.db.jdbc.Driver");
String url = "jdbc:sap://54.245.101.44:30015/?autocommit=false";
Connection conn = DriverManager.getConnection(url, Credencials.user, Credencials.pass);
DatabaseMetaData dbmd = conn.getMetaData();
System.out.println("CatalogSeparator : "+dbmd.getCatalogSeparator());
System.out.println("CatalogTerm : "+dbmd.getCatalogTerm());
System.out.println("DatabaseProductName : "+dbmd.getDatabaseProductName());
System.out.println("DatabaseProductVersion : "+dbmd.getDatabaseProductVersion());
System.out.println("DatabaseMajorVersion : "+dbmd.getDatabaseMajorVersion());
System.out.println("DatabaseMinorVersion : "+dbmd.getDatabaseMinorVersion());
System.out.println("DefaultTransactionIsolation : "+dbmd.getDefaultTransactionIsolation());
System.out.println("DriverMajorVersion : "+dbmd.getDriverMajorVersion());
System.out.println("DriverMinorVersion : "+dbmd.getDriverMinorVersion());
System.out.println("DriverName : "+dbmd.getDriverName());
System.out.println("DriverVersion : "+dbmd.getDriverVersion());
System.out.println("ExtraNameCharacters : "+dbmd.getExtraNameCharacters());
System.out.println("IdentifierQuoteString : "+dbmd.getIdentifierQuoteString());
System.out.println("JDBCMajorVersion : "+dbmd.getJDBCMajorVersion());
System.out.println("JDBCMinorVersion : "+dbmd.getJDBCMinorVersion());
System.out.println("MaxBinaryLiteralLength : "+dbmd.getMaxBinaryLiteralLength());
System.out.println("MaxCatalogNameLength : "+dbmd.getMaxCatalogNameLength());
System.out.println("MaxCharLiteralLength : "+dbmd.getMaxCharLiteralLength());
System.out.println("MaxColumnNameLength : "+dbmd.getMaxColumnNameLength());
System.out.println("MaxColumnsInGroupBy : "+dbmd.getMaxColumnsInGroupBy());
System.out.println("MaxColumnsInIndex : "+dbmd.getMaxColumnsInIndex());
System.out.println("MaxColumnsInOrderBy : "+dbmd.getMaxColumnsInOrderBy());
System.out.println("MaxColumnsInSelect : "+dbmd.getMaxColumnsInSelect());
System.out.println("MaxColumnsInTable : "+dbmd.getMaxColumnsInTable());
System.out.println("MaxConnections : "+dbmd.getMaxConnections());
System.out.println("MaxCursorNameLength : "+dbmd.getMaxCursorNameLength());
System.out.println("MaxIndexLength : "+dbmd.getMaxIndexLength());
System.out.println("MaxProcedureNameLength : "+dbmd.getMaxProcedureNameLength());
System.out.println("MaxRowSize : "+dbmd.getMaxRowSize());
System.out.println("MaxSchemaNameLength : "+dbmd.getMaxSchemaNameLength());
System.out.println("MaxStatementLength : "+dbmd.getMaxStatementLength());
System.out.println("MaxStatements : "+dbmd.getMaxStatements());
System.out.println("MaxTableNameLength : "+dbmd.getMaxTableNameLength());
System.out.println("MaxTablesInSelect : "+dbmd.getMaxTablesInSelect());
System.out.println("MaxUserNameLength : "+dbmd.getMaxUserNameLength());
System.out.println("NumericFunctions : "+dbmd.getNumericFunctions());
System.out.println("ProcedureTerm : "+dbmd.getProcedureTerm());
System.out.println("ResultSetHoldability : "+dbmd.getResultSetHoldability());
System.out.println("RowIdLifetime : "+dbmd.getRowIdLifetime());
System.out.println("SchemaTerm : "+dbmd.getSchemaTerm());
System.out.println("SearchStringEscape : "+dbmd.getSearchStringEscape());
System.out.println("SQLKeywords : "+dbmd.getSQLKeywords());
System.out.println("SQLStateType : "+dbmd.getSQLStateType());
System.out.println("StringFunctions : "+dbmd.getStringFunctions());
System.out.println("SystemFunctions : "+dbmd.getSystemFunctions());
System.out.println("Schemas : "+dbmd.getSchemas());
System.out.println("TimeDateFunctions : "+dbmd.getTimeDateFunctions());
System.out.println("URL : "+dbmd.getURL());
System.out.println("UserName : "+dbmd.getUserName());
}
}
実行結果は以下です。
CatalogSeparator : .
CatalogTerm : CATALOG
DatabaseProductName : HDB
DatabaseProductVersion : 1.00.38.368649
DatabaseMajorVersion : 1
DatabaseMinorVersion : 0
DefaultTransactionIsolation : 2
DriverMajorVersion : 1
DriverMinorVersion : 0
DriverName : HDB
DriverVersion : 1.0
ExtraNameCharacters :
IdentifierQuoteString : "
JDBCMajorVersion : 4
JDBCMinorVersion : 0
MaxBinaryLiteralLength : 0
MaxCatalogNameLength : 0
MaxCharLiteralLength : 0
MaxColumnNameLength : 127
MaxColumnsInGroupBy : 0
MaxColumnsInIndex : 0
MaxColumnsInOrderBy : 0
MaxColumnsInSelect : 0
MaxColumnsInTable : 0
MaxConnections : 0
MaxCursorNameLength : 0
MaxIndexLength : 0
MaxProcedureNameLength : 127
MaxRowSize : 0
MaxSchemaNameLength : 128
MaxStatementLength : 0
MaxStatements : 0
MaxTableNameLength : 127
MaxTablesInSelect : 0
MaxUserNameLength : 256
NumericFunctions : ABS,ACOS,ASIN,ATAN,ATAN2,CEILING,COS,EXP,FLOOR,LOG,LOG10,MOD,POWER,ROUND,SIGN,SIN,SQRT,TAN
ProcedureTerm : PROCEDURE
ResultSetHoldability : 1
RowIdLifetime : ROWID_UNSUPPORTED
SchemaTerm : SCHEMA
SearchStringEscape : \
SQLKeywords :
SQLStateType : 2
StringFunctions : ASCII,CHAR,CONCAT,LENGTH,LTRIM,RTRIM,SUBSTRING
SystemFunctions : IFNULL
Schemas : com.sap.db.jdbc.ResultSetSapDBFinalize@bbe0f0a
TimeDateFunctions : CURDATE,CURTIME,HOUR,MINUTE,MONTH,NOW,SECOND,WEEK,YEAR
URL : jdbc:sap://XXX.XXX.XXX.XXX:30015
UserName : SATOSHI
まとめ
前回の事始め記事に続いて、今回のSAP HANA Oneをご紹介しました。AWS Marketplaceを使ってワンクリックでソフトウェア込みの夢のマシンを1時間単位で使えるという時代の変化について行けませんw。次回は脅威のパフォーマンスをどのように引き出すかいろいろ試したいと思います。
参考資料
Amazon EC2上でSAP HANAを使ったインメモリコンピューティング事始め