「SAP Basis概要の教科書」No.19 SAP HANA DBについて
INDEX LINK
はじめに
今回は、SAP S/4 HANAを支えるデータベースとなる「SAP HANA DB」について概要を説明いたします。どんな特徴があり、従来のデータベースと何が異なるのか、そのあたりをメインにお話いたします。
1. 登場の背景
従来のRDBMS製品の場合、ディスクI/Oがボトルネックになり性能が思うように出せないことがありました。例えばバッチジョブが多数並列実行される夜間や、従業員が出社し一斉にSAPシステムを利用する朝一に、著しく応答時間が長くなるなどのケースです。そのため、データベースサーバ側では可能な限り大量のメモリを積み、ディスクI/Oを極力減らしメモリキャッシュから高速にデータを返却する必要がありました。しかし、その対策にも限界があるため、新たなデータベース製品が切望されていました。そこにSAP HANA DBが登場します。
2. ハードウェア
SAP HANA DBでは
・マルチコアアーキテクチャによるCPUの高速並列実行の実現
・複数ブレードの超並列スケーリングによる負荷分散、並列処理高速化
・64ビットアドレスメモリ空間の活用による大量のメモリ領域の確保
・100GB/秒のデータスループットの実現
など、大幅にデータベースハードウェアとしての処理能力が向上しています。
3. インメモリデータベース
SAP HANA DBはインメモリデータベースに分類されます。ディスクではなくメモリ上にデータを全て保持するイメージです。メモリはCPUのキャッシュと直接データ転送に使われるため、データ転送速度はディスクよりもはるかに速いです。 そのため、ディスクに格納されているデータに比べて、メモリに格納されているデータは、データにアクセスするまでの時間において、データベースのパフォーマンスの優位性を大きく向上させることができます。
以前まではコストパフォーマンスの観点から、メモリではなくディスクに大容量データを保持することが現実的な選択肢でした。しかし、近年メモリ単価が下がっており大容量データをメモリ上に保持することも可能になりました。また、ディスクに対するアクセス速度向上は頭打ちの状態になっていますが、メモリアクセスの高速化は進歩していて、さらに進む可能性があります。そのような拝見でSAP HANA DBをはじめとしたインメモリデータベースが登場しました。
良い面を先に書きましたが、メモリ(バッファキャッシュ)に保存されているデータは揮発性があるため、システムの電源を落としたり、再起動したりすると、メモリ上のデータは失われてしまいます。そこで、SAP HAHA DBでは、バックグラウンドで非同期プロセスを動作させ、一定間隔でセーブポイントを設け、そのセーブポイント毎にメモリのデータを定期的にディスクに書き出しています。
このようにして、SAP HANA DBでは、メモリ上にデータを保管するリスクを抑え、SAPシステムとのデータの送受をメモリ上で行うことにより、従来のデータベースの性能ボトルネックであったディスクI/Oの読み込みについて解決することができました。
4. カラムストアとローストア
カラムストアは分析用途の処理(OLAP)に、ローストアは大量のトランザクション処理(OLTP)に適した格納方式になります。SAP HANA DBでは、これらの処理を1つのデータベースで実現しています。S/4 HANAシステムのデータも、データの特性に応じて自動的にカラムストアとローストアに分類されて格納されます。それぞれのストアに格納されているテーブル名やその割合などについては、S/4 HANAシステムにログオンし、トランザクションDB02から確認することができます。従来のRDBMS製品はローストア、つまり行単位でデータを格納・抽出していいました。カラムストア(列単位)でデータを取り扱うことにより、クエリーで必要な項目(列)のみ抽出でき、転送データ量を削減することで処理速度が向上させることができましか。
5. データの圧縮
インメモリデータベースの方式をとることで処理性能は大幅に向上しました。さらにメモリからCPUへのデータ転送速度を上げるために、メモリ内のデータ圧縮機能も搭載されています。また、メモリ使用量を抑えてデータ格納効率を上げるためにもデータ圧縮機能は有効に機能します。
6. テーブルパーティショニング
会計テーブルなど頻繁にデータが追加される巨大テーブルは、一度クエリーを発行すると、なかなか応答がないこともしばしばあります。また、複数のクエリーを同時に同じ巨大テーブルに発行することでレスポンスが低下することもあります。この問題を解決するために、SAP HANA DBでは、大規模テーブルを複数に分割し、1つのテーブルにアクセスが集中することで発生するボトルネックを解消し、高速化を実現しています。(~2000年までは分割テーブルA,2001年~2010年までは分割テーブルB、それ以降は分割テーブルCといったイメージ)
おわりに
いかがでしたでしょうか。今回は、S/4 HANAシステムのデータベースとして主に利用されているSAP HANA DBについて概要をご説明いたしました。※
S/4 HANAとHANA DBは言葉的に混乱を招きやすいですが、
S/4 HANAはSAP ECCに変わるERP製品群で、そのデータベース部分を担うのが HANA DB
と考えて下さい。少しでも皆様のHANADBに対する理解の一助になれば幸いです。
※HANA DBはS/4専用ということではありませんが、ほぼSAP製品用に使われています。