1. 소개

이 문서는 버클리 소재 캘리포니아 대학에서 개발된 postgres95 데이터 베이스 시스템의 사용자 설명서이다. postgres95는 postgres release 4.2에 그 기반을 두고 있다. postgres 프로젝트는 Michale Stonebraker 교수에 의해 주도 되었으며, 다음과 같은 기관들의 후원을 받았다.

1.1 postgres란 무엇인가?

전통적인 데이터 베이스 시스템들은 관계라는 이름의 집합체인 데이터 모델을 제공한다. 이것은 특별한 형식의 속성을 포함하고 있다. 현재의 상업용 시스템에서는 고정 소수점 방식의 수치, 정수형, 문자형, 금전형, 날짜형 등의 데이터형이 가능하다. 그러나 일반적으로 이러한 데이터 모델들은 미래의 데이터 처리 프로그램에서는 불충분한 것으로 여겨지고 있다.

관계형 데이터 모델은 성공적으로 기존의 데이터 모델들을 바꾸어 나가고 있는데, 그것은 엄격한 단순성 때문이다. 그러나 이러한 단순함이 때로는 어떤 프로그램을 구현하는데 있어서는 어려움으로 작용하기도 한다. postgres 는 사용자가 시스템을 쉽게 확장시킬수 있는 다음의 기본적인 네 가지 구성을 제공하며, 이것을 통하여 협동함으로서 진정한 위력을 발휘하게 된다.

부가적으로 postgres는 강력한 rule 시스템을 제공한다.

주) 개인적인 생각으로는 이것이 바로 객체지향 데이터 베이스를 지칭하는 것이 아닌가 한다. 즉, 과거에는 별로 필요하지 않았던 그래픽 데이터 혹은 사운드 데이터, 혹은 지리정보에 관한 데이터, 등등의 새로운 데이터 형식을 다루는데 있어서 객체지향 데이터 베이스의 필요성을 암시 하면서, 앞으로 데이터 베이스에 필요한 새로운 어떤 방향 제시를 하고 있는 듯 하다.

1.2 postgres 프로젝트에 대한 간단한 역사

postgres DBMS는 1986년부터 구현되기 시작하였다. 이 시스템에 대한 최초의 개념은 [STON86] 에서 제시 되었으며, [ROWE87]에서 데이터 모델에 대한 최초의 정의가 나타나 있다. rule 시스템에 대한 개념은 [STON87a] 에서 처음 기술되었으며, 데이터 처리부에 대한 이론적 근거와 아키텍처에 대한 내용은 [STON87b] 에 상세하게 기술되어있다.

postgres는 몇 번의 주요한 발표를 거쳤으며, 첫 번째 데모 프로그램이 1987년에 처음 동작하게 되었고, 1988년에 ACM-SIGMOD 회의에서 보여지게 되었다. [STON90a] 에서 언급하고 있는 버전1은 1989년 6월에 내부의 몇 몇 사용자들에게만 한정적으로 발표되었다. [STON89]에서 구현된 첫 번째 rule 시스템의 평가에 대응하여 [STON90b]에서 새로 디자인 되었으며, 1990년 6월에 새로운 rule 시스템을 가진 버전 2가 발표되었다. 1991년의 버전 3에서는 다중 데이터 처리부에 대한 지원과 개선된 질의 실행화일, 그리고 새로 작성된 rule 시스템이 추가되었다.

postgres는 서로 다르면서도 매우 많은 연구와 응용된 결과 들을 구현 하는데 사용되어져 왔으며 그 내용들을 살펴보면, 금융상의 데이터 분석 시스템, 제트 엔진의 성능을 모니터링하는 패키지, 소행성의 운동을 추적하는 데이터 베이스, 의학 정보 데이터 베이스, 몇 개의 지리정보 시스템 등 등을 포함하고 있다.

postgres 는 또한 여러대학에서 교육용으로 쓰여져 왔다. 마침내 Illustra Informat-on Technologies 에서는 일부의 코드를 사용하여 그것을 상업화 하였다.

1992년에 postgres는 Sequoia 2000 scientific computing project의 주요한 데이터처리기로 선정되었다. 나아가서 1993년에는 내부 사용자의 집단의 크기가 두배에 가까워졌다. 이것은 코드의 원형을 관리하고 그것을 지원하는 일에 데이터 베이스 연구 중 더 많은 시간이 할당되어 가고 있다는 점을 명백하게 말해준다. 이러한 힘든 수고를 줄이기 위해서 공식적으로 이 프로젝트는 버전 4.2를 마지막으로 종료되었다.

주) [ ] 안의 내용은 postgres를 연구하면서 발표된 논문의 약자를 뜻한다.

1.3 postgres 95란 무엇인가?

postgres 95는 postgres의 마지막 공식버전인 4.2 로부터 파생된 것이다. 코드는 현재 완전히 ANSI C 로 작성되었으며, 코드의 크기도 약 25% 가 줄었고, 성능개선과 코드 유지 부분에 대한 많은 내부적 변화가 있었다. postgres95는 버전 4.2와 비교할 때 약 30% - 50% 정도의 빠른 실행속도를 보인다. 버그수정 문제를 제외한 나머지 중 요한 성능 개선 사항은 다음과 같다.

1.4 이 배포판에 대하여

postgres는 무료이다. 본 설명서는 Postgres95 버전 1.0 에 대하여 설명하고 있다. 저자는 다음과 같은 플랫폼에서컴파일과 테스트를 거쳤다.

 

architecture

processor

Operation System

DECstation 3000
DECstation 5000
Sun4
HP - 9000/700 and 800
Intel

Alpha AX
MIPS
SPARC
PA-RISC
X86

OSF/1 2.1, 3.0, 3.2
ULTRIX 4.4
SonOS 4.1.3, 4.1.3_U1,Solaris 2.4
HP-UX 9.00 9.01 9.03
Linux 1.2.8 ELF

 

1.5 이 설명서의 개요.

지금부터 Postgres는 Postgres95를 의미하는 뜻으로 쓰일것이며, 이 설명서의 전반부 에서는 시스템에 대한 기본적이 개념과 Postgres 시스템을 시작하는 절차에 대해 설 명한다. 그리고 나서 Postgres의 데이터 모델과 SQL 에 대해서 개략적으로 살펴보고 조금은 수준이 높은 부분에 대해서도 설명하도록 한다. 다음으로 사용자 정의 형태의 연산자, 집합 함수를 추가함으로써, 어떻게 Postgres를 확장시킬수 있는지, 그리고 질의 언어와 프로그래밍 언어함수 양쪽에서도 그것들이 가능한지를 설명한다.

Postgres rule 시스템을 개략적으로 살펴본 다음, 그에 대한 자세한 내용은 부록에서 고유의 OS별로 시스템 확장을 포함하여 논의하는 것으로 결론을 내린다. 여러분들은 이미 유닉스와 C 프로그래밍에 숙달된 것으로 가정한다.