解決策
関係データベース以前、クエリとはナビゲーションを意味していた。ユーザーはアクセス経路、インデックス、レコード単位の手続きを指定し、各システムは独自の言語を持っていた。1970年、IBM ResearchのEdgar Coddは『A Relational Model of Data for Large Shared Data Banks』を発表し、テーブルに基づくモデルとデータ独立性という目標を提唱した。
IBMは関係モデルの基盤の上にSQLを構築し、1980年代半ばまでにこの言語は標準化されるだけの勢いを得ていた。ANSI X3.135-1986、Database Language SQLである。1987年3月、米国国立標準局はこれをFIPS PUB 127として採用し、その目的は異なるインストール間でのデータベース定義とデータベースアプリケーションプログラムの移植性を促進することであると述べた。
宣言的な設計こそが要点であった。アプリケーションは欲しいデータを述べ、データベースがそれを取得する方法を決める。この分離によりSQLはメインフレームから組み込み機器まで、ベンダーをまたいで生き残り、すべてのデータベースシステムが話さなければならない唯一のクエリ言語となった。
達成したこと
欲しいものを宣言し、方法はシステムに決めさせる
うまくいった理由
宣言的クエリはアプリケーションを特定ベンダーのストレージ詳細への依存から解放した。
単一のANSI標準は購入者に共通の調達言語を与えた。
政府による採用(FIPS 127)が、公共部門の要件に移植性を強制した。
応用できること
生き残る言語は困難な作業をプラットフォームに移す。宣言的クエリによりユーザーは自由にデータベースを切り替えられ、標準化が移植性を調達要件に変えた。
その後
SQLは普遍的なデータベース言語となった。ISO/IEC 9075は進化を続け、すべての主要なデータベースエンジンが方言を実装し、それが体現した関係モデルは数十年にわたりデータベース産業を支えた。後のNoSQLシステムはSQLに対して自らを定義したが、それはSQLがデフォルトであるという地位を裏付けるだけだった。
出典をたどる
出典
- A Relational Model of Data for Large Shared Data Banks (E.F. Codd, CACM 13(6), 1970) Communications of the ACM / University of Pennsylvania · seas.upenn.edu
- FIPS PUB 127: Database Language SQL (adopting ANSI X3.135-1986) US National Bureau of Standards (NIST) · nvlpubs.nist.gov