A Brief History of PostgreSQL

객체 관계형 데이터베이스 관리 시스템으로 알려진 PostgreSQL은 버클리의 캘리포니아 대학교에서 만들어진 POSTGRES 패키지로부터 파생되었다. 수십년의 개발을 거쳐 PostgreSQL은 현재 어디에서나 사용할 수 있는 가장 진보된 오픈소스 데이터베이스가 되었다.

The Berkeley POSTGRES Project

Michael Stonebraker 교수가 리드한 POSTGRES 프로젝트는 Defense Advaned Research Projects Agency(DARPA), Army Research Office(ARO), National Science Foundation(NFS), ELS Inc에서 지원하였다. 1986년에 시작되었다. 초기 컨셉은 ston86에서 볼 수 있고 rowe87에서 초기 데이터 모델에 대한 정의를 확인할 수 있다. 그 떄 당시의 룰 시스템 디자인은 ston87a에서 볼 있고 스토리니 매니저의 아키텍쳐와 이론적인 설명은 ston87b에서 볼 수 있다.

POSTGRES는 이후러 여라 차례 릴리즈를 거쳤다. 첫 demoware 시스템은 1987에 동작을 시작했으며 1998 ACM-SIGMOD 컨퍼런스에서 선보였다. ston90a에서 볼 수 있는 버전1은 1989년 6월에 몇몇 외부 사용자들에 의해 릴리즈되었으며 첫번쨰 룰 시스템(ston98) 재디자인된 것은 ston90b에서 볼수 있으며 버전2가 1990년에 신규 룰 시스템과 함께 릴리즈되었다. 1991년에 발표된 버전3는 다중 스토리지 매니저, 향상된 쿼리 실행기, 룰 시스템 업데이트가 포함되었다. 대부분의 경우, Postgres95까지의 후속 릴리즈들은 안정성과 이식성에 주안점을 두었다.

POSTGRES는 다양한 연구 및 생산 애플리케이션을 구현하기 위해 사용되었다. 금융 데이터 분석, 제트엔진 성능 모니터링 패키지, 소행성 트래킹 데이터베이스, 의료 정보 데이터베이스, 여러 지리 정보 시스템에 사용되었다. 또한 여러 대학들에서 교육용 도구로 많이 사용되었다. 마지막으로 Illustra Information Technologies(나중에 Informix에 합병되었으며 현재 IBM이 소유)가 상용화하였었다. 1992년 이후 POSTGRES는 Sequoia 2000 scientific computing project의 primary data manager가 되었다.

1993년 동안 외부 사요자 커뮤니티의 사이즈가 거의 두배로 늘었다. 데이터베이스 연구에 더 많은 투자를 위한 많은 양의 시간과 지원과 프로타타입 코드 관리가 필요한 것이 점점 더 명확해졌다. 이러한 지원 부담을 줄이기 위한 노력으로 Berkeley에선 POSTGRES 프로젝트를 공식적으로 4.2버전으로 중지했다.

Postgres95

1994년에 Andrew Yu와 Jolly Che은 POSTGRES에 SQL 언어 인터프리터를 추가했다. 버클리의 원본 POSTGRES 코드의 자손으로 오픈소스로써 세계에 Postgres95라는 새로운 이름으로 웹에 공개되었다.

Postgres95 코드는 ANSI C로만 이루어졌으며 크기를 25%로 줄였다. 많은 내부적인 변경이 성능과 유지보수성을 향상시켰다. Wisconsin Benchmark가 비교한 바에 따르면 POSTGRES Version 4.2 대비 Postgres95 릴리즈 1.0.x는 거의 30~50%정도 빨랐다. 버그 수정 이외에도 주요 발전사항은 아래와 같다.

  • 쿼리 언어 PostQUEL이 SQL(서버에서 구현된)로 교체되었다.(인터페이서 라이브러리 libpq는 PostQUEL을 따서 네이밍되었다.) 서브쿼리는 PostgreSQL까지 지원되지 않았지만 Postgres95와 사용자 정의 SQL 함수를 사용해서 흉내낼 수 있었다. 집계함수는 재구현되었다. GROUP BY 쿼리 구문이 추가되었다.
  • 새로운 프로그램(psql)에서 GNU Readline을 사용하여 반응형 SQL 쿼리를 제공했다. 이전 모니터 프로그램을 대체했다.
  • libpqtcl이라는 새로운 프론트엔드 라이브러리가 추가되어 클라이언트 기반의 Tcl을 지원했다. 예를들어 pgclsh은 Postgres95 server에서 Tcl 프로그램 인터페이스로 새로운 Tcl 명렁을 제공한다.
  • The large-object interface was overhauled. The inversion large objects were the only mechanism for storing large objects. (The inversion file system was removed.)
  • The instance-level rule system was removed. Rules were still available as rewrite rules.
  • Postgres95 뿐만 아니라 일반 SQL 기능을 소개하는 짧은 튜토리얼이 소스코드와 함께 배포되었다.
  • BSD make 대신에 GNU make를 사용하여 빌드되었다.Postgres95는 unpatched GCC로 컴파일될 수 있다.(data alignment of doubles was fixed)

PostgreSQL

1996년이 되서 Postgres95라는 이름이 지속될 수 없을 것임이 명확해졌다. 그래서 본래 이름이였던 POSTGRES와 연관성이 있 고 최신 버전이 SQL 기능이 있음을 표현할 수 있는 PostgreSQL이라는 새로운 이름을 선택했다. 버전은 6.0 부터 시작함으로써 버클리 POSTGRES 프로젝트에서 사용된 번호 체계를 이어가게 하였다.

많은 사람들이 전통적이거나, 더 발음하기 쉽다는 이유로 여전히 Postgres(아주 드물게는 대문자로)로 사용한다. 이 이름은 nickname, alias로써 받아들여진다.

Postgres95의 주요 쟁점이 기존 서버 코드의 문제를 인식하는 것이였다면 PostgreSQL은 모든 영역에서 특징과 기능을 강화하는 것으로 옴겨졌다.

PostgreSQL에서 어떤점이 제기되었는지는 Appendix E에서 볼 수 있다.