« トリクルダウン理論 - 歴史は繰り返すか | トップページ | 互いにパラサイトしあえるのなら(パラサイト・プログラマ) »

2007年10月20日 (土)

プログラマがRDBMSを憎む理由

Complaining about relational databases is a staple theme of programmer blogs. Why are so many programmers irritated and frustrated with relational databases? Why do the perceived intricacies of SQL and the “object-relational impedance mismatch” launch so many rants? Why are DBAs more hated than managers? I have some ideas.

Typical Programmer - Why Programmers Don’t Like Relational Databases

リレーショナル理論というのは、非常に良く考えられたもので、データの操作に関して、高い柔軟性を実現することのできる基盤と成り得るものであると思います。そして、その柔軟性によって、個別のアプリケーションの文脈から、データを独立させることができるわけです。こうして、データを、特定のアプリケーションから解放し、同じデータを様々なアプリケーションで、自由に使いまわせるようにするというのは、データベース管理システムの目指すところであったわけですが。

・・・

柔軟性を最大限に確保した設計というのは、どうしても複雑になってしまうのですよね。小さな大量のテーブルにデータを分割した上で、これらを組み合わせて使わなければならない、というのは、プログラマにとっては苦痛でしょうね。実際、”テーブルが多すぎる(ひとつにまとめてくれ)”という苦情は、良く聞こえてきます。

また、SQL言語の構文の冗長さが、この苦痛を増幅させているように思います。”英語らしさ”を重視しているようにみえるあたり、どこかCOBOLに通じるものがありますね。私も大量のJOIN句やらサブクエリやらをタイプしていて、腱鞘炎になるんじゃないかと思ったことがあります。もっと簡潔に書ける言語にならないものかなあ、といつも思うんですよね。しかし、SQLは標準となってしまっていて、別のより簡潔な言語に変わることはないでしょうね。

そして、データベースの”重さ”と”硬さ”。数千万件、数億件ものデータが格納されている場合、テーブルに”ちょっとした変更”を加えるだけで、半日仕事になってしまいます。このようなデータとなると、ちょっと開発環境でテストに使う、というわけにもいかなくなりますしね。アプリケーションを少ない件数のテスト用データで開発して、それを本番にもっていったら、クエリのレスポンスに数時間かかることが判明したり。しかも、その原因が、SQL構文の”ちょっとした違い”に起因していたりします。

・・・

とまあ、苦情を言いますと、こんなところでしょうか。

しかし、それでも、現実にRDBMSが達成してきたものは、決して小さくはないな、と思うわけでして。アプリケーションごとに、フラットファイルに持っていたものを、DBMS上に載せるようになり、SQLによって、かなり自由に取り出せるようになった、というのは大きいでしょう。色々不満はあっても、RDBMSがないよりはある方が遥かにマシであるのは、認める他ないように思います。

RDBMSよりも優れたデータベース管理システム、となると、正直、あり得るのだかどうだか。。。

SQLよりも使い良い言語をインターフェイスにする、というのは、少なくとも技術的には実現性はあるでしょうけど(社会的にはなさそう)。それ以外については、どうしょうもないかな、という気がします。今後、もの凄いブレークスルーがあって、数千万件だろうが数億件だろうが、お手軽にデータを扱えるようになるかもしれませんけどね。

|

« トリクルダウン理論 - 歴史は繰り返すか | トップページ | 互いにパラサイトしあえるのなら(パラサイト・プログラマ) »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/80472/8513705

この記事へのトラックバック一覧です: プログラマがRDBMSを憎む理由:

« トリクルダウン理論 - 歴史は繰り返すか | トップページ | 互いにパラサイトしあえるのなら(パラサイト・プログラマ) »