PrimeBase XTストレージエンジン

PrimeBaseというDBMSベンダがMySQL 5.1/5.2向けのpluggable storage engineを開発したようです。

(以下、PBXTと略します)

機能概要はWhitePaperがあるのでそれを見るとよい鴨。

流し読みした限りでは、

  1. ACID対応
  2. 追加更新がメインのシステム向き

通常、トランザクション対応のエンジンはREDOログとデータファイルの2つのファイルを持つことから、理論的には1回の更新で合計2回の書き込みIOが発生します。PBXTでは、この考え方で言うところのデータファイルを持たず、REDOログのようなもののみにデータを持ちます。単純にファイルの末尾に足していくだけなので、書き込みIOの量が通常のRDBMSと比べて少なく、またランダムアクセス書き込みが発生しないため、IO効率が非常に良さそうです。

UPDATEが発生した際にどうするかというと、既存のレコードを上書きや削除するのではなく、そのままファイルの末尾に新しい更新データを使って追記するだけとのことです。UPDATEがINSERT風に処理される、というのはPostgreSQLに近いイメージでしょうか。そうすると更新+Commitによって不要となった領域=ゴミが発生するわけですが、これは低優先度で動かすバックグラウンドプロセスがGC処理をするとのことです。

向き不向きでいうと、VACHARやTEXT、BLOBのような可変長データの書き込みの比率が非常に高いアプリに向いているとのことです。

(説明ここまで、以下感想)

まあ、アイデア/アプローチとしては結構面白いと思います。MVCC対応のようですし、更新Heavyなアプリなら、標準的なエンジンよりも高いスループットがだせそうな気がします。

PBXTはソースが公開されているようなので、Pluggable Storage Engineを書く際の参考にもなる鴨。