[Back-end] PostgreSQL

Geun·2022년 3월 15일
0

Back-end

목록 보기
25/74
post-custom-banner

PostgreSQL

PostgreSQL은 오픈소스 객체관계형 데이터베이스 시스템(ORDBMS)이다.
20년 정도의 긴 역사를 가지고 있으며, 다른 관계형 데이터베이스 시스템과는 달리 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능과 같이 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 제공한다.

구조

PostgreSQL은 클라이언트/서버 모델을 사용한다.
서버는 데이터베이스 파일들을 관리, 클라이언트 애플리케이션에서 들어오는 연결을 수용하며 클라이언트를 대신하여 데이터베이스 액션을 수행한다.
서버는 다중 클라이언트 연결을 처리할 수 있다. 서버는 클라이언트의 연결 요청이 오면 각 커넥션에 대해 새로운 프로세스를 fork한다.
클라이언트는 기존 서버와 간섭없이 새로 생성된 서버 프로세스와 통신하게 된다.


위 그림은 PostgreSQL의 프로세스 구조이다.


위 그림은 PostgreSQL의 쿼리 수행절차이다.

기능

PostgreSQL은 관계형 DMBS의 기능인 트랜잭션과 ACID(Atomicity, Consistency, Isolation, Durability)를 지원한다.
주요기능은 다음과 같다.

  • Nested transactions (savepoints)
  • Point in time recovery
  • Online / hot hackups, Parallel restore
  • Rules system (query rewrite system)
  • B-tree, R-tree, hash, GiST method indexes
  • Multi-Vesion Concurrency Control (MVCC)
  • Tablespaces
  • Procedural Language
  • Information Schema
  • I18N, L10n
  • Database, Column level collation
  • Array, XML, UUID type
  • Auto-increment (sequences)
  • LIMIT / OFFSET
  • Full text search
  • SSL, IPv6
  • Key / Value storage
  • Table inheritance

특징

  • 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

post-custom-banner

0개의 댓글