データベースエキスパートへの道


ふしぎ先輩が教えるデータベースエキスパートへの道 ~実践的リレーショナルデータベース設計手法~ (Software Design Books)
ふしぎ先輩が教えるデータベースエキスパートへの道 ~実践的リレーショナルデータベース設計手法~ (Software Design Books)技術評論社の編集の人から献本していただいた。ひなた先生(→ http://d.hatena.ne.jp/yaneurao/20081114 )の姉妹本らしい。


内容は、ER図によるモデリングがメイン。実戦的で、新人教育に使える本だと思う。


ただ、私は現場でデータベースに関してどのような教育が必要なのか、あまり明確なビジョンが無い。少なくとも私はデータベースの設計のときにER図を書こうとは思わない。


私が通ってきた道はと言うと、SQLのことはプログラマのためのSQL 第2版、データベースの論理的側面は、データベース実践講義―エンジニアのためのリレーショナル理論 (THEORY/IN/PRACTICE)で勉強した。この2冊はとても良い本だった。わかりやすいとは言い難いが、大学の教科書だと思えば、まあ許せる気はする。


私はモデリングについては本で学んだことは無いけど、それで困った経験は、一度も無い。だからと言って勉強しなくていいのかどうかは、私自身よくわからない。cardinalityなんかは、普通、OOPで設計していても意識することだから、ひょっとすると、そういう(データベース関係以外での)プログラミング経験が豊富にあるから、私はER図などを書かなくとも済んでいるのかも知れない。

そもそも、データベースに関して、世間で必要とされている技術要件がどのようなものなのか私にはよくわからない。ちょっとしたWebサイトを作るだけなら、SQLが少し使える程度でいいのだろうが、アクセスが増えてきて負荷対策をしようと思うと途端に話がややこしくなる。特定のデータだけメモリに置こうかだとか、データを一定時間おきに複数のマシンにコピーして負荷分散を図ろうとか、そもそも既存のリレーショナルデータベースで事足りるのかという根本的な問題も浮上してくる。大規模なデータから短い時間で必要なデータを取り出すには、専用のデータ構造が必要になることが多々ある。その部分だけC/C++で書くことはざらにある。


かと言って、部分的にC/C++で書かなければならないようなWebサイトが世のなかにどれほどあるのかと問われると全体の1%にも満たないだろう。サーバーを何台もで運営しないといけないサイトも全体の1割にも満たないだろう。


結局、SQLをちょっと知っていれば、事足りるのが多いのが現状で、今後マシンのマルチコア化が加速して、ストレージが高速化してくれば、ますます1台のサーバーの処理能力はあがるのだから、負荷分散なんてさらに考える機会は減るんじゃないかと思う。そもそも、LINQのような技術が台頭してくるとSQLを覚える必要すら無いだろう。開発環境が進化すると普通のコンソールアプリの知識とわずかばかりの知識だけで小さなWebサイトのプログラムは書ける。


数年後に「コンソールアプリ開発プログラマが2週間でWebプログラマになる本」とか書いたら売れる気がする。本の内容は、(書くことがなさ過ぎて)スカスカかも知れないが。