티스토리 뷰
목차
FastAPI와 SQLAlchemy, 그리고 Pydantic을 이용한 토이 프로젝트를 진행하던 중 PostgreSQL을 사용해야 할 일이 생겼다.
그냥 MySQL을 사용했어도 되지만, SQLAlchemy와 궁합이 좋은 디비가 PostgreSQL이라길래.
찍먹 하듯이 잠깐 사용하고 넘어가게 될 테지만, 그래도 이렇게 만난 것을 기념으로 블로그에 정리를 해두기로 했다.
PostgreSQL, 시작해 보자.
Brief History
PostgreSQL의 독음은 '포스트그레스큐엘'이다. MySQL을 '마이 에스큐엘'이라고 부르는 것과 차이가 있는데,
포스트그레스큐엘의 개발 과정을 살펴보면 그 이유를 알 수 있다.
포스트그레스큐엘은 캘리포니아대학 버클리분교의 Ingres 프로젝트에서 시작되었다.
이후 문제점을 개선한 post-Ingres 프로젝트에 의해 최초의 사용화 버전이 1988년에 발표되었으며,
1994년에는 이 시스템에 SQL 해석기를 더해 Postgres95라는 이름을 붙였다가
1996년에 SQL의 추가 사실을 명시적으로 나타내기 위해 PostgreSQL이라는 이름으로 바꿔 지금에 이르렀다.
출처: https://ko.wikipedia.org/wiki/PostgreSQL
추가로 상징 동물은 코끼리인데, 오래 살며 기억력이 뛰어난 동물이라서 선택한 것이 아닐까.. 한다.
역사는 이쯤 하고, 포스트그레스큐엘의 특징에 대해 하나씩 알아보자.
ORDBMS
가장 먼저, 포스트그레스큐엘의 특징은 객체-관계형 데이터베이스 관리 시스템이라는 데 있다.
객체-관계형 DBMS란 이름 그대로 관계형 데이터베이스에 객체지향 개념을 결합시킨 시스템이다.
출처: https://en.wikipedia.org/wiki/Object%E2%80%93relational_database
줄여서 간단히 ORD(Object-Relational Database)라고 부르기도 하는 이 시스템은
객체지향적인 특성, 즉 클래스, 상속, 다형성, 캡슐화를 지원한다.
이를 이용해 개발자는 다양한 데이터베이스 객체와 메서드를 SQL 차원에서 임의로 만들어 사용할 수 있으며,
마치 프로그래밍 언어를 다루듯이 복잡하고 다양한 데이터 타입과 기능, 쿼리, 메서드를 손쉽게 만들어 사용할 수 있다.
Features
이외의 특징을 간략하게 정리하면 다음과 같다.
- MySQL에 비해 SQL 표준을 더 엄격히 지원한다.
- 쿼리가 복잡해질수록 성능이 뛰어나다.
- extension이라는 요소를 통해 자유로운 기능 추가가 가능하며, 커뮤니티를 통해 공유 역시 가능하다.
- 높은 수준의 동시성 처리를 지원한다.
- 비동기 처리를 지원한다.
- 병렬 인덱싱이 가능하다.
각각의 의미에 대해서 다 적자면 글이 끝나지 않을 것 같아 키워드만 적어놓는다.
Pros and Cons
마지막으로 위 특징을 포함해 장단점에 대해 정리하자.
- 장점
- 기본적으로 오픈소스이기 때문에 무료이다.
- 기능이 풍부하며 안정적이고, 동시성 처리와 데이터 무결성을 뛰어나게 보장한다.
- 다양한 커스터마이징과 확장기능을 지원한다.
- 단점
- 성능 오버헤드가 있을 수 있다.
- ORD 특성상 객체-관계 매핑을 포함한 설정, 사용이 복잡하기 때문에 학습 곡선이 높다.
- 공유 볼륨을 지원하지 않아 수평확장에서 1:1의 추가적인 볼륨을 요구한다. 즉, 수평 확장이 약하다.
Summary
포스트그레스큐엘은 현재 점유율 4위에 랭크되어 있으나 꾸준히 성장하는 디비이다.
애플과 야후, KT와 인스타그램 등에서 사용하고 있는 포스트그레스큐엘은
앞으로도 그 성장성이 기대할만한 듯하다.
물론 나는 기본적인 기능만 사용해서 사실상 MySQL과 크게 다르지 않게 사용하겠지만
언젠가 그 높다는 학습곡선에 도전해보고 싶다. PromQL과도 연동이 가능하다던데...
어쨌건 PostgreSQL 튜토리얼, 끝!
'Development > Database' 카테고리의 다른 글
[DB]Vector DB (0) | 2023.09.19 |
---|---|
[Database]NoSQL(mongoDB)에서 1:N, N:M 구현 (0) | 2023.07.09 |
[Database]mongoDB의 '_id', 또는 auto-increment ID (0) | 2023.07.03 |
[Database]MariaDB (0) | 2023.05.10 |
[Database]WebFlux에서 R2DBC 기본설정 (0) | 2023.05.06 |
[Database]SQLite (0) | 2023.04.07 |
- Total
- Today
- Yesterday
- 스프링
- Backjoon
- 세계일주
- 세계여행
- spring
- 세모
- 유럽
- 중남미
- Algorithm
- a6000
- Python
- 여행
- 동적계획법
- 자바
- 맛집
- 야경
- 유럽여행
- 파이썬
- 기술면접
- java
- 면접 준비
- 칼이사
- 백준
- 남미
- RX100M5
- BOJ
- 알고리즘
- 지지
- 리스트
- 스트림
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |