관계형 데이터베이스 이전에는 질의란 곧 탐색을 뜻했다. 사용자가 접근 경로와 인덱스, 레코드 단위 절차를 지정해야 했고, 시스템마다 고유한 언어가 있었다. 1970년 IBM Research의 에드거 코드는 《대규모 공유 데이터 뱅크를 위한 데이터의 관계형 모델》을 발표하며 테이블에 기반한 모델과 데이터 독립성이라는 목표를 주장했다.

IBM은 관계형 기반 위에 SQL을 구축했고, 1980년대 중반이 되자 이 언어는 표준화될 만큼 충분한 추진력을 갖추었다. ANSI X3.135-1986, 즉 데이터베이스 언어 SQL이다. 1987년 3월 미국 국립표준국은 이를 FIPS PUB 127로 채택하며, 그 목적이 서로 다른 설치 환경 간에 데이터베이스 정의와 데이터베이스 응용 프로그램의 이식성을 촉진하는 것이라고 밝혔다.

선언적 설계가 핵심이었다. 응용 프로그램은 원하는 데이터가 무엇인지 말하고, 데이터베이스가 그것을 어떻게 가져올지 결정한다. 이러한 분리는 SQL이 메인프레임에서 임베디드 기기까지 여러 벤더에 걸쳐 살아남게 했고, 모든 데이터베이스 시스템이 구사해야 하는 단 하나의 질의 언어로 만들었다.

원하는 것을 선언하고, 시스템이 어떻게 할지 결정하게 하라

선언적 질의는 응용 프로그램을 특정 벤더의 저장 세부 사항에 의존하지 않게 해방했다.

단일 ANSI 표준은 구매자에게 공통된 조달 언어를 제공했다.

정부의 채택(FIPS 127)은 공공 부문 요구 사항에 이식성을 강제로 끌어들였다.

살아남는 언어는 어려운 작업을 플랫폼으로 옮긴다. 선언적 질의는 사용자가 데이터베이스를 자유롭게 바꿀 수 있게 하고, 표준화는 이식성을 조달 요구 사항으로 만들었다.

SQL은 보편적인 데이터베이스 언어가 되었다. ISO/IEC 9075는 계속해서 이를 발전시키고 있고, 모든 주요 데이터베이스 엔진이 방언을 구현하며, SQL이 구현한 관계형 모델은 수십 년 동안 데이터베이스 산업을 이끌었다. 이후의 NoSQL 시스템들은 SQL에 반대되는 정체성을 정의했는데, 이는 오히려 SQL이 기본값이라는 지위를 확인해 줄 뿐이다.

근거 확인하기

출처

  1. 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
  2. FIPS PUB 127: Database Language SQL (adopting ANSI X3.135-1986) US National Bureau of Standards (NIST) · nvlpubs.nist.gov