2. Postgres95의 동작방식에 대한 개념

설명을 계속하기 전에 기본적으로 Postgres 시스템이 동작하는 방식에 대하여 이해 를 하여야 한다. Postgres의 일부가 어떻게 반응하는지를 이해하면 다음 섹션이 다 소나마 명확해 질 것이다.

Postgres에서는 간단한 프로세스 대 사용자의 클라이언트/서버 모델을 사용한다. Po stgres 세션은 유닉스 프로세스로 구성되어 있다.

postmaster 는 하나의 호스트에 주어진 데이터 베이스 집합을 관리한다. 이러한 데 이터 베이스 집합을 설비 혹은 site 라 부른다. 전위의 응용 프로그램들이 데이터 베이스에 접근하려면 LIBPQ 라이브러리를 거쳐야 한다. 이 라이브러리는 사용자의 요구를 네트워크를 통하여 postmaster 에게 요청하고, po stmaster는 새로운 프로세스를 연결시켜 또 하나의 후위 서버를 만든다. 이러한 점 에서 전위의 프로세스와 후위의 서버는 postmaster 간섭없이도 통신을 할수가 있다. 그러므로 사용자의 요구를 기다리기 위해서 postmaster는 항상 실행중이다.

LIBPQ 라이브러리는 하나의 전위프로그램이 여러 후위 프로세스와 연결하는 것을 가 능하도록 해준다. 그러나 전위의 응용 프로그램들은 아직 단일 thread 프로세스이며 Multi-thread 방식의 전위/후위의 연결은 아직 LIBPQ에서 지원하지 않는다.

전위의 프로그램들은 어디서나 실행될수 있지만, postmaster 와 후위서버는 항상 같 은 곳에서 실행되어야 한다. 이러한 사항을 머리속에서 명심하고 있어야 하는데, 그 이유는 클라이언트에서는 접근가능한 파일이 데이터 베이스 서버에서는 불가능해 질 수도 있기 때문이다. 또한, postmaster와 postgres가 Postgres의 superuser 인지를 확인해야 한다. Postgres superuser는 특별한 사용자가 아니다. (단지 postgres라는 계정을 가진 사용자를 뜻한다.) 나아가서 Posgres superuser 는 절대로 root가 아니 다. 어떠한 경우라도 데이터 베이스와 관계가 있는 모든 화일은 Postgres supreuser 에 속해 있다.

주) 일반적으로 우리는 데이터 베이스를 로딩하고 셋팅할수 있는 권한을 가진 계정을 DBA(Data Base Adminstrator)계정이라 부른다.

일반적으로 모든 프로그램의 설치는 root 권한을 가지고 실행하도록 되어 있으나 DB 에서는 이러한 권한을 가진 계정을 따로 둔다. 이것은 워낙 데이터 베이스의 권한 이 방대하기 때문에 root 에게 주어지는 부담을 줄여 보자는 것과, DBA가 시스템의 루트 권한을 가지는 것을 방지하기 위한 목적으로 해석된다. 또한 데이터 베이스에 는 상당히 중요한 자료들이 많이 수록되어 있으므로 시스템의 루트권한이라 하더라 도 그 내용을 볼수 없도록 해야할 필요가 있다. 즉 물리적인 데이터 베이스의 내용 은 루트의 권한으로 지울수 있지만 내용은 볼수 없도록 해 야 할 필요성도 있다. 특히 상업용 DB인 오라클의 경우가 좋은 예라고 할수 있다.