フラッシュメモリはデータベース勢力図を書き換えるか

db4o2007-07-22

Linuxカーネルプロジェクトに、MTD(Memory Technology Device)というプロジェクトがある。これは何かというと、

a generic Linux subsystem for memory devices, especially Flash devices

だということである。つまりフラッシュメモリ専用のデバイス(ハードウェアにアクセスする仕組み)である。これまでいろいろなメディアが記憶装置としては登場してきた。フロッピーに始まり、懐かしいところではZIP、テープなどの周辺装置と、そしてもちろん忘れてはいけないのがハードディスクである。しかしそれらには専用のデバイスがあっただろうか?なぜフラッシュメモリには専用のデバイスが必要なのか、FAQにその答えはこうある。

Unix traditionally only knew block devices and character devices. Character devices were things like keyboards or mice, that you could read current data from, but couldn't be seek-ed and didn't have a size. Block devices had a fixed size and could be seek-ed. They also happened to be organized in blocks of multiple bytes, usually 512.

Flash doesn't match the description of either block or character devices. They behave similar to block device, but have differences. For example, block devices don't distinguish between write and erase operations. Therefore, a special device type to match flash characteristics was created: MTD.

つまりこれまでは、ブロック型(ハードディスク等記憶装置)かキャラクター型(キーボードなど入出力装置)しかなかったのだが、フラッシュメモリはどちらとも異なるので、MTDを開発することになった、というわけである。この中で最後に出てくる”erase”の例は、フラッシュメモリの特性の一つで、書き換えを行うには、そのデータが属するブロックを一旦削除して、それから上書きする、ということに触れている。これが2つの重要なことを意味していて、1.既存データ上に上書きするには時間がかかる、2.数万から10万回といわれる書き換え寿命を縮める、ことだ。このようにハードウェア特性に考慮した仕組みがないと、うまく性能が引き出されないのが理解いただけると思う。

さらにこの上に乗っかるファイルシステムもサブプロジェクトのような形で進行中であり、LogFSというのが面白そうである。

NAND型フラッシュメモリを搭載した記憶装置をSSDと呼びますが、ここ半年の間に各社がSSD搭載パソコンをリリースしています(写真はSony VAIO TypeU)。ところが、ハードウェアだけフラッシュメモリで、実はそれ以外は古いアーキテクチャ、つまりハードディスクに最適化されたままなのです。例えばファイルシステムは古いまま、NTFSFAT32であり、これはもちろんハードディスクに最適化されています。

さて、となると興味は移り、データベースはどうでしょうか?データベースこそハードディスクに強烈に最適化されている典型的な分野の一つであり、フラッシュメモリが進出してくるケータイからカーナビ、小型ノートパソコンなどのモバイル市場では、今後3年ぐらいで、イノベーションの鍵を握っているともいえるかもしれません。以前取り上げた、「NAND型フラッシュメモリーを巡る動きについて」というエントリーで書いたように、50年の歴史に転機が訪れようとしています。フラッシュメモリに最適化されたデータベースに興味がある方は、そのエントリー内で取り上げている、FlashDBというマイクロソフト研究所の論文が参考になります。

従来性能が出なかったランダムアクセス主体のアプリケーションでは、10倍以上の性能は軽く期待できます。果たしてフラッシュメモリはデータベースの勢力図を書き換えるか、楽しみです。