BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース TokutekがTokuDBとTokuMXの新バージョンをリリース

TokutekがTokuDBとTokuMXの新バージョンをリリース

ブックマーク

原文(投稿日:2014/10/31)へのリンク

Tokutekがストレージエンジンの最新バージョンを発表した。バージョン7.5になったTokuDB for MySQLには,大幅にパフォーマンスを向上する2つの機能が含まれている。TokuMX for MongoDBはバージョン2.0となり,独自のパフォーマンス向上を含む,さまざまな新機能が含まれている。

以前のバージョンでは,単純検索のための行のバルクフェッチがサポートされていた。TokutekのエンジニアであるRich Prohaska氏はその理由について,次のように説明している

MySQLでは,TokuDB(あるいは他のストレージエンジン)から一度にひとつの行をフェッチするハンドラAPIを使用しています。ですがフラクタルツリー検索では,ツリーの前後の行を取得するために毎回ハンドラをコールしていたのでは,処理が重過ぎるのです。TokuDBでは,ハンドラ内でバルクフェッチバッファを使用して,毎回のフラクタルツリー検索の結果をここに格納します。MySQLが前後の行のTokuDBハンドラをコールしたとき,バルクフェッチバッファが空でなければ,バッファから行を取り出してMySQLに返します。そうでなければ,複数行を取得するフラクタルツリー検索を行ってバッファを再度満たすのです。

TokuDB 7.5ではこの機能がさらに複雑な,例えば "INSERT [IGNORE] INTO … SELECT", "INSERT INTO … ON DUPLICATE KEY UPDATE", "REPLACE INTO … SELECT",あるいは "CREATE TABLE … SELECT"などのSELECT文にも適用されるように拡張された。

このバルクフェッチの改良に加えて,TokuDB 7.5では,リードフリー・レプリケーションを実行する機能も導入され た。この機能についてProhaska氏は,次のように説明している

行ベースのレプリケーションを使用する場合,書き込みや削除,更新操作のために,行イメージがバイナリログに記録されます。スレーブがそのバイナリログの行イメージを利用すれば,テーブルからの行の読み込みを回避することができます。このようなリードフリー・レプリケーションのデザインによって,スレーブ上のI/Oロードを大幅に軽減することが可能になるのです。

Tokutekではベンチマークの結果から,リードフリー・レプリケーションを使うことで20倍の性能改善が実現すると主張しながらも,この機能を有効にするためには,最初に満たす必要のある条件がいくつかあることを警告している。

TokuMX 2.0にも,歓迎に値する独自の改良点がある。まず最初に挙げられるのは,レプリケーションでのArkコンセンサスアルゴリズムの使用だ。Arkアルゴリズムは,デフォルトのMongoDBアルゴリズムよりも優れたレプリケーション保証を提供するために,Tokutekが開発したもので,具体的には,過半数の書き込み合意(Write Concert)で認められた書き込みが,その後のフェイルオーバによってロールバックされることがないことを保証するものだ。

Ark以外にも,TokuMX 2.0には2つの重要な機能が追加されている。ひとつは,パーティション化コレクション(Partitioned Collection)にシェーディングサポートが追加されたことだ。パーティション化コレクションは,範囲内のデータを効率的に削除可能にするもので,時系列データのエージング時には特に重要な機能である。もうひとつとして,MongoDB 2.4の地理空間インデックスとクエリ機能がサポートされるようになった。

最後に,TokuMX 2.0には,Tokutekが10倍の性能向上が可能だと主張する,高速アップデートのサポートが加わっている。以前のバージョンでのアップデートは,既存ドキュメントの読み込みを実行した上で,関連するインデックスの変更を行っていた。高速アップデートでは,アップデートによってインデックスフィールドが変更されない場合には,最初のクエリを完全に回避することが可能になる。

TokuDBとTokuMXはいずれも,Tokutekのフラクタルツリーインデックス技術に基づいている。TokuDBはGPLv2ライセンス,TokuMXはAPGLライセンスの下で,それぞれ使用することができる。

この記事に星をつける

おすすめ度
スタイル

BT