谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

ストレージはSSDではなくRAMディスクにシフトしていくと思う

こうやって、ストレージが非常に速くアクセスできるようになると、ファイルシステムという概念も変わるかもしれない。

いまはアプリケーションにストレージを割り当てるのは、ファイルという単位なのだけど、SSDが使えるのであれば、わざわざファイルという形でストレージに保存する必要はないと思う。もう、SSDの領域にメモリアドレスを割り当てて直接アクセスしちゃえばいい。

Windowsでメモリマップドファイルというファイルをメモリとして扱えるようにするAPIがあるけど、SSDなんてもともとメモリなんだから、いちいちファイルシステムのファイルという形を経由しなくて、そのままメモリをメモリとして扱えばいい。

ハードディスクもオンボードになるのかな?そうするとプログラムモデルも変わる。 -- きしだのはてな

この概念を聞いた時、真っ先に思い出したのが、InfoQの↓の記事。

メモリが新たなるディスクだ!ディスクスピードの成長が遅く、メモリチップの容量の成長が飛躍的であるとインメモリのソフトウェアアーキテクチャは全ての種類のデータインテンシブアプリケーションのパフォーマンスに桁違いの向上をもたらす可能性がある。テラバイトかそれ以上の小さな(IU、2U)ラックマウントのサーバがまもなく入手可能になり、サーバアーキテクチャ内のディスクとメモリのバランスに対する私たちの考え方を変える事だろう。またディスクは新たなるテープとなりランダムアクセス用のツール(とても遅い)としてというよりもむしろシーケンシャルストレッジのツールとして同様に使用されるだろう。(ディスクからのストリームは適度に速い)既存の製品に比べて10から100倍向上した新たな製品を作る機会はそこらじゅうに転がっているのだ。

RAMが新たなるディスクとなる... -- InfoQ Japan


さて、きしださんの書いている

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

RDBMSの時代の終わりが見えてきた -- きしだのはてな

ですが、この感覚に該当するのは、SSDよりRAMディスクに近いと感じます。
SSDがメモリに近いと言っても、それは別段、HDDと構造的に変わるわけではなく、
プログラムから見たSSDとHDDの根本的な違いは、アクセススピードのみ。


アクセススピードについて言えば、
現時点でRAMディスクはSSDに比べて数10〜数100倍ぐらい高速であり、
HDDとSSDの差よりもずっと大きい。


きしださんの書いている「SSD」を「RAMディスク」に読み替えさえすれば
その予測はアルのかな、と思いました。


で、JPAの話ですが、
JPAって結局、インメモリDBが当然になってきた時に、活きるんですよね。
むしろ、それを見越して仕様化していたんでしょ? 背景は全然知りませんけど。


ほら、TimesTenとかって「10倍」って名前の割りに、実際100倍ぐらい早いから、
そんぐらいだったらJPAでうっかりSQL10000回ぐらい吐いても俺許すよ、的な。


ただ、インメモリDBみたいに、メインメモリの中にDBMSがあったら
どこにデータソース本体があるか分からない(よね?)だろうから、
ストレージ(ドライブ)として切り出したRAMディスク上にDBMSを構築するか、
RAMディスク上にバックアップを作ることになると思います。
(その仕組みの中では、SSDはただのバックアップメディアという位置づけでしょう)


それぐらいが、妥当な予測じゃないでしょうか。


そんな時代になれば、
僕はきっと、JPA的な何か(オブジェクトに対してクエリを発行できる何か)を使います。


いまはそんな時代じゃないから、SQLを使います。