オラクルが「10倍速い」DB専用機、「10年に一度の変革」と遠藤社長:ITpro.

比較的ひっそりというか、あまり知られないうちにOracle専用機、Oracle Exadataが登場した。かつてぶち上げたRaw Ironの流れだろうが、いつのまにやらひっそりと日の目を見ることなく消えていたと思っていた。まだやっていたのか。

しかし、興味深いことはいくつかある。現実問題どの程度OSが介在しているか分からないが、ストレージサーバーはiSCSIやNFSのような単純なものではないということだ。ITProの記事から引用すると
具体的には、従来はDB側だけで行っていたクエリー関連の処理をストレージ側にも担当させている。ストレージ側で該当するデータを特定、対象となる行列のみをDB側に伝送するものだ。この技術を「SmartScan」と呼んでいる。

これが意味することは、Sequential Scan(Index Scanも、かもしれない)の大部分をストレージ側で肩代わりしていることだ。ストレージ側に直接ブロックレベルのI/Oを要求せず、代わりにもっと高レベルの「スキャン」をさせることでストレージI/Oを軽減しようというのだ。物理ディスクレベルは、かねがうなるほどあるならRAID0+1の超巨大構成とかで、いくらでもスピードを上げられるようになった時代の、次のボトルネック退治である。

なお、このSmartScanが対応しているという処理はホワイトペーパーによると以下のような感じである。

  • 単純なSeq Scan

  • 条件絞り込み(Indexはたぶん効かない)

  • カラム絞り込み

  • ちょっとしたマスタテーブルのJOIN

  • 差分バックアップ(たぶんsnapshot相当の処理がストレージ城のファイルシステムにあると思われる)

  • テーブルスペースの作成(実ディスクのフォーマット処理などがストレージ任せに)


これにIndexとSortが加われば、相当なレベルになるだろう。ただ、現状のOracleがこれに対応するにはIndexとTableの関係を もっと密にする必要がある。また、ソートにはメモリが大量に必要なこととか、ストレージサーバーとDBノードの負荷のかねあいもあるのだろう。

実は、これに似たアプローチが一番良く行われているのはRDBMSのクラスタリングの一種、パラレルクエリ生成型である。こういうのはたいてい自前でプランを生成し、ばらしたSQL文を生成する。このときばらしたSQL文が単純スキャンしかしないようなシンプルなものになれば、たぶん近いレベルのアプローチになるだろう。

個人的には、RDBMSってのは性能二の次で複雑なクエリがかけるというのがより重要になってくると思う。が、なかなかどうして、まだまだデザインで改善できる部分はある。こういう「次世代デザイン」のRDBMSはこれからどんどん登場するのか、それとも衰退するのか?というのはこれまた興味深い。