既存アプリやDBに手を加えず高速化するには
では、なぜそもそもI/O帯域やストレージ性能がボトルネックになりがちなのだろうか?1つには、DB設計者がストレージの「容量」ばかりを気にするあまり、I/O帯域やストレージ性能にまで配慮が及ばないことが挙げられる。しかし根本的な原因は、I/Oやストレージの性能進化のペースが、CPUやメモリなどと比べ遅いことにある(図1)。

※クリックすると拡大画像が見られます
例えばCPUの場合、約10年前のサーバではシングルコアのプロセッサしか存在しなかったが、現在では6コア~10コアが当たり前であり、その相対性能は約28倍にまで向上している。それに対してファイバチャネル(FC)の帯域は2Gbpsから8Gbpsへと約4倍高速化したにすぎず、HDDの回転数に至っては最大1万5000回転から全く向上していない。このことから、I/Oやストレージの性能がDBシステム全体のボトルネックとなっているのは明らかだ。
これを解消するには、当然のことながらI/Oインタフェースやストレージをより高速なものに変更する必要がある。確かに、I/Oインタフェースやストレージ装置単体での性能は上記の通りさほど向上していないものの、最新の技術をうまく適用すれば高速化の余地は十分にある。例えばストレージ装置を増設してRAIDの多重度を高めたり、あるいはディスク装置をHDDから高速なSSDに換装することによって、I/Oとストレージが原因のボトルネックを解消できる可能性がある。
また、ハードウェアの入れ替えだけでDBを高速化する方法には、既存のアプリケーションやDBに極力手を加えずに済むという大きなメリットがある。先に述べたように、ソフトウェアの改修や作り直しによる対応には多大なコストとリスクが付きまとう。その点、ハードウェアの入れ替えであればソフトウェアにはほぼ手を加える必要がないため、確実に、かつ低リスクでDBシステムの高速化を実現できる(図2)。

※クリックすると拡大画像が見られます
ここまで、既存システムに手を入れることでDB高速化を実現する方法について解説してきたが、ではDBシステムを丸ごとリプレースする場合や、あるいはまったく新たな仕組みを導入する場合にはどのような方法が考えられるだろうか?そうしたニーズに応えられるさまざまなソリューションの中から、代表的なものを幾つか紹介してみよう。