PostgreSQL

teal·2023년 8월 13일
0

DBMS

목록 보기
1/4

보통 내가 선호하는 백엔드 스택은 다음과 같다
기본적으로 파이썬을 사용하고

Web Framework : Django
WAS : Gunicorn
WEB : Nginx
DB : Postgresql

뭐 여기에서 CI/CD, Docker, Lambda, EC2 등 데브옵스와 같은 분야도 들어갈 수 있겠지만 기본적으로 위 4가지를 통해 백엔드 구성이 돌아가게 된다. 여기서는 PostgreSQL에 대해서 알아본다.

어떤 경우에는 이렇게 생각할 수도 있을 것이다. 아니 어차피 Django에서 ORM으로 쿼리 요청해서 API를 구현할건데 굳이 PostgreSQL에 대해서 알고 사용해야하나?

중요한 비즈니스 로직에 걸리는 문제가 아니면 사실 굳이 사실 다른 DBMS와 엄청나게 큰 차이가 없는 것은 사실이다. 그런데도 굳이 PostgreSQL을 선택해서 백엔드 스택으로 채용해서 사용한다면 어떤 부분들이 다른 DBMS와 차이점이 존재하는지, 내가 사용하는 기능들이 적어도 어떤 방식으로 구현되어 있는지는 알아야 하지 않겠는가? 그리고 한번 알아두면 다른 DBMS에도 공통적으로 적용되는 이야기가 대부분이므로 한번쯤 정리하고 지나가면 좋을듯하다.

우선 내가 Postgres를 쓰는 이유는 다음과 같다.

  1. 많은 익스텐션
    • 추가적으로 필요한 익스텐션을 붙여서 사용해보진 않았으나 개인적으로 개발을 진행하면서 느꼈던 아쉬운점이 있었다. DynamoDB에서 각 row에 위 경도가 저장되어있었고 특정 위경도를 기준으로 가장 가까운 순으로 row들을 쿼리하는 것이 필요했는데 DynamoDB상에서 그런식으로 쿼리를 지원해주지도 않았고 다른 DBMS, ES를 구축해서 사용하기도 애매한 상황이여서 Geohash를 사용하여 정렬을 진행했으나 좀 아쉬움이 남았던 기능이기도 했다.
      • 그런데 이부분을 Postgresql에서는 PostGIS와 같은 익스텐션을 통해 손쉽게 처리가 가능해진다. ST_Distance, ST_DWithin와 함수를 통해 두 지점간의 거리 등을 쉽게 구할수 있다고 한다.
  2. 특이한(?) 자료형
    • Array, JSON, Range, tsvector 등의 자료형을 지원한다.
      • tsvector는 링크를 통해서 장고를 통해 간단히 사용 가능한 풀 텍스트 서치를 지원한다! 간단한 서치를 위해 굳이 ES 등의 검색엔진을 고려하거나 그냥 무식하게 like쿼리를 안날려도 된다!
  3. 그냥 장고가 PostgreSQL을 좋아한다.
    • Docs만 봐도 그냥 대놓고 postgres를 좋아하며 장고 차원에서 지원도 제일 많이하는 DBMS이다. django.contrib.postgres 음.. 그냥 다른거말고 postgres 쓰라는거 같기도 하다 ㅋㅋㅋㅋ

원래는 ArrayField 한번만 써보려다 PostgreSQL 위주로 사용하게 되었는데 Django도 계속 사용하는걸 보면 인연인가..?

profile
고양이를 키우는 백엔드 개발자

0개의 댓글