データベースの圧縮機能が強化、大規模データを極めて効率的に扱えるように
2012年4月10日、IBM DB2の最新版DB2 10の発表が行われた。セキュリティと大量データへの対応を強化したバージョンとのこと。この大量データに対応というのは、当然ながらビッグデータ時代のデータベースとして進化したバージョンということ。ビッグデータ用の機能の1つが、圧縮機能「アダプティブ圧縮」だ。圧縮で、増え続けるデータを効率的に管理する。DB2には、DB2 9.1から圧縮機能が搭載されすでに実績のあるものだ。バージョンがアップするたびに拡張がなされ、進化している機能の1つ。
そして、V9.7まではテーブル単位の辞書を使った圧縮機能だったが、今回のDB2 10からはテーブルに加えページ単位の辞書も使えるようになっている。この2つの辞書を利用することで、V9.7のものより圧縮率が大きく向上しているとのこと。DB2 9.7以前からDB2 9.7になった際にも2.5倍ほどの圧縮率の向上がなされていたが、DB2 10では従来の6.5倍もの圧縮率を誇っている。圧縮の対象となるデータはXMLでもLOBデータでも圧縮可能だ。さらに、索引も圧縮できる。
圧縮というとどうしても伸張するのにCPUリソースを消費し、それがオーバーヘッドとなり処理能力が低下するのではとの懸念も出てくる。DB2の圧縮機能はCPUリソースの消費はほんの数%しかなくその負荷よりも「ディスクI/Oにかかる時間のほうがはるかに大きくなります」と日本アイ・ビー・エム株式会社 ソフトウェア事業 インフォメーション・マネジメント事業部 マーケティング・マネージャーの中林紀彦氏。むしろ、データサイズが小さくなる分、データの転送量が減るというメリットのほうが大きく、性能の向上につながるとのこと。そのため「基本的には、すべて圧縮するという設定で問題ないと思います」と中林氏は言う。
三菱総研DCSのバックアップ事例
また、データベースの中のデータを圧縮する以外にも、バックアップ時のデータを圧縮することが可能だ。三菱総研DCS株式会社の事例では、当初は一度フルバックアップをとり、その後は差分バックアップをとる方針だった。それがDB2のバックアップの圧縮を利用したところ、70から80%の圧縮効率を発揮。圧縮効果が大きかったことで「毎日フルバックアップがとれるようになった」のだ。リカバリーの容易さを考慮してもフルバックアップのほうが差分バックアップよりも復旧ははるかに迅速に行える。バックアップの圧縮もまた、積極的に利用すべき機能と言えるだろう。
Multi-Temperature Storageによるデータ管理機能
この他にも大量データを効率的に扱う機能としては、Multi-Temperature Storageによるデータ管理機能がある。これは、高速なSSD、それよりは性能は劣るが高速なハードディスクのSASドライブ、安価で大量導入が容易なSATAドライブ、さらにはアーカイブ用のストレージといった性能の異なるドライブ群を1つのストレージプールとして、アクセス頻度の高いデータは高速なドライブに、そうでないものは適宜必要な性能のドライブに振り分けて配置することでパフォーマンスの改善とコスト削減を両立する機能だ。アプリケーションからは、どのストレージにデータがあるかを意識する必要はなく、OSがサポートしているストレージであればどのような製品でもこの機能を利用可能だ。
過去だけでなく未来のデータも登録できる
今回のDB2 10で、かなりユニークな機能が追加されている。それが「タイム・トラベル照会」という機能だ。データベースの検索では、基本的に今の時点のデータが「何か」しか分からない。これが、タイム・トラベル照会機能を使うと、過去の時点にデータの値が何であったかを検索できるのだ。この機能を利用することで、過去のデータと今を比較するといったデータ分析が容易に実現できるようになる。
また、タイム・トラベル照会はさらに、未来に対するデータの指定も可能となっている。過去に遡れる機能を持つデータベースは他にもあるけれど、未来のデータを扱えるのは珍しい。これ、具体的には、未来に変更されることが分かっているデータをデータベースにあらかじめ登録しておけるというもの。たとえば、Web上にある商品の価格を掲載するプログラムがあるとする。その場合、データベースの商品価格のデータを検索し、結果を表示すればいい。
価格がずっと変わらなければ、なんらプログラムを変更する必要はない。ところが、マーケティングキャンペーンなどで価格が変わる場合は、価格を変更するプログラムを作るなりして、キャンペーン期間になったならばデータベースの値を変更し、さらに期間が終了したらもとに戻す作業が必要になる。場合によっては、表示プログラムのほうを変更し、キャンペーン期間中は別テーブルを参照するようにするかもしれない。
タイム・トラベル照会の機能を使えば、キャンペーン価格をテーブルに入れておき、キャンペーンの期間を設定しておけば、期日が来れば自動的にキャンペーン価格が参照される。当然ながら、期間が終了すればもとの価格が参照されるようになるのだ。その際にも、表示するためのプログラムには一切変更をする必要はない。特定の期間だけ、データを頻繁に変更するような仕組みが必要な場合は、データベース側だけでそれに対応できるので、かなり便利に利用できる機能と言えるだろう。
DB2らしさの象徴、DB2 pureScaleも大幅に機能強化
さらに、中林氏が自信を持ってお勧めできる機能だと言うのが、データベースサーバーのクラスタリングを行うDB2 pureScaleだ。このpureScaleは、DB2 9.7 Enterprise Server Editionのオプション機能として登場し、システムが「止まらない、止めない」高度な可用性と、ノードを増やせば増やした分だけの拡張性が得られるエンタープライズ用途では欠かせない仕組みだ。pureScaleは、アーキテクチャ的にはストレージを共有するシェアードディスク型のクラスタリングだ。シェアードディスク型では、ノードを増やすとノード間で整合性をとるための情報のやりとりが大量に発生し、それがボトルネックとなりノード数に応じたスケーラビリティの確保がなかなか得られないのが普通だ。
pureScaleではこのノード間通信部分の負荷を最小限にするために、独自のロックとキャッシュの集中管理を行う仕組みを持っており、ノードを増やした分だけリニアに拡張するという特長を持っている。pureScaleを導入し活用している三菱東京UFJ銀行では「pureScaleによる2ノードから4ノードまでの検証を実機で行い、リニアにスケールすることを実証できました」と言っている。そして、以前であればあらかじめ5年後のシステム要求を見込んだハードウェアリソースの先行投資を行うところを、リニアに性能向上が得られるpureScaleの拡張性により「1年後を見越した投資で十分対応できます。これにより4年分の先行投資が不要になり、運用管理コスト、保守料なども低減できました」と、その効果の大きさを説明している。
このようにpureScaleは、拡張性と可用性が両立する機能として登場したが、DB2 9.7まではさまざまな制約があったのも事実。DB2 10では、それら制限部分がなくなり、性能、可用性の大幅な強化がなされると同時に、より適用の範囲の広がりも見せている。たとえば、DB2 9.7までは、pureScaleで扱えるデータベースは1つだけだったが、DB2 10では複数データベースをサポートした。これにより、マルチテナントのクラウドサービスのようなものでもpureScaleの上で容易に構築できるようになったのだ。またレンジ・パーティショニングも新たにサポートされ、大量なデータに対しても効率的なアクセスが可能となり性能面での向上も大きく図られている。
また、ノード間通信には超高速なインフィニバンドだけでなく、10Gigabit Ethernetも新たにサポートされた。これにより、より柔軟なハードウェア選択が可能となりコスト効率のいい構成が可能となっている。さらにワークロード管理機能も提供され、バックアップとリストアオプションも加わり、管理面でも機能が充実し容易な運用が行える環境も整った。pureScaleは新しい機能ではあるが、その背景にはIBMがメインフレームのデータベースで長年にわたり培ってきた深い技術がある。そのような技術の蓄積の上に、IBMが自信を持って提供しているのがpureScaleだとも言える。
DB2 10では、災害対策などで利用できるHADR機能で複数スレーブサーバーに対応、行および列に対するアクセス制御機能など、この他にも数多くの機能強化がなされている。かつては、ライバルであるOracleデータベースに追いつけ、追い越せで、機能、性能が強化されてきた印象もあったが、今回のDB2 10ではDB2ならではの機能、性能の強化が数多くなされており、この機能が使いたい、この性能が欲しいからこそDB2を選択するという道筋が、明確に示されるようになったバージョンアップとなっている。