본문 바로가기
  • 시 쓰는 개발자
1일 1개념정리 (24년 8월~12월)/데이터베이스

1일1개 (7) - 코끼리DB

by poetDeveloper 2024. 8. 15.

1일 1개념정리 24.08.09.금 ~ 

 

큰 결정에 큰 동기가 따르지 않을 때도 있다. 하지만 큰 결심이 따라야 이뤄낼 수 있다.

무조건 무조건 1일 1개의 개념 정리하기 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!


#7. PostgreSQL

RDBMS라고는 MySQL밖에 모르는 나같은 친구들을 위한 ..... PostgreSQL을 소개한다. 신기한건 이거 읽을 때 "포스트그리 SQL"이 아니라, "포스트 그레스 큐엘"이라는 것이다 .... 외국에선 인기가 좀 많은 것으로 알고 있는데, 우리나라에선 MySQL이 대세인듯하다.

PostgreSQL은 객체 관계형 DB(ORDBMS)로, 오픈소스 DBMS이지만 많은 기능을 제공하고 있다. Oracle과 기능적으로 유사한 것이 많다.

 

주요 특징

RDB임에도, ORDBMS라서 관계형과 객체지향 기능을 결합한 하이브리드 DB이다. 따라서 구조화된 데이터 유형과, 복잡한 데이터 유형을 둘 다 관리할 수 있다.

  • ACID 지원 : PostgreSQL은 트랜잭션을 처리할 때 ACID를( Atomic, Consistent, Isolated, Durable ) 준수하며 처리하고 데이터의 무결성을 보장한다.
  • MVCC 기능 제공 : PostgreSQL은 동시 트랜잭션을 허용하는 다중 버전 동시성 제어(MVCC) 기능을 구현한 최초의 DBMS이다. 이를 통해 여러 사용자가 동일한 레코드를 한 번에 변경할 수 있다.
  • 확장성 : PostgreSQL은 사용자 정의 함수, 자료형, 인덱스, admin 등을 지원하여 사용자가 기능을 확장할 수 있다. 이 이로인해 PostgreSQL은 다양한 요구 사항을 충족시킬 수 있다.
  • JSON 및 XML 지원 : PostgreSQL은 NoSQL 기능도 제공하여 JSON 및 XML 데이터를 조작할 수 있다. 이 기능을 통해 구조화되지 않은 데이터와 구조화된 데이터를 함께 다룰 수 있게 된다.
  • 오픈 소스 : PostgreSQL은 완전한 오픈 소스로, 누구나 소스 코드를 수정하고 배포할 수 있고 이덕분에 지속적으로 발전하고 있다.

 

PostgreSQL의 MVCC

위에 특징에서 말한 MVCC가 뭘까 ?? "다중 버전" 동시성 제어(MVCC, Multi-Version Concurrency Control)는 PostgreSQL에서 트랜잭션의 동시성을 관리하는 핵심 기능이다. MVCC를 사용하면 여러 사용자가 동시에 DB에 접근하여 작업할 때, 충돌 없이 데이터를 읽고 쓸 수 있다.

  1. 버전 관리 : MVCC는 데이터의 각 변경 작업마다 새로운 버전을 생성한다. 하나의 레코드가 여러 버전을 가질 수 있고 각 트랜잭션은 자신이 시작될 때의 데이터 상태를 유지하며 작업을 수행한다.
  2. ★스냅샷 읽기 : 각 트랜잭션은 시작 시점의 데이터베이스 상태를 "스냅샷"으로 받아와 이 상태를 기준으로 데이터를 읽게 된다. 이를 통해 트랜잭션 중에 다른 트랜잭션이 데이터를 수정해도 현재 내 읽기에는 영향이 없다.
  3. 쓰기 작업 : 트랜잭션이 데이터를 수정하면 새로운 데이터 버전이 생성되고 이전 버전은 유지된다. 이 덕분에 다른 트랜잭션은 데이터의 이전 상태를 그대로 읽을 수 있다.

즉, 동시성 처리가 뛰어나다. MVCC 덕분에 PostgreSQL은 높은 동시성을 요구하는 환경에서도 안정적인 성능을 유지할 수 있고 여러 사용자가 동시에 DB 변경 작업을 수행할 수 있다. 정리해보면 다음과 같다.

동시성 처리가 매우 뛰어나서 데드락 발생 가능성을 줄이고, 스냅샷덕분에 일관된 읽기가 가능하다.

 

MySQL   VS   PostgreSQL 비교

일부 기능을 비교해봅시다. (모든 기능을 가져온건 아님)

기능적 비교

  MySQL PostgreSQL
RDBMS 관계형 데이터베이스 관리 시스템 (RDBMS) 객체 관계형 데이터베이스 관리 시스템 (ORDBMS)
ACID 규정 준수 대부분 제공, MyISAM은 ACID 지원 안함 완벽한 지원
백업 및 복구 제공 효율적인 백업 및 복구 기능
크로스 플랫폼 대응 UNIX 기반 시스템에 최적
SQL 데이터 유형 표준 유형 사용 가능 더 다양하고, 배열, hstore 포함

사용 예시 비교

  MySQL PostgreSQL
웹 애플리케이션 속도와 안정성 측면에서 좋음 복잡한 사용 사례에서 인기가 높다.
공간 데이터베이스 기본 공간 기능 PostGIS 확장 기능으로 사용할 수 있는 고급 공간 기능
엔터프라이즈 시스템 다양한 엔터프라이즈 애플리케이션에 적합 견고성과 확장성을 위해 사용
데이터 웨어하우스 데이터 웨어하우스*에 사용되지만 맞춤형 솔루션이 필요할 수 있다. 고급 데이터 유형이 있는 데이터 웨어하우스에 대한 지원 강화
임베디드 시스템 경량 버전 사용 가능 흔하지는 않지만 가능

 

* 데이터 웨어하우스 : 데이터 웨어하우스는 조직의 다양한 출처에서 수집된 "대규모 데이터"를 통합해 저장하고, 비즈니스 분석 및 의사 결정을 돕는 시스템이다. 데이터를 통합, 정제해 주제별로 조직하고, 변경되지 않는 형태로 저장해 분석한다. 이를 통해 데이터 분석, 리포팅 등을 효과적으로 수행한다.

반응형