OLTPの高速化のためのポイント
昨今のビッグデータブームの中で、インメモリデータベースや、RDB内でカラムベースの処理やデータ圧縮等によるソフトウェアベースの高速化技術が出てきています。
それらの多くは、大きいブロックサイズのデータに対するシーケンシャルI/Oのスループットを改善するソリューションであり、DWH等に代表されるOLAPを想定したものが中心となっています。
これに対して、データベースのOLTPの高速化を考えるにあたって、重視しなければならない基本的なポイントには以下があります。
・小さいブロックサイズのデータに対するランダムIOが多い
・IOPS(1秒あたりのI/O処理数)と低レイテンシが求められる
・OLTPは、OLAPと違って止まってはならないクリティカルな処理であり、技術的な信頼性が重要
さらに、データベースのOLTPのパフォーマンス問題の主な原因として挙げられるのが、ディスクのIOと、DB設計の複雑化により非効率なSQLが実行されている、という点です。これらの点からOLTPのパフォーマンス改善の仕組みで重要となるのが、以下の2点です。
1.既存DB環境内で透過的に利用できる(既存のデータ保護の仕組みをそのまま使える)
2.DB設計に影響を与えない(これ以上複雑化しない)
これを満たした上で、インフラコスト、運用コストの削減とOLTPパフォーマンスの改善を行う手段があります。それがフラッシュ(NANDメモリ)技術と自動化技術の組み合わせによるシンプルで、チューニング不要な自動化された高速化です。
フラッシュは高価だというイメージがありますが、IOPSあたりの単価でみると、現在では、15,000回転のファイバチャネルディスクの1/6です。今後MLC(マルチレベルセル)大容量フラッシュのエンタープライズでの利用が進むことで、さらに単価は下がります。容量(GB)あたりの単価でみても、これまで年率40%で価格が下落しており、2015年には現在の磁気ディスクの容量単価とほぼ同じレベルまで低価格化するということが見込まれています。ただ、データ量の増大に対する投資という従来の視点においては、容量単価のみで評価されてしまい、現時点ではフラッシュは高いという判断になります。そのため、小容量のフラッシュを如何に効率的に使って高速化するかが重要となってきます。
そのために、フラッシュドライブを以下の3つのレイヤで効率良く活用するための開発が進んでいます。
(1)ストレージ:キャッシュ領域及びディスク領域(階層化とオールフラッシュストレージ)
(2)サーバ:PCIeフラッシュ
(3)ネットワーク:PCIeフラッシュアプライアンス
次に、それぞれのレイヤにおけるフラッシュの活用についてご紹介します。