インメモリDBの「SAP HANA」、インテルの不揮発性メモリに正式対応。サーバダウン時もデータを失わず高速起動
SAPは同社のインメモリデータベース「SAP HANA」のアップデートリリース「SPS03」で、インテルの不揮発性メモリ「Intel Optane DC persistent memory」に正式対応し、データベースの一部を不揮発性メモリに配置することを可能にすると発表しました(SAP HANAのブログ、インテルのブログ)。
Intel Optane DC persistent memoryは、メインメモリのDRAMと同じくDDR4スロットに挿せる不揮発性メモリで、インテルが6月1日に正式発表したばかりです。サンプル出荷が開始されており、2019年に本格出荷が予定されています。
Intel Optane DC persistent memoryを利用することのメリットは2つ挙げられます。
1つはDRAMよりも安価なため、DRAMよりも安く多くのメモリをサーバに搭載し利用できるようになること。そしてもう1つは、データベースのデータを不揮発性メモリに配置するとサーバダウン時にもメモリ上のデータが消えないため、すぐに再起動できることです。
下記はSAP HANAブログにポストされた記事「Continuous and Customer-Driven Innovation with SAP HANA」からの引用です。
SAP HANA 2.0 SPS03 also is the first major database platform to support Intel Optane DC persistent memory. Persistent memory support will transform the current data storage hierarchy providing a combination of higher capacity, affordability, and persistence. This will enable customers to process more data in real-time while driving a lower TCO and improving business continuity with drastically faster SAP HANA startup times.
SAP HANA 2.0 SPS03はIntel Optane DC persistent memoryをサポートする最初の主要なデータベースプラットフォームです。不揮発性メモリのサポートは、大容量かつ安価そして不揮発性を実現し、現在のデータストレージにおける階層構造を変革するものです。これにより、お客様はより低い総所有コストでより多くのデータをリアルタイム処理できるようになり、さらにSAP HANAの起動時間が劇的に高速化されることでビジネスの継続性の改善も実現できます。
すべてのメモリをDRAMにするよりも安価なメモリ構成が可能に
SAP HANAはインメモリデータベースであるため、基本的にすべてのデータをメモリ上で管理しています。データ圧縮機能は備えていますが、それでも多くのデータを扱うにはSAP HANAを稼働するサーバに数百ギガバイトから数十テラバイト級のメモリ、すなわちDRAMを搭載することが要求されます。
それは当然のことながら、サーバの調達コストの大きな上昇に直結します。
ここに、インテルの不揮発性メモリを利用するメリットの1つが存在するのです。Intel Optane DC persistent memoryは容量あたりの単価が(まだ本格出荷されていないため、実勢価格が不明ではあるものの)DRAMよりも安いとされています。そのため、より安いコストで大容量のメモリをサーバに搭載可能なのです。
ただしIntel Optane DC persistent memoryのアクセス速度はDRAMよりもおおむね1桁から2桁程度遅いと考えられています。一般に、メインメモリとして使われているDRAMのアクセス速度は、数十ナノ秒から数百ナノ秒程度。Optane DC persistent memoryに使われている不揮発性メモリ媒体「3D XPoint」のアクセス速度は1マイクロ秒から10マイクロ秒程度とされています。
そのため、すべてのメモリをIntel Optane DC persistent memoryにするのではなく、データベースのデータのうち、あまりアクセスされない部分を置き換えるのが効果的な使い方です。
そこで今回のSAP HANA SPS03では下図のように、メインストア(main store)と呼ばれるデータ領域の一部、または全部を不揮発性メモリに配置することができるようになっています。
インメモリデータベースとしてのSAP HANAが不揮発性メモリを活用する上で、このメインストアと呼ばれる領域の性質は大きなポイントです。そこでこのメインストアとはどんな領域なのかを紹介しておきましょう。
メインストアとは、リード処理に最適化されたカラムストア
SAP HANAのデータベースは、3つの領域「L1デルタ」「L2デルタ」「メインストア」に分かれています。
このメインストアがSAP HANAのデータベース本体といっていい領域です。そしてSAP HANAのメインストアはデータを列ごとに管理する「列指向データベース」あるいは「カラム型データベース」と呼ばれる構造となっています。
通常のリレーショナルデータベースはデータを「行」で管理し、行ごとにデータの追加削除更新などを行うのに対し、カラム型データベースによって列方向でデータを管理する利点は、列方向には同じ種類のデータが並んでいるためデータの圧縮効率が高くなり、列方向に計算を行う集計処理なども高速に行えることです。すなわちカラム型データベースは大量のデータの分析処理を高速に実現することに向いているのです。
カラム型データベースの特長については、下記の記事を参照してください。
しかしカラム型データベースは、通常のリレーショナルデータベースで行われる行の追加や削除といった行単位の処理、トランザクションは苦手です。処理に非常に時間がかかります。
そこで、SAP HANAではこれを克服するために、カラム型データベースであるメインストアの手前に「L1デルタ」「L2デルタ」の2つの領域を設けているのです。
L1デルタの内部は通常のリレーショナルデータベースと同様に「行」指向でデータが管理されています。アプリケーションからのデータベースに対する行の追加削除更新などの処理は、このL1デルタ内で高速に処理されます。そしてL1デルタで処理が完了すれば、外部からはSAP HANAがトランザクションを高速に完了したように見えます。
ただしSAP HANA内部ではまだ処理は終わっていません。L1デルタに書き込まれた内容は、バックグラウンドでL2デルタに変換されます。L2デルタはカラム型データベースの形式になっています。そしてL2デルタでカラム型に変換されたデータは、最後にメインストアにマージされます。
SAP HANAの内部構造については、下記の記事を参照してください。
メインストアの性質がSAP HANAの不揮発性メモリ活用を支えている
ここまでの説明で、SAP HANAのメインストアはすなわち、高い圧縮率でデータを保存し、データの読み込みや集計処理に特化した領域なのだということが分かります。
そこで、データの追加削除更新といった高速なデータの書き換えを要求されるL1デルタとL2デルタはDRAMに配置して高速な処理を支えつつ、読み込みや集計に特化したメインストアを不揮発性メモリに配置することで、全体として性能低下を一定程度に抑制できるわけです。
特にメインストアのデータの圧縮率は高いため、たとえ不揮発性メモリがDRAMよりも10倍遅くとも、集計や分析などデータをまとめて読むケースでは読み込みにかかる時間を10倍以下にできる(圧縮率が10倍であれば、伸張の時間が余計にかかるもののDRAMとほぼ同じ読み出し時間になる)と考えられます。
こうしてみると、インメモリデータベースとして生まれたSAP HANAは、不揮発性メモリを活用するという面でもよくできた内部構造を備えているのだと思わされます。
サーバダウン時も不揮発性メモリ上のデータは保存されたまま
不揮発性メモリを採用するメリットのもう1つは、サーバがダウンし再起動したとしても不揮発性メモリの内容は消えないという点です。
SAP HANAはインメモリデータベースですから、利用可能な状態になるにはストレージからすべてのデータをメモリへロードする必要があります。しかしメインストアを不揮発性メモリに配置すると、電源が落ちて再起動したとしてもメインストアの内容は消えません。
DRAM上にあるL1デルタとL2デルタの内容はメモリ上に戻す必要があるので、ログなどから戻す必要がありますが、全体のデータのほとんどはメインストアに配置されているため復旧処理は短時間で済むはずです。
メインストアを不揮発性メモリに配置することで、万が一SAP HANAがダウンしたとしても非常に高速な再起動が可能になるのです。
不揮発性メモリをどう活用して最適なシステムを構築していくか
不揮発性メモリは今後間違いなく、多くの企業向けサーバに採用されていくテクノロジーです。
SAP HANAは初めて不揮発性メモリに正式対応を表明した主要なデータベースとなりましたが、Oracle DatabaseやMicrosoft SQL Serverなども今後数年以内に不揮発性メモリへの対応を実現してくることでしょう。それだけでなく、来年からIntel Optane DC persistent memoryの本格出荷が始まれば、クラウドにおける仮想サーバでも不揮発性メモリを搭載したものがでてくるはずです。
これらをどう活用して最適なシステムを構築していくか、技術者にとって新たに考慮すべき要素が増えていくことになります。
関連記事
あわせて読みたい
「GitHubの独立性を守って、すべての開発者にいままで通り使ってもらう」、GitHubの国内イベントに日本マイクロソフトのCTOが登場。GitHubの独立性維持を約束
≪前の記事
Google Compute Engine、クラウド上の物理サーバを自社のみで専有できる「sole-tenant nodes」をβ公開