📌 PostgreSQL은?
PostgreSQL은 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템의 하나이다. BSD 허가권으로 배포되며 오픈소스 개발자 및 관련 회사들이 개발에 참여하고 있다.
Website : www.postgresql.org
Technical documentation : www.postgresql.org/docs
📈 DB Trend Popularity

DB-Engines의 Trend Popularity에 따르면 PostgreSQL의 인기는 꾸준히 상승하여 상위 3개 DB(Oracle, MySQL, MsSQL)와의 격차를 줄이고 있다.
출처 : https://db-engines.com/en/ranking_trend
🔍 장점
Open Source
- PostgreSQL은 오픈 소스 프로젝트로써 높은 라이센스 비용이 요구되는 상용 DBMS인 Oracle 등과 달리 무료 이용이 가능하다.
- 커뮤니티의 활성화에 따른 빠른 문제 해결 및 기술발전이 가능하다.
최다 SQL 기능 지원
- SQL 표준 최다 준수
- 2023년 9월 릴리즈 된 16버전 부터 SQL : 2023 Core 적합성을 위한 179개 필수 기능 중 최소 170개를 준수한다.
- 다양한 운영체제 지원
- Microsoft Windows, MacOS, Linux(General/Generic), Linux(Ubuntu), Linux(Debian), Linux(SUSE Linux Enterprise Server & OpenSuSE), Linux(Red Hat Enterprises, CentOS, Fedora, Scientific, Oracle), Oracle Solaris, Fedora, BSD (FreeBSD, OpenBSD), Open Source Build
- 다양한 데이터 유형
- 기본 요소 : Integer, Numeric, String, Boolean
- 구조화 : Date/time, Array, Range / Multirange, UUID
- 문서 : JSON/JSONB, XML, Key-value (Hstore)
- 기하학 : Point, Line, Circle, Polygon
- 사용자 정의 : Composite, Custom Types
데이터 무결성
- UNIQUE, NOT NULL
- Primary Keys
- Foreign Keys
- Exclusion Constraints
- Explicit Locks, Advisory Locks
동시성, 성능
- 인덱싱 : B-tree, Multicolumn, Expressions, Partial
- 고급 인덱싱 : GIST, SP-Gist, KNN Gist, GIN, BRIN, Covering indexes, Bloom filters
- Sophisticated query planner / optimizer, index-only scans, multicolumn statistics
- Transactions, Nested Transactions
- Multi-Version concurrency Control (MVCC)
- Parallelization of read queries and building B-tree indexes
- Table paritioning
- All transaction isolation levels defined in the SQL standard, including Serializable
- Just-In-Time (JIT) compilation of expressions
신뢰성
- Write-ahead Logging (WAL)
- Replication : Asynchronous, Synchronous, Logical
- Point-In-Time-Recovery(PITR), active standbys
- Tablespaces
보안
- 인증 : GSSAPI, SSPI, LDAP, SCRAM-SHA-256, Certificate, ...
- 견고한 접근통제 시스템
- 행/열 수준 보안
- 인증서 및 추가 방법을 통한 다단계 인증
Extension
- 저장 함수 및 프로시저
- 절차적 언어 : PL/pgSQL, Perl, Python, ...
- SQL/JSON 생성자 및 경로 표현식
- 외부 데이터 래퍼 : 표준 SQL 인터페이스를 사용하여 다른 데이터베이스 또는 스트림에 연결
- 테이블을 위한 맞춤형 스토리지 인터페이스
- PostGIS를 포함하여 추가기능을 제공하는 많은 Extension
🔍 단점
- CRUD 성능이 상대적으로 좋지 않은 편으로 알려져 있다.
- 읽기 전용의 속도와 안정성이 필요한 경우 특정 SQL 기능을 포함하지 않은 MySQL이 더 가벼운 상태를 유지한다. 그러나, 부하가 많은 상황에서 복잡한 쿼리를 많이 실행할 경우는 PostgreSQl이 더 나은 선택일 수 있다.
🌟 REF