진행에 앞서, 기초적인 PostgreSQL 시스템의 구조를 이해해야합니다. PostgreSQL의 각 부분들이 어떻게 상호작용하는가에 대한 이해하는 것, 이것이 이 장의 목표입니다.
데이터베이스 전문용어로, PostgreSQL은 클라이언트/서버 모델을 사용하고 있습니다. 하나의 PostgreSQL 세션(작업)은 다음과 같은 프로세스들(프로그램들)의 상호 작동으로 구성됩니다:
서버 프로세스, 이것은 데이터베이스 파일을 관리하고,
클라이언트 응용 프로그램들이 서버에 연결을 요청할 때,
그 요청들을 처리(수락하거나 거부하는 일)하고,
클라이언트들이 데이터베이스를 사용할 수 있도록 기반 작업들을
준비합니다. 이 프로세스의 이름은 postgres
입니다.
클라이언트 프로세스, 이것은 데이터베이스를 사용하려는 사용자 측 응용 프로그램을 말합니다. 클라이언트 응용 프로그램은 자연적으로 매우 다양한 형태를 띄고 있습니다. 어떤 것은 텍스트 기반의 프로그램이기도 하고, 어떤 것은 그래픽 응용 프로그램이기도 하고, 어떤 것은 웹서버를 통해서 웹페이지로 보여지기도 하지요. 몇 클라이언트 프로그램들은 이미 PostgreSQL 패키지 안에 포함되어서 배포되기도합니다. 이것들은 대부분 사용자들이 직접 개발한 것들입니다.
클라이언트/서버 환경의 프로그램들은 대부분 그렇듯이, PostgreSQL에서도 클라이언트와 서버가 서로 다른 호스트일 수 있습니다. 이런 경우에는 서로간의 통신이 TCP/IP 네트워크 기반 아래서 이루워집니다. 이 부분은 아주 중요한 부분을 시사하고 있습니다. 클라이언트와 서버가 서로 다를 경우에는 클라이언트에서 접근하고자 하는 데이터베이스 파일에 대해서 직접적으로 접근할 수 없음을 의미합니다. 즉, 클라이언트에서 접근 할 수 있는 파일은 그 클라이언트가 실행되고 있는 호스트의 파일이지 서버가 가동 중인 호스트의 파일이 아님을 알고 있어야합니다.
PostgreSQL 서버는 사용자의 다중 접속을 위해서 각 접속에 대해서
새로운 프로세스를 할당합니다(전문적인 용어로 “forks”를 이용한 하위 프로세스
생성이라고도 하지요). 이 방법은 클라이언트와 새로 만들어진 서버 프로세스간의
작업이 있을 때, 서버의 상위 프로세스 격인 postgres
프로세스의
간섭 없이 작업이 이루워짐을 의미합니다. 종합하면, postgres
프로세스는
서버 호스트에서 항상 실행되고 있으면서, 클라이언트의 접속 요청을 처리해서
새로운 하위 서버 프로세스를 만드는 일을 합니다. 물론 이 모든 작업들은
사용자가 관심을 가지고 살펴보지 않는 이상 서버 차원에서 자동으로 이루워지는
부분입니다. 단지 여기서는 기초적인 개념 설명을 위해서 언급했습니다.