「RDBMSの批判者というのが昔からどの程度いるかは知らない」
「そうか」
「しかし、@ITでRDBMS批判の連載を行ったとき、ほぼ孤立無援であったことは事実だ」
「ほぼ味方は皆無ってことだね」
「辛うじて、XMLデータベース陣営の一部が味方になったが、存在感はあまりなかった」
「XMLデータベースはRDBMSではないからね」
「しかし、こう言う記事をたまたま見た」
「へぇ」
「この記事の要点はこうだ」
- RDBMS以外のデータベースをnoSQLと称する
- noSQLとはRDBMS以外の様々なデータベースを示す総称である
- noSQLはRDBMSと比較して弱い部分もあるが、それでも必要とされている
- RDBMSが無くなるわけではない
「"RDBMSが無くなるわけではない"って、それでいいの?」
「いいぞ。なぜかといえば、結局RDBMSが批判される最大の要因は、『何もかもデーベースイコールRDMBS』と決めつける帝国主義的な態度にあるからだ」
「RDBMSに向かない用途にもRDBMSを前提に考えるのはおかしい、ということだよね」
「更に言えば、RDBMSに向く用途はけして多くない」
「けして多くないってことは、ゼロではないわけだね」
「うん。ゼロではない以上、RDBMSを滅ぼせとまでは言わないよ」
「『何もかもデーベースイコールRDMBS』と決めつける帝国主義的な態度に滅んで欲しいだけであって、ニーズに応じて選択できる柔軟さがあれば選択肢の1つにRDBMSがあることまでは否定しないわけだね」
「そうさ。ここでの批判の対象は、『ニーズに応じて選択しないで最初からRDBMSしかないと決めつける態度』にあるんだから」
注釈の問題 §
「しかし、注釈がけっこう笑えるぞ」
「どういう内容?」
「以下に引用しよう」
注1:「noSQL」という言葉はもともと「近年登場している、RDBMS以外の(つまりSQLを使わない)データベース」を総称、表現したものであり、その後から「SQLは不要だ」というイメージを持つキーワードのようになってきました。データベース開発者の中には、このようなRDBMSに対するネガティブなイメージを好まず、noSQLを「Not Only SQL(SQLに限らない)」の略であるとすべき、と提唱している人もいます。
「『RDBMSに対するネガティブなイメージ』を一生懸命否定しようとしているね」
「うん。SQLが不要……とまで言うとさすがに行きすぎだろうが、そのバックグラウンドまで見ていくとそんな単純な話ではないことが分かる」
「というと?」
「SQLに向かない用途は山ほどあるが、かつて、超巨大なSQL信者軍団が邪魔立てしてまともな話ができなくなっていたわけだよ」
「えっ。それじゃSQL信者はマイナスの存在じゃないか」
「そうだ。人の邪魔をする酷いやつらだ。しかも、人の話を聞かない。彼らのバイブルにはRDBMSという5文字しかないからだ」
「あれ。それじゃRDBMSに対するネガティブなイメージってのは」
「そうだ。それこそがRDBMSに対するネガティブなイメージの源泉であり、正体だ。ここでいうSQLもRDBMSも実は技術ではなく、宗教の御神体を示す言葉に過ぎない」
「そうか」
「だから、技術としてのRDBMSは100%否定される訳ではないが、宗教的御神体としてのRDBMSは否定されねばならない」
「ポイントはそこだね」
「どんな技術だろうと信じたら負けだ。完全無欠の技術などどこにもない」
「常に、選択可能な別の候補を持たないと上手く行かないってことだね」
「そうだ。『我は絶対なり。他者を許すな』という御神体は現場のリアリティからはほど遠い」
余談 §
「でもさ。この結論って、結局『XX信者うぜえ』の1バリエーションに過ぎないってこと?」
「何でも信じたら負けだってことだ」
「でも、君はWindows信者でC#信者だと思われてそうだぞ」
「ははは。そう思う奴はアホだな。あるいは過去を知らない人間だ」
「でも新しいWindowsとか新しいサービスパック出るとすぐ入れるだろ?」
「だって、サポートの都合があるもん。先行する客はすぐにでも使い始めるからこちらも対応できるように入れて試すのが当たり前じゃん」
「あれ?」
「新しいWindowsが常に素晴らしいなんてことは信じてない。入れるとメリットがあるとも信じていない」
「そうか。入れるのは君の都合ではなく客の都合ってことか」
「より厳密に言えば、客だって価値観は多様だ。新しいものをすぐ入れる客だけとは限らない。しかし、客の多様性の海の中に、そういうニーズがあれば対応せざるをえないだろう?」
「ということは、君は『客信者』ってことにならないか?」
「なるけど、それは営利企業なら当たり前だろ?」
「た、確かに……」
「C#だって同じだ。単純に、いくつかの選択肢の中で欲しいものが最小の手間で作れたから選んでいるだけで、別に信じてはいないぞ。むしろ批判の目で見ていちいち検証していると言ってもいい」
「本当に?」
「もしも、効率の良さがセールストークでしかないのなら、とっくに捨てているところだ。こちらがコーディングに割ける時間も限られているからね」
「じゃあ、もっと効率がいい言語があると言う意見があるならどうする?」
「もちろん全ての候補を試したと言い切るほど自分を信じてはいない。本当にあればどんどん教えてくれ。ただし、移行のコストはゼロじゃないから、そのコスト以上のメリットが出ることが条件だな。あと理念が素晴らしい言語ならいくらでもあるが、こちらは現場の泥の中で判断するから、口先だけの立派な言語は最初からお断りだ」
「泥の中に入れても輝きが衰えない技術を求むってことだね」
「泥の中で使う以上、当たり前の前提だ。綺麗な白衣を着て綺麗な研究室で使うわけじゃない」