オブジェクトファイルシステム

db4o2007-08-29

果たして突っ込むべきか、突っ込まないべきか、考えることがよくあるわけで、というのも、私は言ってみればセールス(よく言えばアントレプレナー)、技術者じゃありません。基本的には、納得のいく答えが見つからない場合は行ってみることにしているけれども、今回は一段レベルが違いそうで、しばらく迷っている。

そんな中、とりあえずamazon.comのレビューで好評だったEmbedded Linux Primerが今日届いた。MTDなどメモリデバイス周辺について詳しく知りたかったので、これはちょうどいいのではと期待している。

日本のトップレベルの組込み開発現場では、ファイルシステムさえ冗長だと、ファイルシステムをバイパスしたり独自のファイルシステムを作ったりしている。私のメインターゲットはRYO(Roll Your Own: データベース自作)ユーザーだが、まさかそこまでとは想像していなかった。このような、いわゆる想定外の事実には無性に興味を惹かれるので、ここんとこをもっとよく知りたくてしょうがなくなってきたのだが、いかんせんファイルシステム以下のレベルは行き過ぎかなと思ったりするわけです。

それで、今回どうなんだろうと思っているのは、言ってみればオブジェクトファイルシステム。通常のファイルシステムとデータベースとは重要なローレベル機能が結構かぶっている。言ってみれば、ファイルシステムが管理するファイル内にファイルシステムがあるようなものに見えるわけです。例えばLinuxのMTDのサブプロジェクト、フラッシュメモリファイルシステムであるLogFSは、電源断時にデータを失わないように、update out-of-place、つまり更新時には別ページに書き込んでいる。db4o自体も同じアーキテクチャなので、1つのデータが同時に4つ冗長されるのかと思うと、頭が痛い。また、db4oではFreespaceManagerと呼んでいる、空きページ管理の仕組みも、同じものがファイルシステムとデータベースにあることになる。この2つは性能に大きな影響を与える部分なので、ファイルシステムレベルで処理できればかなり大きな性能向上が期待できる。そんなことを考えていると、ファイルシステム自体が基本的なオブジェクトを格納する、オブジェクトファイルシステムであったらいいじゃないかと思うわけです。オブジェクトファイルシステムの1つの形が通常のファイルシステム、という逆転の発想で。

今週中にこの本でも読みながら、もう少し迷ってみるか・・・。