ひがやすを技術ブログ

電通国際情報サービスのプログラマ

「RDBMSの時代の終わりが見えてきた」についてそろそろ一言言っておくか

2008-12-12


いくつか誤解を生みそうな表現があるので、それをまずは指摘しましょう。

プログラムモデルとしては、すでにRDBMSからの脱却の準備は始まっています。ORマッピングがそれです。

これが、意図的かはわからないけど、ミスリードを生んでいます。「RDBMSの時代の終わりが見えてきた」というタイトルで、こういう書き方をすると、「ORマッピングによって、すでにRDBMSからの脱却の準備は始まっている」という風に読めるでしょう。これが、ミスリード

JPAが大切だと思っているのは、永続パラダイムの転換に、コーディングを変えることなく対応できるからです。もちろんJPA+RDBMSのシステムをJPA+非RDBMSに切り替えれるという話ではなく、プログラマのコードの書き方の対応の話です。

これをもう少し、噛み砕くと、JPAのJPQL(SQLもどき)を使えば、SQLとしては統一されていない複数のRDBMSに、同一のJPQLでアクセスできるということです。
RDBMSの終わりが見えてきたということではなく、個別のRDBMS依存の終わりが見えてきたということです。

RDBMSこそレガシー、SQL書きこそコボラーになる

という書き方から、SQLがレガシーになるという主張だと思いますが、ここは、先ほどのJPAを押していた文脈からすると、矛盾してます。
JPAは、SQLを隠蔽するものではなく、「SQLを統一的に効率良く書けるようにするもの」だからです。Gavin(Hibernatefounder)はいってました「HibernateSQLを隠蔽するものではない。SQLを統一的に効率良く書けるようにするものだ。だから、SQLの知識はちゃんと持っていなければならない」と。


JPAによって、SQLがレガシーになっていくというのは、違っているといえるでしょう。SQLは、JPAを使う上でも重要なのです。
JPA(JPQL)は、SQLを統一的に効率良く書けるようにするもの」です。大事なことなので二度言っておきますよ。

Webアプリケーションの場合、JOINなどSQLのもっている高度な表結合があまり必要なかったりします。逆に、SQLの検索では使い物にならず、自力で逆引きインデックスを持ったりして検索の仕組みを作ることも多いかもしれません。

Webアプリケーションは、昔で言うWeb2.0的な「シンプルだけど多くの人に使われる」ようなアプリケーションとそれ以外に分けて考える必要があります。
昔で言うWeb2.0的なアプリケーションは、確かに表結合など入らないかもしれません。クラウド系が似合うアプリケーションです。
でも、Web2.0的じゃないアプリケーションがそうでないことは、誰が考えても明らかでしょう。


まとめると、Web2.0的なアプリケーションでは確かにRDBMSは使われなくなる傾向があると思う。でも、Web2.0的じゃないアプリケーションで、RDBMSが使われなくなるというのは、あまり根拠がない(うすい)ということです。


以降は、話半分で聞いてください。私は、クラウドは、バズワードで終わると思っています。理由は、丸山先生が興味を持っているから。
かつて、Grid、SOA、JBIをはじめ、丸山先生がいいと持っているやつは、結局はやらないんだよね。根拠としては、かなりいい加減だけど、統計的には、そこそこの精度(最終的にはやった実績はゼロ)です。
一応このいいかげんな予想は、丸山先生にblogで書いてもいいよというOKをもらってます。ちなみに、同じ理由で、Androidも厳しいんじゃないかと思っています。


追記:id:kazuhookuの適切な突っ込みに笑った。


Java は結局はやらないのですね。わかりますww
< 「丸山先生がいいと持っているやつは、結局はやらない」
みんな、逆だよ。逆に考えよう。最近、丸山先生がJava(特にエンタープライズ系)には興味を失っているのがチャンスだと。