백엔드/PostgresQL

[PostgreSQL] PostgresSQL이란?

Koras02 2022. 4. 3. 13:49

PostgresQL이란?

postgreSQL은 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)으로, Enterprise급 DBMS의 기능과 차세대 DBMS에서

볼 수 있을 법한 기능들을 제공합니다. 약 20여년 동안 오랜 역사를 갖고 있는 PostgreSQL은 다른 관계형 데이터베이스 시스템과

달리 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능 등 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 

 

기능을 제공함으로써 마치  새로운 하나의 프로그래밍 언어처럼 무한한 기능을 손쉽게 구현할 수 있습니다.

PostgreSQL은 무료로 제공되고 있으며 1985년 개발을 시작해 1996년에 첫 출시가 된 언어입니다.

Oracle(오라클) 개발자들이 대거나와 PostgreSQL 개발에 합류해 orcle과 유사합니다.

2022년을 기준으로 현재까지도 꾸준히 점유율을 유지하고 있는 DB입니다. 

 

ORDBMS란?

객체 지향 데이터베이스 시스템과 관계형 데이터베이스 시스템을 기반으로하며

복잡한 객체가 중심 역할을 해주는 DBMS입니다.

 

RDBMS와의 차이점으로는 데이터의 저장 및 접근 방법에 대한 관점의 차이가 있으며 

RDBMS는 행과 열이 있는 하나 이상의 관계 또는 테이블의 모음입니다.

ORDBMS는 데이터가 객체로 저장된 것처럼 작동합니다.

 

PostgreSQL 구조

PostgreSQL은 클라이언트/서버 모델을 사용하고 있습니다. 서버는 데이터베이스 파일들을 관리하며, 클라이언트 

애플리케이션으로부터 들어오는 연결을 수용하고, 클라이언트를 대신해 데이터베이스 액션을 수행합니다. 

 

서버는 다중 클라이언트 연결을 처리할 수 있는데, 서버는 클라이언트의 연결 요청이 올때 각 커넥션에 대해 새로운 

프로세스를 fork합니다. 그리고 나서 클라이언트는 기존 서버와의 간섭 없이 새로 생성된 서버 프로세스와 통신하게 됩니다.

PostgreSQL 기능 

PostgreSQL은 관계형 DBMS의 기본적인 기능인 트랜젝션(Transaction)과 

ACID(Atomicty,Consistency,lsolation, Durability)을 지원합니다. ANSI:2008 구격을 상당 부분 만족시키고 있으며,

 

전부를 지원하는 것을 목적으로 계속해서 기능들을 추가해 나가고 있습니다. PostgreSQL은 기본적인 

신뢰도와 안정성을 위한 기능 뿐만 아닌 진보적인 기능이나 학술적 연구를 위한 확장 기능도 많이 가지고 있는데 

 

PostgreSQL의 주요 기능을 열거해보면 아래와 같습니다.

  • Nested transactions (savepoints)
  • Point in time recovery
  • Online/hot backups, Parallel restore
  • Rules system (query rewrite system)
  • B-tree, R-tree, hash, GiST method indexes 
  • Multi-Version Concurrency Control (MVCC)
  • Tablespaces
  • Procedural Language 
  • information Schema 
  • I18N, L10N
  • Database & Column level collation
  • Array, XML, UUID type 
  • Auto-increment (sequences),
  • Asychronous replication
  • LIMIT/OFFSET
  • Full text search 
  • SSL, IPv6
  • Key/Value storage 
  • Table inheritance
항목 제한사항
최대 DB 크기(Database Size) 무제한
최대 테이블 크기 (Table Size) 32TB
최대 레코드 크기 (Row Size) 1.6TB
최대 컬럼 크기 (Field Size) 1GB
테이블당 최대 레코드 개수(Rows per Table) 무제한
테이블당 최대 컬럼 개수(Columns per Table) 250~1600개
테이블당 최대 인덱스 개수(indexes per Table) 무제한

