RDBMSの終わりとかについて

本人が大まじめなので少し補足説明。

まず、 id:nowokay はコメントで書かれているような、Javaしか書けないとかSQLが書けないとかDBの知識がどうのというような、脊髄反射でDISられるようなレベルではない。寝坊についてはDISられても仕方がない。

自分が理解している、きしだ理論は以下のよう。

前提:

  • JPAは永続化実装に依存しない永続化APIである
  • SQL(RDBMS) < JPA+JPQL
    • 実現したい機能が満たせる前提で、永続化実装に依存しないという意味で。もちろんこの時点でアプリケーション側はJPA(Java)に依存。
  • 話題のターゲットは、参照が多く、REST的なURLにマップできるくらいの複雑さを持つWebアプリ
    • RDBでしか実績が豊富にないような複雑な業務アプリはRDBのままでかまわない。

である時に、JPARDBに依存しないような考え方でプログラムを作っておけば、(理論的には)以下のようにスケールさせることができる。

  • 小規模(個人レベル):
  • 大規模(数台〜数十台レベル):
    • memcachedのような高速な分散ハッシュキャッシュがサポートされたJPA実装を使う。(ぼちぼち出始めた。まだ実績は少ない。)
  • 超大規模(数百台以上):
    • クラウド製品によるJPA実装。ここまでくると速さより量?(JPAを使う方のプログラムもクラウド的である必要があるかも)

という感じ。

なので、RDBMSがアプリケーションから独立しているとか、OODAかDOAとか、そういうDBの話は前提の時点で無くなってる。また、データ管理の複雑性をRDBMS側が受け持ってきたとか、トランザクションはという話は、JPAの実装に移動するかアプリケーションが自分で面倒を見ることで解決するんだと思う。

いずれにしても、十分な実績がまだないという時点で本気でRDBMSの終わりが見えたというわけではないで、そこは勘弁してあげないといけない。

RDBMSが唯一の永続化の実装ではなくて、他にも選択肢ができてきたよ(しかも理論的にはスケールするよ)ということが主張したかったのだろうけど、「RDBMS一人勝ちの時代の終わり」ではなくて「RDBMSの時代の終わり」と書いたのは、釣りだといわれても仕方がないかも。