達人に学ぶ SQL徹底指南書 第2部前半 13章〜17章

達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS)

達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS)

第2部 リレーショナルデータベースの世界

  • 前半
  • 歴史や理論の説明が主であり、SQL文は登場しない(座学)
  • 読み物として、肩肘抜いて
    • SQL脳」を獲得するのに役立ちそう

目次

  • 13 RDB近現代史
    • データベースの歴史
  • 14 なぜ"関係"モデルという名前なの?
    • 関係って?
  • 15 関係に始まり関係に終わる
    • 閉包性
  • 16 アドレス、この巨大な怪物
    • ポインタなんて大嫌い
  • 17 順序をめぐる冒険
    • ウィンドウ関数

13 RDB近現代史

  • データベースの歴史
  • 現代の我々からすれば、データベース = RDB
    • だが、RDB以前にもデータベースは存在した
  • また、RDBを置き換える新技術は存在するか
    • まだない

まとめ

関係モデルの処遇について(この記事書いている人の雑感)

  • E.F.コッドのWikipediaの記事 より
  • E.F.コッドはIBMの技術者だった
    • IBMは自社の既存製品を守るため、コッドの論文を受け入れなかった
    • 他社が関係モデルに基づくデータベースを開発するまで動かなかった

関係モデルの課題

  1. 性能と信頼性のトレードオフ
  2. データモデルの限界
    • グラフと非構造化データが苦手

NoSQL

  • ブレイクスルーになったか
    • No
  • SQLの否定から入っている
    • 逆説的にSQLの影響力の強さをうかがい知れる
  • RDBのパフォーマンス問題への対策
  • トレードオフ
    • NoSQLはRDBと相互補完的関係にある
      • RDBに適さない用途にNoSQLが使えるかもね

14 なぜ"関係"モデルという名前なの?

  • 関係という言葉について説明
    • 高階の関係
    • 現状のRDBの限界

まとめ

  • "表"モデルではなくて?
    • 表より関係の方が抽象度が高い
  • 定義域
  • 関係の関係
    • 高階の関係
      • テーブルの中にテーブルがあるみたいな
    • 現在対応しているDBMSはない
      • が、その方向に向かって進化している

関係モデルで使用される公式用語と日常的な言葉との対応

形式的な関係モデルの用語 非形式的な日常語
関係 (relation) 表またはテーブル
組 (tuple) 表またはレコード
濃度 (cardinality) 行数
属性 (attribute) 列またはフィールド
次数 (degree) 列数
定義域 (domain) 列の取り得る値の集合

15 関係に始まり関係に終わる

  • 関係モデルからRDBの柔軟性を説明
    • 数学的に厳密な基礎付けがあってのこと

まとめ

  • 閉包性 (closure property)
    • 演算子の入力と出力が共に関係になる
    • 関係の世界が閉じていることを保証する
  • UNIXのパイプの概念に似ている
    • なんでもファイル
  • SQLは数学的に厳密な基礎付けを持っている
    • SQLは体の条件もクリアしている
    • エレガントさや機能性を獲得している

代数構造

  • 群 (group)
    • 加算と減算(または乗算と除算)について閉じている
  • 環 (ring)
    • 加算・減算・乗算について閉じている
  • 体 (field)
    • 加算・減算・乗算・除算について閉じている
    • つまり、四則演算が自由にできる

16 アドレス、この巨大な怪物

  • アドレス/ポインタ撲滅への戦い

まとめ

  • SQLでは基本思想の段階からアドレス/ポインタを排除することに成功した

この記事書いている人の雑感

  • まだ綺麗事に聞こえる
  • アドレスを考える必要がなくなったこと、それ自体は良い
  • 代わりに、また別の「変なこと」を考える必要がある
    • 実行計画を見て、内部処理を想像/修正する必要がある
    • 内部処理を隠蔽しているから/まだオプティマイザが賢くない
  • いうほど素晴らしいかね…?
    • 原理的には最善になるが、今はそうなれていないのがエンジニアを苦しませる

17 順序をめぐる冒険

  • 第2版で新録
  • ウィンドウ関数の登場はなぜ遅れたか
    • SQLの思想から辿る

各勢力の主張

  • リレーショナル伝統主義保守派
    • 行に順序などない(理論的には)
    • だからウィンドウ関数など不要
  • リレーショナル無政府主義左派
    • 分析的計算は今時必要なんだから入れようぜ
    • 現状の仕様でそれをやろうとすると自己結合が必要になってひどいんだ
      • エレガントでない、パフォーマンスの最適化も困難
  • この本の著者の立ち位置
    • 入れたら便利だったよね

村上春樹…?

以上