PostgreSQL의 특징 

  • Portable
    • PostgreSQL은 ANSI C로 개발되었고, 지원하는 플랫폼의 종류로 Windows(윈도우),Linux(리눅스),Mac(맥), Unix 등 
      다양한 플랫폼에서 지원한다.
  • Reliable
    • 트랜잭션 속성인 ACID에 대한 구현 및 MVCC
    • low Level 라킹 등이 구현됨
  • Scalable
    • PostgreSQL의 멀티 버젼에 대해 사용 가능
    • 대용량 데이터 처리를 위한 Table Partitioning과 Tables Space 기능 구현 가능 
  • Secure
    • DB 보안은 데이터 암호화, 접근 제어 및 갑시의 3가지로 구성 
    • 호스트-기반의 접근 제어 방식, Object-Level 권한, SSL 통신을 통한 클라이언트와 네트워크 구간의 전송 데이터
      암호화 지원
  • Recovery & Availability
    • Streaming Replication을 기본으로, 동기/비동기 방식 Hot Standbt 서버 구축가능
    • WAL Log 아카이빙 및 Hot Back up을 통한 Point in time recovery 가능
  • Advanced 
    • pg_upgrade를 통해서 postgreSQL을 업그레이드 할 수 있으며, 웹 또는 C/S 기반 GUI 관리 도구를 제공하여 모니터링
      및 관리는 물론 튜닝까지 가능
    • 사용자 정의 Procedural로 Perl, Java,PHP 등의 스크립트 언어 지원 가능 

PostgreSQL의 장점과 단점

장점

  • 라이센스에 대한 비용 문제가 없음
    • BSD 라이선스이며, 소스를 변경하고 그 소스를 숨긴 채 재배포 해도 법적으로는 문제가 없다.
  • 오래된 오픈소스로써의 안전성
    • 가볍게 돌아가면서 대용량 처리에도 큰 문제가 없고 표준 SQL을 잘 따르고 있다.
  • 발전중인 데이터베이스
    • 무료 SQL이지만 꾸준히 업데이트 되고 있으며 베타 버전과 안정화 버전으로 나뉨
  • 독창적인 자료형 및 문법
    • PostgreSQL만의 독창적 자료형이 있다.
    • jsonb.json 형식으로 저장이 가능하고 ILIKE 기능으로 대소문자 상관없이 매치되는 글자를 찾을 수 있다.
  • oracle에 버금가는 통계 함수
    • oracle에 버금가는 통계함수 제공

단점

  • CURD 성능이 RDBMS 보다 좋지 않다.
    • CRUD 성능이 RDBMS 보다는 조금 떨어지는 성능
  • 다른 DB로 migration 하기 쉽지 않다.

그럼에도 사용해야 하는 이유?

  • 무료로 제공되면서 무료로 제공하는 타 DBMS에 비해서는 트랜젝션 및 ACID가 월등이 좋다.
  • 오래된 DBMS인 만큼 안정성이 높고 신뢰성을 가지고 있다.
  • 꾸준한 기능 추가와 발전 가능성을 보여주고 있다.
  • JSONB, ARRAY 같은 타입으로 획기적으로 확장성을 늘릴 수 있고, 인덱싱 작업 역시 효율적으로 
    할 수 있다.
  • vacumn이라는 작업을 통해 데이터를 좀 더 효율적으로 관리할 수 있다.

참고 자료

 

[PostgreSQL] PostgreSQL이란?

이번에는 오픈소스 객체-관계형 데이터베이스 시스템인 PostgreSQL에 대해서 알아보도록 하겠습니다. 1. PostgreSQL이란? [ PostgreSQL이란? ] PostgreSQL은 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)

mangkyu.tistory.com

 

 

DB - PostgreSQL란?

목차 PostgreSQL이란? 장점 단점 사용해야 되는 이유? 마치며

velog.io