データベースに特化して設計されたNetezzaのアプライアンス製品【後編】


日本ネティーザ株式会社 執行役員 技術本部長 法華津 誠氏

 企業が蓄積してきた大量のデータは、何らかのデータベースという形で保管されているのが一般的だ。そして、このデータベースに対して、さまざまな条件で絞り込みを行い、企業が必要としている情報を取得できるようにしている。このように、大規模データベースの高度な分析を通じてビジネスの意志決定を下すまでの流れ、いわゆるビジネスインテリジェンス(BI)を支えるITシステム基盤として展開されているのが昨今のデータウェアハウス(DWH)ソリューションだ。

 Netezza Performance Server(NPS)アプライアンスは、ハードウェアとソフトウェアの密接な連携によって実現された画期的なDWHソリューションの1つである。ここでは、日本ネティーザ株式会社 執行役員 技術本部長 法華津 誠氏にお聞きしてきたさまざまな情報をもとに、NPSアプライアンスを支えるアーキテクチャとその構成技術について解説していく。後編となる今回は、NPSアプライアンスのバックエンドを支えているMPPノードのアーキテクチャと、より高度な分析を可能にするNetezzaならではの取り組みについて取り上げる。

極力データを移動させないことで高速化を図る斬新なアプローチを採用

 前編では、NPSアプライアンスがSMPホストと多数のMPPノード群からなる2階層構造をとっていること、そして特に注目すべきポイントがMPPノードの独特なアーキテクチャにあることを説明した。MPPノードは、スニペットを処理するという意味からNetezzaではSPU(Snippet Processing Unit)と呼んでおり、このSPU上に実装されている独自のアプローチがインテリジェント・クエリ・ストリーミング技術である。これは、テラバイト級のデータを扱う際になるべくデータを移動させないほうがよいという事実に基づくNetezzaならではのアプローチとなる。

 これに対し、今日多く見られるデータベースプラットフォームは、ディスクから共有メモリにいったんデータを読み込み、メモリ上でクエリを実行する。しかし、このアプローチは膨大なデータを扱う処理には適していない。データ量が多ければ、メモリへのデータコピーに時間がかかる上、高速化のためにメモリ容量を物理的に増やすことでコストもかさむからだ。インデックスを活用すれば処理すべきデータ量を抑えることは可能だが、インデックスを利用するためのハードウェアやソフトウェアの整備、エンドユーザーのノウハウなどが必要になり、結局のところコストの増大を招いてしまう。

 インテリジェント・クエリ・ストリーミング技術は、そうした従来型のアプローチとは決別し、データ自体を極力移動させないことでCPUが処理すべきデータ量を最小限に抑えている。データ処理機能をディスクにできる限り近い位置に寄せつつ、データがメインメモリに移動する前に不要なデータを削除してしまう。これにより、インデックスを活用できない場合においても、余計なデータ処理コストをかけることなく、CPUで処理すべきデータのワークセットを軽量化できるのだ。そして、この「ふるい」の役割を果たしているのが、FAST(FPGA-Accelerated Streaming Technology)エンジンと呼ばれるものだ。


左は従来型のDWHアーキテクチャ、右はNetezzaのDWHアーキテクチャである(出典:日本ネティーザ株式会社、以下同様)。従来型のアーキテクチャは、別々の筐体に別れた何階層ものハードウェアから構成されており、高速化のために広帯域のバスや大容量のキャッシュメモリなどを備えている。また、インデックス付けやパーティショニングなどが適用される。これに対し、Netezzaのアーキテクチャは「少ないほどよい(LESS IS MORE)」というアイディアのもとに1つのアプライアンスを通じてDWHの全機能を提供している。このシンプルな構成こそが優れた処理能力につながっているのだ

HDDから読み出されたデータはFPGAの中で徹底的に不要部分をそぐ

