このウインドウを閉じる

He looks only at his side of the shield.

 
 エンジニアは、自らが体得している技術に関して、古典的な文献や最新の書物を読んで、徹底的に検討吟味していると思うし、すべての専門領域の文献について語ることができるほどに小生は文献を読破している訳ではないけれど、およそ、いわゆる「基幹系」と呼ばれているシステムを作るエンジニア (SE およびプログラマ) は、以下の技巧に関する文献を「丁寧に」読んでいなければならないでしょうね。

 (1) レコード・アット・ア・タイム法
 (2) セット・アット・ア・タイム法

 レコード・アット・ア・タイム法に関しては、古典的な文献として、以下の2冊を読んでおけばよいでしょう。

 (1)基本算法2/情報構造、米田信夫・筧 捷彦 共訳、
    サイエンス社、1978年
    [ KNUTH THE ART OF COMPUTER PROGRAMMING の訳 ].
 (2) ワーニエ・プログラミング法則集
    ワーニエ J.D. 著、鈴木君子 訳、日本能率協会、昭和50年.

 プログラマが structured programming という用語を言う割には、structured programming の考えかたを理解していない、というのが実態のようです。
 ワーニエ・メソッドでは、「プログラムは、インプット・データ構造に基づいて作成される」という点を大前提にしています。そして、インプット・データ構造は、以下の「法則」にしたがって break-down されます。

 □ 対象の集合は、現れる回数が1回でないサブセットをふくむ集合である。

 □ 下位レベルの集合の1つのメンバーが、上位レベルの集合の1つの
   メンバーにふくまれる関係があるとき、両集合は対応する。対応づけ
   は、下位レベルから上位レベルに向かっておこなわれる。下位レベル
   の それぞれの集合は、始域集合とよばれ、上位レベルの集合は終域
   集合とよばれる。

 つまり、データ構造は、「上位:下位=1:複数」の反復構造です。
 そして、この構造を前提にして、プログラムのなかで、「照合基準」(すでに読み込まれたレコード)と「識別基準」(新たに読み込まれたレコード)を対比して、key-break (control-break)を問いながら、演算します。

 いっぽう、レコード・アット・ア・タイム法の対極に立つのがセット・アット・ア・タイム法です。セット・アット・ア・タイム法に関しては、古典的な文献として、以下の論文を読んでおけばよいでしょう。

    Relational Model for Large Data Banks, Codd E.F.,
    CACM, vol.13 No.6, 1970.

 セット・アット・ア・タイム法は、indexing とは無関係です。プロダクトとしての RDB が、(セット・アット・ア・タイム法に対して) indexing を「上積み」している、というプロダクト構成の論点であって、セット・アット・ア・タイム法と indexing は、そもそも、相反する考えかたです。

  RDB が、セット・アット・ア・タイム法に対して indexing を「上積み」してきたので、小生は、「INDEX-only」という技法を公表しました。「INDEX-only」は、「レコード・アット・ア・タイム法をセット・アット・ア・タイム法のように使う」という たわいもない (very easy) 技巧です。
 ただし、 RDB が indexing を搭載しているのは「当然」であると勘違いしていれば、「INDEX-only」を着想できないでしょうね (あるいは、理解できないでしょうね)。
 技術 (how-to) を技術として習得するだけでは、エンジニアとして初級でしょうね。技術の前提となっている理論 (設計思想) まで遡って検討するのがエンジニアの本領でしょう。

 (2004年1月5日)

  このウインドウを閉じる