なぜ「HP Vertica」は普通のRDBMSより1000倍速いのか
HP Verticaは、データ分析用途に特化したDBソフトウェアだ。開発元であったVerticaを、HPが2011年に買収。翌年には統合を完了して、同社のビッグデータソリューションの一部とした。
Verticaの開発者は、「Ingres」や「Illustra」といった著名なDBの生みの親の一人として知られるMichael Stonebraker氏である。同氏らは、従来の一般的なRDBMSとは異なるコンセプトに基づいて、大規模データの高速な分析処理に特化したオープンソースのDBシステム「C-Store」を開発。このC-Storeを商用化するために、2005年に設立したのが「Vertica」だった。HPによる日本国内でのVerticaの提供は2012年から本格的にスタートしたが、ワールドワイドでは既に3000社以上で導入されている、実績のある製品である。
「大規模データの高速な分析処理」は、Verticaの最大の特長である。それを可能にしている技術的なポイントは、Verticaが「列指向」のDBシステムであることだ。従来のRDBMSは、一般的にデータのまとまりを「行」の単位で扱うことに最適化されている。「行」単位でデータを扱うDBは、取引ごとにデータを格納したり、呼び出したりするようなトランザクション処理には向いている。しかし「集計」や「分析」といった処理を行いたい場合には、行全体を読み込んだ上で、その中から必要な列のデータのみを総当たりで抜き出すという操作を行う必要があり、特にディスクの読み書きで大きなオーバーヘッドが発生してしまう。Verticaのような「列指向」のDBは、集計や検索を行う際に、データの中から必要な列のみをディスクから読み込むといった操作が可能であり、これにより分析処理の大幅な高速化を可能としている。HPによれば、データ検索については、従来の行指向RDBMSに比べて、50~1000倍の高速化が可能だとしている。
もうひとつのポイントは、柔軟な拡張性だ。一般的なDWHアプライアンスは、分析処理の高速化を目的にハードウェアとソフトウェアを独自のアーキテクチャに基づいてパッケージングしている。そのため、高いパフォーマンスは得られるものの、全体でのコストも高くなりがちである。Verticaは一般的なx86アーキテクチャ上のOSで動くソフトウェアとして提供される。そのため、必要なパフォーマンスに応じて、リーズナブルなx86サーバを用意し、その上にインストールすることで環境を構築できる。さらに、VerticaはMPP(Massively Parallel Processing)アーキテクチャに対応しており、将来的により高いパフォーマンスが必要になった際には、標準的なx86サーバをクラスタに追加していくことで容易なスケールアウトを可能にしている。導入や将来的なパフォーマンスアップにかかるコストをより抑えることができるというわけだ。
そのほかにも、データの属性に応じた「データ圧縮」技術によって、ストレージ容量の削減やパフォーマンスの向上が可能なほか、対話形式のデザインツール(Database Designer)によって容易にデータ配置の最適化が行えるなど、Verticaには多くのポイントがある。
また、近年ビッグデータの分散処理フレームワークとして普及しているHadoopとの連携機能も用意されている。Hadoop上のデータをVerticaに高速にロードしたり、Hiveで作成したスキーマの参照や検索をVerticaから直接行ったりといったことが可能だ。Verticaは、SQL、ODBC、JDBCに準拠したドライバに対応しており、既存のBIツールやETLツールをそのまま利用できる。さらに、統計分析言語として注目を集めている「R」のアルゴリズム実行にも対応している。
「数テラバイト規模のデータを高速処理してビジネスに生かせる環境を、将来的な拡張も視野に入れつつリーズナブルに構築したい」というニーズを実現するにあたって、Verticaは有力な選択肢となるはずだ。