SPUを支える高密度ブレードの構造。ブレード上には、CPU(AMCC PowerPC 440GX)、メインメモリ、1台のSATA HDD、FPGAなどが搭載されている。一見すると、RISC系CPUが搭載された小さな組み込み機器といった様相だが、ここにFPGAも搭載されている点が大きな違いといえるだろう

 SPUには、スニペットの指示に従ってデータ処理を行うCPU、CPUとセットで用いられるメインメモリ、データベースの一部を保管するHDD、そして不要なデータをふるいにかけるFPGA(Field Programmable Gate Array)などが搭載されている。いずれも業界標準のコモディティハードウェアを採用している。主要なDWHソリューションでは、インテルやAMDのCPUを搭載するケースが多く見受けられるが、SPU上のCPUにはAMCC PowerPC 440GXを搭載している。PowerPCは、ゲーム機やネットワーク機器で多く採用されており、定常的に流れてくるデータの処理に強いのが特徴だ。後述するように、SPU内でもデータのスムーズな流れが重要であり、PowerPCの強みと合致している。また、消費電力や発熱が非常に少ないことから、高密度な超小型ブレードの実現にも都合がよい。実際、SPU上のPowerPCはヒートシンクのみで十分に冷却できている。

 FPGAは、論路的な回路の設計図を送り込むと、あたかもその回路のように振る舞うプログラミング可能なLSIチップだ。SPU上には、1Mゲート(100万ゲート)のFPGAが搭載されている。CPUではリアルタイムOS(Nucleus)が動作しており、OSイメージはブレード上のフラッシュメモリから読み出される。これに対し、FPGAの基本的なイメージデータ(大本となる設計図)は、起動時にフロントエンドのSMPホストからネットワークを通じて個々のFPGAへと送り込まれる。また、与えられたクエリに最適な振る舞いをするように、スニペットを通じて細かい設定パラメータも逐次送り込まれる。

 FPGAにはディスクコントローラの機能が組み込まれているため、HDDから読み出されたデータは、まずこのFPGAに入力される。FPGA内では、読み出されたデータのパージングやエラー修正、レコードの可視化制御などが行われる。また、クエリのWHERE条件に従ってレコードの絞り込みを行ったり、必要なカラムのみを抽出したりする。従来型のアーキテクチャでは、インデックス付けやパーティショニングによって高速化していた作業をすべてFPGAによるハードウェア処理で置き換えているわけだ。こうしてふるいにかけられたデータのみがメインメモリに転送され、CPUで最終的に処理される。

 「インテリジェント・クエリ・ストリーミング技術の目標は、HDDから転送されたデータのスピードで滞りなく処理できるシステムを実現することです。メインメモリなどに転送してから処理するのではなく、HDDから読み出しつつ、その流れに乗って答えを返せるようなシステムを目指しています。FASTエンジンで削除されるデータは最大で全体の99%にも達するため、SPU上のCPUが実質的に処理すべきデータ量はたったの100分の1になる計算です。現行システムでは、1基のSPUあたり60~70MB/秒のスピードでスキャン(JOIN、SORT、集計など)する能力があり、並列化されたSPUの数に比例してシステム全体のスキャン性能もリニアに向上していきます。(法華津氏)」


SPU上のFPGAは、不要なデータを削除する「ふるい」の役割を果たすLSIチップだ。HDDから読み出されたデータはFPGA内でふるいにかけられ、CPUで本当に処理すべきデータのみをメインメモリに転送する。HDDから読み出されたデータの流れを止めずにクエリ処理を実行できるのがNetezzaならではのアイディアなのだ数多くのSPUで並列に処理することにより、SPUの数に比例してスキャン性能をリニアに高めることが可能だ。例えば、100台のSPUがあれば、6~7GB/秒でデータをスキャンできる計算になる。これほどのスピードで処理できれば、テラバイト級のデータ分析も多くの企業が許容できる時間内に完了するはずだ

アプライアンスのストレージ総容量は搭載されるSPUの台数で決まる

 SPU上には1台のSATA HDDが搭載されているが、HDDのデータ領域はいくつかのパーティションに区切られている。1つはデータベース本体(の割り当て分)を保管するメインパーティション、もう1つは異なるSPUのメインパーティションをバックアップするレプリケーションパーティションだ。このように、SPUをまたがる形でデータを互いに複製しあうことで、あるSPU上のHDDに障害が発生しても、ほかのSPUが持つ複製データで置き換えられるようになっている。また、HDD上にはソートやジョインの中間結果やSPU上のメインメモリには大きすぎて入らない集約用の作業領域としてスワップパーティションも用意されている。

NPSアプライアンスのラインアップ。32基のSPUを搭載したハーフラックサイズのNPS 5200(ディスク容量 3TB)から896基のSPUを搭載した超大型のNPS 10800(同100TB)までさまざまなモデルが用意されている

 SPUあたりのメインパーティションは約112GBであり、NPSアプライアンス全体のストレージ容量は、このSPUの台数によって決まる。現在、NPSアプライアンスには、32基のSPUを搭載したハーフラックサイズのNPS 5200(ディスク容量 3TB)から896基のSPUを搭載した超大型のNPS 10800(同100TB)までさまざまなラインアップがある。ディスク容量はオンデマンド方式で販売されるため、SPUの物理的な搭載数ではなく、あくまでも使用するディスク容量に応じたライセンス価格を支払う。当然、SPUが増えればクエリの処理能力も向上するため、蓄積されるデータベースの物理サイズと処理すべきクエリの負荷にあわせて適切なSPU数を選択すればよい。

 なお、オプションでデータ圧縮の機能も用意されている。これは、SPU上にデータベースを圧縮保管するための機能だ。現時点では、DWHで多く用いられる数値系データの圧縮をサポートしている。SPUへの書き込みにはCPUを使用してデータ圧縮を行うが、逆に読み出すときにはFPGAを使用してデータの解凍が行われる。圧縮のアルゴリズムは、FPGAで難なく解凍できるものを独自に開発している。データベースのテーブル構成によって圧縮率は大きく左右されるが、数値系が中心のテーブル構成では4~5倍にまで圧縮が可能だという。同社のスペックシートには圧縮時のストレージ容量も併記されているが、ここではおおむね2倍の圧縮率を想定したストレージ容量が記載されている。

