今回、ODBMS.ORG の編集長である Roberto V. Zicari 氏は、「MySQL と MariaDB を TB クラスに拡張し、なおかつパフォーマンスを向上させることは可能」かどうか、Tokutek の共同創設者兼 CTO の Martin Farach-Colton 氏にインタビューを行った。

Martin Farach-Colton 氏は、Google の初期の社員で、Web Crawl のパフォーマンス改善に取り組み、また AdSense システムのプロトタイプを開発した。アルゴリズムや情報検索の専門家であり、Rutgers 大学コンピュータサイエンス学科の教授でもある。

【ODBMS の DB 業界ウオッチ】MySQL/MariaDB の TB 拡張は可能か―Tokutek CTO の Martin Farach-Colton 氏に聞く
Tokutek トップページ

Q1:TokuDB とは何か。

TokuDB は、フラクタルツリーインデックスを使う、MySQL と MariaDB 用のストレージエンジンだ。MySQL と MariaDB を GB から TB に拡張し、クエリ―パフォーマンス、圧縮率を改善し、柔軟なオンラインスキームを提供する。MySQL アプリケーション、あるいはコードを変更する必要はない。TokuDB は ACID と MVCC に完全に準拠している。

私は、ひとつでどれにでも合うフリーサイズがいちばんいいと思うが、RDBMS はもはや現代のワークロードに追い付くことはできない、という主張があちこちから聞こえてくる。大規模システムでのパフォーマンスについて語られる場合、心配の大本はしばしば、内在する B-tree インデックスのパフォーマンスだ。

これはもっともなことだ。なぜなら、ビッグデータをインデックスしているほとんどのシステムは B-tree ともそうしているからだ。B-tree は40年以上も前に発明され、以来、ハードウェアのトレンドと闘っている。

たとえば、ある人々は OLAP ワークロードを持っており、他の人々は OLTP ワークロードを持っているが、B-tree のパフォーマンスプロファイルによって、たいていのユーザーは分析かライブ更新かの選択を強制されるが、彼らの実際的な事例には、両方の長所が必要だ、と思う。B-tree は妥協を強要するが、それはデータベースの世界に内在しているものだ。

Fractal Tree Index は B-tree インデックスにとって代わるもので、いわゆる Cache-Oblivious Analysis についての私の学術的な研究に基づいている。その研究は、Tokutek 共同創設者の Michael Bender、Bradley Kuszmaul と取り組んでいるものだ。

Fractal Tree Index はクエリ―パフォーマンスをあきらめずに、インデックス速度をあげる(つまり、最適化された書き込みだ)。クエリ―速度を上げる一番いい方法は、インデックスのセットを正しく定義づけることだ。Fractal Tree Index ではそれができるようになる。

既存技術は、B-tree クエリ―/インデックスのトレードオフ曲線部分を主張したが、Fractal Tree Index では、交替曲線はより高パフォーマンスだ。クエリ―に最適な書き込みに最適化されたインデックス付けで、汎用データベースはより速くなる。顧客のワークロードのあるものにとっては、それは桁違いに速くなる。

Q2:「挿入/クエリ―速度、圧縮、レプリケーション性能、オンラインスキーマの柔軟性を向上させると同時に、MySQL を GB 級から TB 級に拡張することができる」、というあなたは主張するが、どのように行うのか。

Fractal Tree Index では、挿入、削除、更新、スキーマ変更などのすべての変更は、ツリーに注ぎ込まれるメッセージだ。これらのメッセージがルートに注ぎ込まれ、葉に届く前に数回移動するかもしれないとしても、すべてのクエリ―は関連メッセージのすべてを目にする。このようにして、メッセージは速く注入され、クエリ―はメッセージの効用、すなわち、フィールドの変更、あるいはカラムの追加などを即座に反映する。

インデックス付けを速くするために、われわれは、ディスクへの各 I/O が多くの作業を行うようにする。たとえば、メモリーの最速部分へのアクセスが部屋を横切る程度だとすれば、ディスクから何かを受け取るのは、ニューヨークからセントルイスまで歩くようなものだ。ドイツであれば、ベルリンからローマまで歩くことに似ている(ドイツ自身はこの規模のディスク I/O を保持できるほど十分大きくない)。

Fractal Tree Index がどのように働くかを見るには、まず B-tree について考えればいい。B-tree は各アイテムが到着すると、それをその最終目的地に配達する。あたかも、Amazon が本を1冊トラックに積んであなたの自宅に届けるようなものだ。Fractal Tree Index はバッファーのセット(地域の倉庫を思い浮かべるといい)を管理して、トラックが動く時はいつでも、トラックは役に立つ情報でいっぱいになっているのだ。

その結果は、挿入速度は劇的に高くなる。クエリー速度は、より多いインデックスが保持されているので、より高くなる。そして圧縮は、より大きい塊でデータの読み込み/書き込みができるので、より高くなる。

TokuDB 用 Fractal Tree インデックス付の概要

インタビュー記事の全文はこちら