IBMが「オラクルは簡単には追いつけない」という、DB2の新スケーラビリティ技術
IBMがメインフレームの技術を応用して、DB2のクラスタ構成で高いスケーラビリティを実現するオプション「DB2 pureScale」(正式名称:IBM DB2 pureScale Feature for DB2 9.7 Enterprise Edition)を国内で発表しました。
DB2 pureScaleでは、それまでDB2が採用していた「シェアード・ナッシング・アーキテクチャ」ではなく、オラクルがOracle RACで採用している「シェアードディスク・アーキテクチャ」を用いてスケールアウトを実現します。この点は米国でDB2 pureScaleが発表されたことを報じた10月15日の記事で紹介しました。
今回の国内発表で日本IBMは、競合となるOracle RACに対して性能や耐障害性で比較してDB2 pureScaleが優れていることをはっきりと打ち出しています。
果たして、DB2 pureScaleとはどのような技術であり、何が優れているのでしょうか? 記者向けに行われた発表会の内容や公開された資料を基に紹介します。
カギは高速データ転送とアルゴリズム
DB2 pureScaleは、DB2 9.7に対する追加オプションであり、その実体は、「サーバ(ノード)に装着してノード間のインターコネクトを実現するためのInfinibandカード」と「関連のソフトウェア」から構成されます。
そして、Infinibandとソフトウェアによって実現される次の2つの大きな特徴が、DB2 pureScaleで高いスケーラビリティを実現するカギです。
- Infinibandによるノード間の高速なメモリ共有
- ロック制御やバッファプールマネジメントの高度なアルゴリズム
Infinibandによるノード間の高速なメモリ共有
DB2 pureScaleでは、ノード間の通信にInfinibandを利用します。これにより現在のところDB2 pureScaleが動作するのはIBMのハードウェアである「IBM Power 550 Express」「IBM Power 595」というPowerプロセッサを搭載しAIXをOSとしたサーバのみですが、一方でInfiniband上に実装されたRDMA(Remote Direct Memory Access)機能により、ノード間ではそれぞれのメモリーに対する直接アクセスが可能になります。
そのスピードは「Oracleでも(Exadataで)Infinibandを採用しているようですが、基本的にUDP(TCP/IPの通信プロトコル)を用いて通信するOracle RACよりも、RDMAを使うことで3桁程度速い、ナノセカンドのレベル」(日本IBM ソフトウェアエヴァンジェリスト 中林紀彦氏)で、やりとりが可能になるとのこと。
(追記11月23日:下記の追記にあるようにオラクルもRDMAを使っていたため、上記のコメントの一部訂正の申し出がありました)
RDMAコールは非常に高速で、DB2プロセスはRDMAコールからのレスポンスを待つあいだCPUを明け渡す必要もなく、タスク完了までリスケジュールの必要もありません(IBMの資料から)。
そしてこのノード間の高速な通信を実現した結果、「他社製クラスタでは、ノードが追加されたときにはノード間のやりとりが増えすぎないように、ノードごとにパーティションを割り振るようなチューニングが、DB2 pureScaleではほとんど不要」(中林氏)との発言もありました。
(追記:コメント欄でいただいたとおり、日本オラクルの方から「Oracle RACはInfinibandのRDMAに対応しており、ExadataはRDMAを使っています」とのご指摘をいただきました。ただしPublickeyが調べた範囲では同じRDMAという名称でも両者の実装や方式が違う可能性があります)
(さらに追記11月23日:DB2 pureScale、Oracle RACともRDMAを用いていますが、その実装が異なります。IBMからの情報によると、DB2 pureScaleはuDAPL (User Direct Access Programming Libraryを用いています。オラクルは資料によるとRDS(Reliable Datagram Sockets)をベースにしたZDP Zero-loss Zero-copy Datagram(ZDP)を用いています)。
ロック制御やバッファプールマネジメントの高度なアルゴリズム
DB2 pureScaleの分散ノード間で行われるロック制御やバッファプールマネジメントのアルゴリズムがどのようになっているかは、この記事で紹介できる範囲を超えていますが、IBMの資料によると、クラスタ内のあるノードに障害が発生して停止しても、他のノードはトランザクションやI/O処理を続けることができ、アプリケーションにはエラーを返すことなく稼働中のノードに即時にワークロードを再分配して回復するとのこと。IBMの資料には「サーバー障害時にも他社DBのように一時的なI/Oブロックが発生しない」とあります。
また、あるノードが他ノードのデータを読み込んだり、他ノードのデータを更新する処理なども効率的かつRDMAで高速に行え、32ノードで95%のスケーラビリティ、64ノードでも91%のスケーラビリティを実現。その結果、耐障害性やスケーラビリティに優れると主張しています。
これらの技術はIBMのメインフレームから培われたもので「オラクルもUDPをRDMAにすれば同様の実装が可能では?」との質問に、「高度なアルゴリズムなどがあり、オラクルは簡単には追いつけないのではないか」(中林氏)と、その技術に自信を示しています。
ちなみにIBMは、Infinibandとソフトウェアによるサーバ間のメモリ共有技術からなるDB2 pureScaleのコア技術を「カップリングファシリティ(CF)」と呼んでいます。これとOracle RACのサーバ間キャッシュ共有技術である「キャッシュフュージョン(CF)」の略称が重なるのは、不思議な偶然というべきなのでしょうか。