地理空間データの分析を高速化するNetezzaのロケーションインテリジェンス

 Netezzaは、独自のインテリジェント・クエリ・ストリーミング技術を武器とした、次なる展開もすでに着手している。これは、通常のクエリ言語では表現できないような高度な分析をNPSアプライアンスで高速化しようという先進的なアプローチだ。一口に高度な分析といってもさまざまだが、すでに実用化が始まったものとして地理空間データに対する高度な分析機能(ロケーションインテリジェンス)が挙げられる。

 顧客、店舗、支店、道路、病院、各種取引、電話、配達、事故、災害など、企業に関係する人や物、出来事には少なからず位置情報が含まれている。このため、近年ではデータベースの中にこうした地理空間データが組み込まれるケースも増えつつある。既存のデータベースに位置情報を加えて分析することで、企業にさらなる大きな価値が生み出されることは想像に難くない。当然、地理空間データの分析はこれまで以上に複雑なため、ひたすら長時間のクエリ処理に耐え続けるか、データの間引きもしくは対象エリアの絞り込みによって対応するしかない。そこで、NPSアプライアンスが威力を発揮するというわけだ。

 Netezzaのロケーションインテリジェンスは、Netezza Spatialと呼ばれるソフトウェアオプションによって提供される。これは、SPU上で適用されるソフトウェアライブラリの一種で、NPSアプライアンスのSMPホストに組み込むことにより、それぞれのSPUが地理空間データを扱えるエンジンとして振る舞う。Netezza Spatialは、業界標準のOpenGISに準拠し、地理空間データ向けの新しいデータ型(位置や形)とSQL関数をサポートする。2008年9月より米国で販売が開始され、日本でも限定的にリリースされている。


すべての人・物・出来事には位置情報が含まれている。これまでの業務データにこうした位置情報(地理空間データ)を加えて分析することで、さらに価値のある情報が生まれる。特に保険業界、流通業界、通信キャリアやISPなどでは重要といえようNetezza Spatialがサポートする地理空間データのデータ型。基本的には業界標準のOpenGISに準拠したデータ型を実装している。このため、OpenGISに対応したアプリケーションから今まで通りにアクセスが可能だ

OnStream関数を駆使したソフトウェア次第で可能性は無限大

Netezza Spatialと呼ばれるソフトウェアオプションを追加することで、地理空間データの分析もNPSアプライアンス内部で高速に処理が可能になる。通常のクエリ処理と同様にHDDから読み出された流れのままでスピーディーに実行できるのが特徴だ

 Netezza Spatialに代表される拡張機能は、C++でプログラミングが可能なOnStream関数によって実現されている。平たく言えば、エンドユーザーが求めている新たなSQL関数をC++によって作成できるということだ。Netezzaは、OnStream関数の技術的な意見交換を行うコミュニティ「Netezza Developer Network(NDN)」を提供しており、業務に熟練した顧客やビジネスパートナーが、自社のニーズにあった拡張機能を日々開発している。実は、Netezza Spatialのもとになるプログラムも顧客自身が開発したものであり、それをNetezzaの製品として正式に販売するようになったのだ。

 「創業者のJit SaxenaがNetezzaを立ち上げたとき、すべてのデータをいつでもどこでも分析できるようにしたいという目標を掲げました。今回、Netezza Spatialが登場したことで、地理空間データの分析にも対応できるようになり、創業当時の目標に一歩近づいたといえるでしょう。今後、NDNを通じてさらに魅力的な拡張機能が登場します。すでに水面下ではNetezza Spatialに続く拡張オプションの準備も進めているところです。Netezzaはまだ小さな会社ですが、よいものを一緒に作ってくれる優秀なパートナーと手を組むことで、会社の規模以上に大きなことが成し遂げられるはずです。(法華津氏)」

 この連載は、エンタープライズストレージの技術動向を伝えるのが本来の趣旨だが、Netezzaの製品に代表されるように、コンピューティングとストレージシステムの距離は年々近づいているように感じている。ストレージシステムは、もともとデータを安全に保管する『器』としての役割を果たすものだった。そのために、ストレージ仮想化技術やILM(階層型ストレージによるデータ最適配置)など、さまざまな技術が実用化されてきた。

 これに対し、今回取り上げたNetezzaの製品は、蓄積されたデータの分析や活用をストレージシステム自身が支援するという新たな進化の方向性を示している。従来型のソリューションでは、処理性能や拡張性などの面で限界があり、特に大規模データベースの複雑な分析を高速化するのは難しい。そこで、こうした課題に立ち向かうため、ストレージシステム側にデータベース処理を高速化するインテリジェンスが統合された。つまり、単なるデータの器だったストレージシステムに「考える力」を与えたわけだ。今後、ストレージシステムのインテリジェンスに注目しながら、将来の技術動向をさらに探ってみたい。




(伊勢 雅英)

2009/4/24/ 00:00