DBの世界に起こる変革



DBの世界に起きた大きな波

現在、どの製品を使ったとしてもRDBの性能問題は必ずといっていいほど発生する。理由は簡単で、CPU、ネットワークが高速化(CPUはマルチコア化、ネットワークは10G-Ethernetの一般化やInfiniBandなど)するのにディスク(ストレージ)が高速化に追いついていないからだ。その差を埋める役割として、RDBが担っているケースが多く、性能問題になるケースが散見される。

だが、そういう時代の流れに対して大きな変革が起きようとしている。SSDはかなりコモディティ化してきたので言うに及ばずといった感じだが、個人的には速いもののディスクの置き換えにすぎないと思っている。つまり、SSDは速いがDBのアーキテクチャに大きな変革をもたらすものではない。が、ここにきて事情が変わってきた。大きな変革の元となっているのが、不揮発性メモリの存在だ。不揮発性メモリと呼ばれるものにはPCM、ReRAM、STT-MARMなどがある。PCMが現在最も実用化が進んでいる。2011年にマイクロソフトとインテルの研究者が発表した論文「Rethinking Database Algorithms for Phase Change Memory」(http://www.cidrdb.org/cidr2011/Papers/CIDR11_Paper3.pdf)ではPCMの可能性について論じられている。興味深いのはTable1のスペックの比較だ(以下転載)。

DBの今後表1


いわゆるフラッシュと比較してスペックがいいのは一目瞭然だ。また、アイドル中の消費電力の低さや、高密度化の可能性はDRAM以上だ。つまり、この表はもはやPCMはディスクの領域の置き換えではなく、DRAMの置き換えを意味している。DRAMが不揮発になると言った時点でDBエンジニアならどうなるのかピンと来るはず。そう、今までオンメモリDBと言われていたものが、普通のDBになってしまうのだ。従来の常識では、オンメモリDBは高速だが揮発性がありそのケアが難しかった。さらに突っ込んで言うと、今後はオンメモリDBベースのアーキテクチャの製品が主役になる可能性もある。




ここに来て期待が高まるSST-MRAMの存在

先ほどの表でもわかるように、PCMは書き込みの上限があった。フラッシュと比べれば桁がだいぶ違うので、いわゆる今のSSDと比較しても安心できるレベルかもしれない。ただ、そうはいっても上限があることには変わりはなかった。ところが、SST-MRAMは実質的に書き込み上限がない。しかも東芝の「高速・低消費電力STT-MRAMキャッシュを用いたRyn-timeノーマリオフプロセッサ」(http://www.toshiba.co.jp/tech/review/2012/09/67_09pdf/f06.pdf)の図2を見る限りSST-MRAMはDRAMと比較しても速度に遜色がない(以下転載)。唯一消費電力の面で不利であったが、去年の年末に東芝からそれもクリアできたとされる発表があった(http://eetimes.jp/ee/articles/1212/10/news099.html)。つまり、DRAMと比べても同等レベルで高速、さらに書き込み上限もなく、消費電力もクリアというまさに夢のようなデバイスが生まれつつある。

DBの今後図2


これらを総合すると、SST-MRAMがDRAMに取って代わる時代は近い将来に来るだろう。現状ではこれらの技術をスマートフォンに導入させることが注目されているが、大きなシステムに関わることの多い私としてはRDBへの応用がとても気になっている。




ではRDBはどうなる?

DBエンジニア、及びストレージエンジニアやファイルシステムのスペシャリストには言わずもがなな話だが、データの永続性を担保するシステムは必ずジャーナルファイルとデータファイルの二重書きをしている。OracleでいえばREDOログファイルになるが、これがDBにとって生命線のファイルになる。データファイルの更新には時間がかかるため、ほとんどの製品ではジャーナルファイルへの書き込みを行った時点でACKを返し、性能を担保しようとする。個人的にはここの概念が覆るのではないか、と思っている。

つまり、ジャーナルファイルを更新せずとも、データ更新が高速になってしまえば直接データブロック(データファイル)を更新してしまうこともありえると思うのだ。もちろんあまりにも大量に更新がある場合は別のケアが必要になるが、大きく概念が変わることが考えられる。ちなみに、個人的にOracleDBで最も気に入っている機能でUNDOがあるが、これも不要になると思われる。もちろんOra-1555なんて過去の笑い話になってしまうだろう。

ここからは個人的な推測だが、現在最も選ばれているOralceDBのアーキテクチャが極めてオーバーヘッドが大きく非効率なものになる可能性がある。最も効率的なアーキテクチャで実装した製品が出てくる可能性があり、今後もそれに注目する必要があると思う。ちなみに、ジャーナルファイルを持たない場合、直接データを更新する他に、差分を書き込み続ける方法がある。現状実装されている製品としては、NetAPPのWAFLやPostgreSQLがある(誤解があると困るので補足すると、両者ともジャーナルファイルは存在する)。これらは書き込みの高速化やスナップショットの効率化をしやすい。デメリットとしてはガベージコレクションのような動作が必要になる(ちなみに、私の知る限りEMCに買収されたDataDomainも同じアーキテクチャになっている。DDを作ったメンバー自体がNetAPPからスピンアウトしたので、当然の流れかもしれない)。WAFLのような追記型は、ある意味直接データを更新するタイプとジャーナルファイルタイプの中間になるかもしれない。さらに、先ほど書いたように今のオンメモリDBの位置づけも重要になる。オンメモリDBはメモリ上にデータを保存できないので、そういうものと割り切ったアーキテクチャになっているが、これに追記型のように効率のいいアーキテクチャを加えた新しい製品が出てくるかもしれない。

最後に現状ではどうかということに触れると、これらの新しい不揮発性メモリはSSDに組み込まれたり一時キャッシュとして使われる流れのようである。理由はまだまだ価格面での問題があるからだろうが、少なくとも近い将来大きな変革が起こることは間違いないと思うし、エンジニアとしてはこの変革は楽しみで興味がつきない。