CS/DB

PostgreSQL

졔졔311 2025. 3. 6. 09:30
728x90
반응형

프로젝트를 진행하던 중, 어떤 DB를 사용할 것인지 논의하다가 PostgreSQL을 찾게 되었다.

서버를 Django를 사용하기로 했는데 찾아보니 Django와는 PostgreSQL을 함께 사용하는 경우가 많은 것 같았다.

내가 알던 DBMS는 mySQL, Oracle, mongoDB, Altibase 정도였기에, PostgreSQL에 대해 간략하게 조사하였다.

 

PostgreSQL?

오픈소스 관계형 데이터베이스(RDBMS)로, 확장성과 안정성이 뛰어나다는 특징이 있다.

Oracle이나 MySQL과 유사하지만, JSON, XML, 배열, **GIS 데이터도 저장할 수 있어 NoSQL 기능도 일부 제공한다.

 

** GIS 데이터란?

Geographic Information System 지리정보시스템.

GPS와 원격 감지 기술을 포함하는 더 넓은 범위의 시스템으로, 지리 공간 데이터를 캡처, 저장, 분석, 관리하고 시각화를 생성할 수 있다.

 

PostgreSQL의 특징

- ACID 트랜잭션 완벽 지원 : 데이터 무결성을 보장하고 안정적으로 처리 가능

- 확장성 : PL/pgSQL, Python, JavaScript 등의 프로시저 언어를 지원해 확장 가능

                사용자 정의 함수, 데이터 타입, 인덱스 등 추가 가능

                JSON, XML 같은 문서 기반 데이터 저장도 가능

- 복제 및 분산 처리 지원 : master-slave 복제 및 Streaming Replication을 지원하고, Sharding(수평 분할) 기능을 통해 대규모 데이터 처리 가능

- 고급 SQL 기능 지원 : 윈도우 함수, Common Table Expression(CTE), 파티셔닝, 서브쿼리 등 고급 SQL 기능 완벽 지원

                                     JSONB 타입을 통해 JSON 데이터를 빠르게 검색 가능

 

따라서 대규모 데이터의 안정적 처리JSON 데이터와 관계형 데이터 함께 저장 시, 고성능 트랜잭션이 필요한 금융, 분석 시스템 환경, 기업 환경에서 오라클을 대체할 오픈소스 DB 필요 시 PostgreSQL을 사용할 수 있다.

 

DBMS 비교

비교 항목 PostgreSQL MySQL Oracle
라이선스 오픈소스(BSD) 오픈소스(GPL) 상용(비싼 라이선스)
확장성 매우 뛰어남(사용자 정의 타입, 함수) 제한적 매우 뛰어남(기업용 DB)
JSON 지원 JSONB로 강력한 지원 JSON 타입 지원 XML을 주로 지원
트랜잭션 지원 ACID 완벽 지원 기본적 ACID 지원 강력한 ACID 지원
복제 및 클러스터링 스트리밍 복제, 논리적 복제 지원 기본 복제, Galera 클러스터 고급 클러스터링(RAC)

 

 

추가적으로, Django에서는 PostgreSQL을 공식 지원한다.

django.contrib.postgres 패키지가 제공하는 추가 기능 활용이 가능하므로,

PostgreSQL이 유리할 것이라고 생각해 사용하기로 결정하였다.

 

쉽게 관리하기 위해,

Pgadmin4를 설치해 GUI 환경을 제공받아 PostgreSQL을 쉽게 확인할 수 있다.

728x90
반응형

'CS > DB' 카테고리의 다른 글

[SQLite] sqlite란?  (0) 2025.02.25
[MySQL] 5. 튜플 값 변경하기 (UPDATE)  (0) 2024.04.23
[MySQL] 4. 튜플 삭제하기 (DELETE)  (0) 2024.04.23
[MySQL] 3. 데이터 삽입하기 (INSERT)  (0) 2024.04.23
[MySQL] 2. table 생성하기  (0) 2024.04.22