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