生活の半分は技術ディスカッション、残りはラボ。IBMの技術フェローがデザインした「データ活用時代」のDBアーキテクチャと技術を深掘りしてみた。
2013年4月11日、IBMが東京都内で開催したビッグデータに関するセミナーイベントの「Information On Demand Conference Japan」。このために、IBMフェローの1人であるティム・ヴィンセント氏が初めて来日、最新のDB2やビッグデータソリューションについて講演を行った。ヴィンセント氏は、1991年から、来日するほんの18カ月前までの長きにわたり一貫してDB2の開発に携わり、最後はDB2のチーフアーキテクトも勤めた。現在は、DB2はもちろんビッグデータ関連製品を含むInformation Management部門のChief Technology Officerとなっている。彼は日々の業務の半分くらいは、世界中の顧客とDB2について話をしている。残り半分はIBMのラボにいて、開発チームメンバーとDB2やその他の製品のアーキテクトについて会話しているとのこと。DB2のことを知り尽くしているヴィンセント氏に、新しいDB2のどこがすごいのか、話を聞いた。
2013年4月4日にリリースされたばかりの「DB2 10.5」には、新機能の「BLU Acceleration」、可用性、拡張性が向上した「pureScale」、NoSQLとの融合となるJSON型データのサポートといった特長がある(関連記事)。中でも、最も投資したのは、BLU Accelerationだとヴィンセント氏。そして、このBLU Accelerationには、4つのキーポイントがあるという。
1つめが、圧縮機能。圧縮はこれまでもDB2に搭載されていたが、今回は単に圧縮率が高いだけでなく、圧縮した状態のままのデータに対し概算処理ができる。解凍する必要がないので、サイズは小さいままでメモリもCPUも利用率が向上する。そして、キャッシュラインも使わなくて済み、バスを通るデータ量も減らせる。
もう1つが、インメモリの活用。インメモリデータベースはいま注目技術の1つで、多くのITベンダが提供を開始している。そんな中、IBMは、全てのものをメモリに入れなくてもいい」というアプローチをとった。統計的なアルゴリズムを用いて、データを「ホット」「最もホット」とカラムを分類し、メモリに載せるデータを最適化したのだ。これをIBMでは、「ダイナミックインメモリー」と呼んでいる。
「全てがメモリに載った状態で処理できなければなりませんが、それは全てのデータをメモリに載せることではありません」(ヴィンセント氏)
つまり、処理対象となるデータは全てメモリ上にあるべきだが、そのために使わないデータも含めて全てをメモリに載せる必要はないということだ。これは、データウェアハウスなどの処理と同様の発想といえるだろう。多くの場合は、数年分の履歴データを含む莫大なデータを保持しているものの、実際に分析対象となるのは最近発生した数カ月分であることがほとんどだ。なのに、数年分のデータをメモリに載せるのは明らかな無駄である。
「(メモリ単価が)安価になったので、(ITベンダもシステム担当者も)とにかくたくさんメモリを搭載する。そうすれば、それだけ性能は向上するでしょう。しかし、肝心なのはメモリに必要なデータをフィットさせることです。SAP HANAのように全てをメモリに載せてしまう実装では、データベースが成長し、データが載りきらなくなったらどうしますか。そのときには、新たにメモリを追加するのでしょうか。それでは管理コストも増大してしまいます」(ヴィンセント氏)
さらにDB2では、メモリに載せたデータの大きさをレジスタサイズに合わせる工夫も施した。これにより、レジスタの利用効率を上げることができ、さらなる高速化を実現している。
BLU Accelerationの3つめのキーポイントが並列処理だ。その大きな特長となるのが、「Single Instruction Multiple Data(SIMD)」命令セットの活用。SIMDは、端的に言うとベクトルプロセスエンジンのことを指す。しかしながらSIMDは、「せっかくプロセッサに搭載されているのに、あまり利用されていません」とヴィンセント氏。今回IBMではこれに着目し、最大限に利用するようにした。
例えば、10のカラムに同じ値を入れたい場合、値を入れる処理を10回繰り返し順番に行う処理が一般的だ。一方で、SIMD命令セットをきちんと活用すれば、クエリを10個に分け1度の処理で入れられる。結果的に処理待ちが減ることにもなる。「BLU Accelerationはハードウェアリソースを100%使い切ることができます」とヴィンセント氏は説明する。
4つめのポイントが、「データ・スキッピング機能」。これは、「ネガティブ・インデックス」という考え方を取り入れたもので、必要ないデータを処理前に取り除くもの。実際にはBLU Accelerationのカラムごとに「ハイキー」「ローキー」というメタデータを持っており、処理時にそれらを参照し、各カラムのデータがクエリ対象かをあらかじめ判断する。対象外ならそのデータをCPUに送らずスキップする、というものだ。
「データ・スキッピングのコンセプトは、買収したNetezzaに由来しています。Netezzaでは『ゾーンマップ』というテクノロジーでこれを実現しており、データ・スキッピングのメタデータと同じような働きをします」(ヴィンセント氏)
Copyright © ITmedia, Inc. All Rights Reserved.