PostgreSQL은 오픈소스 객체관계형 데이터베이스 시스템(ORDBMS)이다.
20년 정도의 긴 역사를 가지고 있으며, 다른 관계형 데이터베이스 시스템과는 달리 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능과 같이 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 제공한다.
PostgreSQL은 클라이언트/서버 모델을 사용한다.
서버는 데이터베이스 파일들을 관리, 클라이언트 애플리케이션에서 들어오는 연결을 수용하며 클라이언트를 대신하여 데이터베이스 액션을 수행한다.
서버는 다중 클라이언트 연결을 처리할 수 있다. 서버는 클라이언트의 연결 요청이 오면 각 커넥션에 대해 새로운 프로세스를 fork한다.
클라이언트는 기존 서버와 간섭없이 새로 생성된 서버 프로세스와 통신하게 된다.
위 그림은 PostgreSQL의 프로세스 구조이다.
위 그림은 PostgreSQL의 쿼리 수행절차이다.
PostgreSQL은 관계형 DMBS의 기능인 트랜잭션과 ACID(Atomicity, Consistency, Isolation, Durability)를 지원한다.
주요기능은 다음과 같다.
Portable
PostgreSQL은 ANSI C로 개발되었으며 지원하는 플랫폼은 Windows, Linux, MAC OS/X, Unix와 같이 다양하다.
Reliable
트랜잭션 속성인 ACID에 대한 구현 및 MVCC
로우 레벨 locking 등이 구현된다.
Scalable
PostgreSQL의 멀티 버전에 대해 사용 가능하다.
대용량 데이터 처리를 위한 Table Partitioning과 Table Space 기능 구현이 가능하다.
Secure
DB 보안은 데이터 암호화, 접근 제어 및 감시 3가지로 구성된다.
호스트 기반의 접근 제어, Object-level 권한, SSL 통신을 통한 클라이언트와 네트워크 구간의 전송 데이터를 암호화 하는 등의 지원이 있다.
Recovery, Availability
Straming replication을 기본으로 동기식/비동기식 Hot standbt 서버 구축이 가능하다.
WAL Log 아카이빙 및 Hot back up을 통해 Point in time recovery가 가능하다.
Advanced
pg_upgrade를 통해 업그레이드 할 수 있다. 웹 또는 C/S 기반의 GUI 관리 도구를 제공, 모니터링 및 관리, 튜닝까지 가능하다.
사용자 정의 Procedural로 Perl, Java, Php등의 스크립트 언어 지원이 가능하다.
BSD 라이센스
라이센스에 대한 비용문제가 없다.
소스를 변경하고 그 소스를 숨긴채 재배포해도 법적으로 문제가 없다.
https://mangkyu.tistory.com/71
https://codecamp.tistory.com/2
https://d2.naver.com/helloworld/227936