SSD とストレージの将来

SQL に痛痒感を感じる日々を過ごしている身としては、RDBMS がレガシーだというのは、まったく同感ですが。

SSDを前提にしたプログラムモデルになれば、そもそもシーク時間と戦うこともなく、ストレージを意識せずにプログラムが組めます。そうなったとき、アプリケーションのデータを永続化するためにRDBMSをわざわざ使うことはないでしょう。

2008-12-12

そんなことないと思います。理由は以下の2点。

フラッシュメモリランダムリードできますが、DRAM のようにランダムライトできるわけではありません。書き込みが非常に遅いのに加えて書き換え回数の制限もあるので、メインメモリと同様のプログラム手法を使うのは難しいと思います。

次にトランザクションについてですが、組み込み型データベースとして SQLite が普及した理由のひとつは、データが壊れないことが保証されている、という点にあると思います。そして、(一定以上の規模のデータセットの) トランザクションをサポートするためには、それを意識したコードを書かざるを得ない (あるいはそういう機能をもったモジュール=DBMS に頼ることになる) と思います。

もちろん程度問題ではあるのですが、そんなに甘くないんじゃないか、というのが私見です。

また、

RDBMSが最初に消えるのは、ローエンドの、SQLiteやDerbyなどが使われている分野だと思います。

という点ですが、むしろ RDBMS は (そのオーバーヘッドやスケーラビリティが問題になることが多い) サーバサイドから消えて行くのではないかと思っています *1。一方で、クライアントサイドの計算資源は比較的余裕があるので、RDBMS による開発コストの低下のほうがオーバーヘッドよりも重要のはず。クエリ言語が SQL かどうかは別として、クライアントサイドでは高度なストレージエンジンに依存する傾向は高まり続けると思います。

*1:現に相対的な重要性は薄れつつあるし