斉木 崇(編集部) [著] 2008/02/14 01:10

デブサミ2008初日の最後のセッションで、SQLの連載でもお馴染みのミック氏が、「みんなまとめて面倒見よう~真のDBエンジニアになるために必要なこと~」と題した、CodeZineスペシャルセッションを講演。今月刊行した「達人に学ぶ SQL徹底指南書」の狙いや、SQLの原理の理解、データベースエンジニアとはどんな仕事か、またどんな仕事であるかについて語った。

 デブサミ2008初日の最後のセッションで、CodeZineのSQL連載でもお馴染みのミック氏が、「みんなまとめて面倒見よう~真のDBエンジニアになるために必要なこと~」と題した、CodeZineスペシャルセッションを講演。今月刊行した「達人に学ぶ SQL徹底指南書」の狙いや、SQLの原理の理解、データベースエンジニアとはどんな仕事か、またどんな仕事であるべきかについて語った。

中間層が欠けている日本のDB界

 ミック氏は、現在の日本のデータベースエンジニア(以下、DBエンジニア)の構造を、中間層のえぐれた花瓶型と例え(正常であればピラミッド型)、初級者とベテランをつなぐ人材の不足を投げかけた。このままでは近い将来、団塊世代の退職に引き起こされる現象と同様に、ベテランの層がほとんどいなくなってしまうと危惧する。

 これは、書籍やWebにおける技術資料についても同様のことが言え、「達人に学ぶ SQL徹底指南書」では、それらを踏まえ、ある程度の経験をつみ、基礎を一通り習得したDBエンジニアがステップアップするための手助けを行う。

SQLの原理を理解する

 SQLが理解しにくい原因として、我々の多くは手続き型プログラミングの思考に慣れており、SQLの集合思考という発想が奇異に感じられるから、と述べた。SQLでは、代入、ループ、ソートといった手続きがない。SQLは世界を集合で表現し、その原理は集合と述語(戻り値がtrueかfalseとなるもの)に集約される。これに関しては、まず関数(さらに言うと、戻り値が0か1で表される特性関数)として捕らえると、手続き型思考からでも入りやすいのでは、と最近考えているという。

 手続き型と集合指向の考え方の対比として、メジアン(中央値)を求めるコード例が示された。以下にコードを引用するが、実際に目で追って違いを比べてみると面白いだろう。

集合指向の場合
SELECT AVG(weight)
  FROM (SELECT W1.weight
          FROM Weights W1, W2
         GROUP BY W1.weight
        HAVING SUM(CASE WHEN W2.weight >= W1.weight THEN 1 ELSE 0 END)
               >=COUNT(*)/2
           AND SUM(CASE WHEN W2.weight <= W1.weight THEN 1 ELSE 0 END)
               >=COUNT(*)/2) TMP;
集合指向でのメジアンの算出(『Joe Celko's Analytics And OLAP in SQL』より引用)
SELECT AVG(weight) AS median
  FROM (SELECT
          weight,
          ROW_NUMBER() OVER
            (ORDER BY weight ASC, student_id ASC) AS hi,
          ROW_NUMBER() OVER
            (ORDER BY weight DESC, student_id DESC) AS lo
         FROM Weights) TMP
 WHERE hi IN (lo, lo+1, lo-1);

 これらを受けて、今後のSQLの方向性として、基本的には集合指向の考え方をベースにしつつ、手続き型の考えをミックスしていく、ハイブリッド型になると予想した。

なぜデータベースの本場はアメリカなのか

 データベースの本場がヨーロッパでもアジアでもなくアメリカである理由、GoogleやAmazonのような企業が日本ではなくアメリカで生まれた理由として、ミック氏は、次の2つの基準軸がアメリカの根底にあるから、と考えているという。

  • 実証主義(データが多ければ多いほど正しい)
  • 民主主義(支持する人が多いほど正しいi)

 どちらにも共通するのは「多いことはいいことだ」という点だ。データを積み重ねる統計分析が重要視され、必然として大量のデータを処理するデータベースも重要となる。実際、アメリカにおけるビジネスの意思決定プロセスでは、徹底的にマーケティングやデータマイニングなどを行う風習がある。現在の日本では、そこまで実証性を組み込む習慣はないが、今後これに追随してゆくかぎり、データベースひいてはDBエンジニアの必要性はますます高まっていくだろうと予想した。

 最後にデータベースの未来図として、一つに従来のOLTP(少ないデータ量で長期保存をしない代わりにトランザクション制御が重要)、もう一つにデータウェアハウスの極端化(アメリカ主導が続くという前提でテラマイニングといった大規模統計分析ツールの用途が増える)を挙げ、セッションを締めくくった。


スポンサーサイト