RDBMSは死にましぇん

RDBMSクラウドコンピューティングに殺されるらしいです。
とくに組み込みDBから死ぬらしいです。
HDDはSSDにとってかわられるらしいです。
http://d.hatena.ne.jp/nowokay/20081212#1229071535


SSDに対しての反論と、組み込みDBが死ぬことに対しての反論。
RDBMSはサーバから死ぬらしいです。
http://d.hatena.ne.jp/kazuhooku/20081212/1229077256


どっちもびみょいとおもいます。一応、毎日ウェブアプリをごりごり書いており、なおかつORDBMSをばりばり利用している身として、気になる点をだらだらかくよ。

大規模システムはRDBMSからクラウドへ、それ以外はひきつづきRDBMS

RDBMSの一番大きな問題点は、いまさらですがスケーラビリティです。このへんははてなとかmixiの技術ネタを読めばよく分かるのですが、webサーバがロードバランサやDNSラウンドロビンによって簡単にスケールするのに対して、DBサーバでは常にデータの同期という問題が絡むため、スケーリングが難しいです。アクセスをさばくためにDB台数を増やすと同期のずれが大きくなるというアンビバレンツが存在します。
たぶん、こういう部分で悩み始めたシステムはじわじわクラウドに移行すると思います。しかし、世の中にはDBのスケーリングの壁にあたるほどのアクセスがないサービスが星の数ほどあるわけで、そういうサービスはクラウドなどどこ吹く風でRDBMSを使い続けるでしょう。

RDBMSは開発者によってパフォーマンスに差がありすぎる

RDBMSを利用したシステムのパフォーマンスは1000倍どころでない差がつきます。そもそもjoinを知っているか? から始まり、indexついてて、それは適切で、きちんと使われてる? 列名つけてる? 間違ってもアスタリスクとか使ってないよね? 適切なjoinを行ってる? order by 前に演算とかしてない? null入ってない? subquery使ってる? having使ってる? ループしないとどうしようもなさそうな時の力技としてunion使ってる? in して group by して count() してる? というsql文そのものの知識や、実行計画見てる? cronでトランザクションテーブル作成するときにindex外してる? もし再作成するテーブルであればいっそのことdropしてcreateしてる? table to table で完了できない場合、オーバーヘッド短縮のためまとめてごっそり1000行くらい投げてる? という周辺のワンテクやら、いたるところにパフォーマンスが軽く数倍、重くて1000倍くらいつく罠がしかけられており、これを全部きちんとやるのと全部gdgdなのではおそろしくひどい差がつきます。
例えば今私が勤めている現場では、四捨五入すると1000万PV/月ほどのシステムをweb2台・DB1台でさばいており、開発者は5人。SQLを合格レベルで使える人間は私を含め2人で、他の人は基本的にjoinしかしません。そうして取ってきたデータをループして、1レコードごとにまた必要なデータをDBに取りに行くわけで、ちょっとした用途のlike検索エンジンなんかでも、1回検索して検索結果が20件表示されるまでに100回以上クエリが発行されたりします。これを私が1日がかりでリファクタリングして、なんとか3回くらいのクエリ発行ですむようにすると、パフォーマンスは普通に10倍以上変わります。

結局RDBMSを使う技術があるかどうか

そういった技術力(ていうか技術力というのもおこがましいのだが)の差によって、世の中のウェブアプリは「すげーアクセスあるのにDB1台でそれなりにやりくりしてる」システムと、「大してアクセスないのにDBがひーひー言っててレプリケーションやら万策尽くしたがもう限界」というシステムに大きく分かれます。後者はSQLやDBのわかる技術者を導入するか、潜在的なスケーラビリティの大きいクラウドを導入するしかないわけで、まあとにかくいくらかはクラウドを導入するんでしょう。

あ、あと、SQLiteまじ便利だから絶対つぶれない!

ぶっちゃけクライアントアプリ開発SQLiteとかすげー便利なんですよ。MSDEインストールさせる必要もないし。注意しないといけないのは、ファイルサイズが大きくなると困るのでたくさん「データベースファイル」を作成して水平的に持つとか、大した量でもなけりゃ全部メモリに持っちゃってあとは更新のタイミングに注意するとか。もうほんと、一生懸命CSVを読んで配列に変換してた、遠い過去の俺に教えてあげたい。firebirdとかもおもしろそうだよね。

SSDとかまじありえない!

死の宣告メディアとか使えるかよばーか!