메인 홈
home
사이트 맵 - 한눈에
home

PostgreSQL과 Supabase 관계 이해하기: 오픈소스 DB부터 클라우드 서비스까지

데이터베이스를 처음 접하시거나 Supabase를 사용하면서 PostgreSQL이 뭔지 궁금하셨나요?
왜 수많은 기업들이 PostgreSQL을 선택하고, Supabase는 왜 이걸 기반으로 서비스를 만들었을까요?
오늘은 PostgreSQL의 모든 것을 차근차근 풀어보겠습니다.

1. PostgreSQL이란 무엇인가?

PostgreSQL은 1996년부터 개발되어 온 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 쉽게 말해, 데이터를 체계적으로 저장하고 관리하는 프로그램이죠.
1.
무료인데 강력한 기능 PostgreSQL은 완전 무료 오픈소스입니다. 하지만 Oracle이나 SQL Server 같은 비싼 상용 데이터베이스와 비교해도 전혀 뒤지지 않는 기능을 제공합니다. ACID(원자성, 일관성, 격리성, 지속성) 속성을 완벽하게 지원하여 데이터의 무결성을 보장합니다.
2.
다양한 데이터 타입 지원 일반적인 숫자, 문자 데이터는 물론이고 JSON, XML 같은 비정형 데이터도 네이티브로 지원합니다. 지리공간 데이터를 다루는 PostGIS, 전문 검색 기능 등 수많은 확장 기능도 제공합니다.
3.
대용량 데이터 처리 능력 복잡한 쿼리와 대용량 데이터를 처리하는 데 탁월한 성능을 보입니다. 인덱싱, 파티셔닝, 병렬 처리 등 고급 기능을 통해 빠른 속도를 유지합니다.

2. PostgreSQL이 업계 표준이 된 이유

PostgreSQL은 오픈소스 데이터베이스의 사실상 표준으로 자리잡았습니다. 그 이유를 살펴보겠습니다.
1.
대기업들의 선택 Apple, Instagram, Reddit, Spotify 등 우리가 매일 사용하는 서비스들이 PostgreSQL을 사용합니다. 특히 스타트업과 개발자 커뮤니티에서는 MySQL과 함께 가장 인기 있는 데이터베이스입니다.
2.
SQL 표준 준수 PostgreSQL은 SQL 표준을 가장 충실히 따르는 데이터베이스 중 하나입니다. 다른 데이터베이스에서 배운 SQL 지식을 그대로 활용할 수 있어 개발자들이 선호합니다.
3.
활발한 커뮤니티 전 세계 수많은 개발자들이 PostgreSQL 발전에 기여하고 있습니다. 버그 수정, 새로운 기능 추가, 문서화 등이 지속적으로 이루어지며, 문제가 생겼을 때 도움을 받기도 쉽습니다.

3. SQL 쿼리가 처리되는 과정

PostgreSQL에서 SQL 쿼리를 입력하면 어떤 과정을 거쳐 결과가 나올까요? 마치 요리사가 주문을 받고 요리를 만드는 과정과 비슷합니다.
1.
파싱(Parsing) - 주문서 확인 SQL 쿼리를 받으면 먼저 문법이 맞는지 검사합니다. 마치 요리사가 주문서를 보고 "이런 메뉴가 있나?" 확인하는 것과 같습니다. 문법이 맞다면 파스 트리라는 구조로 변환합니다.
2.
분석(Analysis) - 재료 확인 테이블과 컬럼이 실제로 존재하는지, 사용자에게 접근 권한이 있는지 확인합니다. 요리사가 "재료가 있나? 이 손님이 주문할 수 있는 메뉴인가?" 확인하는 단계입니다.
3.
재작성(Rewriting) - 레시피 조정 뷰(View)나 규칙이 있다면 쿼리를 재작성합니다. 특별한 조리법이 있거나 대체 재료를 사용해야 할 때 레시피를 조정하는 것과 같습니다.
4.
계획(Planning) - 조리 순서 결정 쿼리 옵티마이저가 가장 효율적인 실행 계획을 세웁니다. 어떤 인덱스를 사용할지, 테이블을 어떤 순서로 조인할지 결정합니다. 요리사가 "어떤 순서로 조리하면 가장 빠르고 맛있을까?" 고민하는 단계입니다.
5.
실행(Execution) - 실제 조리 계획에 따라 실제로 데이터를 읽고 처리합니다. 디스크에서 데이터를 메모리로 가져와 필요한 연산을 수행하고 결과를 반환합니다.

4. Supabase와 PostgreSQL의 관계

Supabase는 PostgreSQL을 기반으로 하는 Backend-as-a-Service(BaaS) 플랫폼입니다. 이 관계를 자동차에 비유하면 이해하기 쉽습니다.
1.
PostgreSQL은 엔진, Supabase는 완성차 PostgreSQL이 자동차의 엔진이라면, Supabase는 그 엔진을 사용해 만든 완성차를 렌트해주는 회사입니다. 엔진(PostgreSQL)은 무료로 구할 수 있지만, 직접 차를 만들고 관리하는 것은 복잡하고 어렵습니다.
2.
Supabase가 대신 해주는 일
서버 설치와 설정
보안 관리와 업데이트
자동 백업과 복구
성능 모니터링과 최적화
서버 확장과 부하 분산
3.
추가 기능 제공 Supabase는 PostgreSQL의 모든 기능을 그대로 제공하면서도, 실시간 데이터 구독, 사용자 인증, 파일 스토리지 등의 추가 기능을 덧붙입니다. 개발자가 데이터베이스 관리보다 애플리케이션 개발에 집중할 수 있도록 돕습니다.

5. PostgreSQL 설치 시 접속 정보 이해하기

PostgreSQL을 로컬에 설치할 때 비밀번호만 물어보고 다른 정보가 없어서 당황하셨나요? 기본값으로 설정되어 있기 때문입니다.
1.
기본 접속 정보
호스트: localhost (또는 127.0.0.1)
포트: 5432 (PostgreSQL 기본 포트)
사용자명: postgres (기본 관리자 계정)
비밀번호: 설치 시 입력한 비밀번호
데이터베이스: postgres (기본 데이터베이스)
2.
터미널에서 접속하기
psql -h localhost -p 5432 -U postgres
Shell
복사
이 명령어로 PostgreSQL에 접속할 수 있습니다. GUI 도구(pgAdmin, DBeaver 등)를 사용할 때도 같은 정보를 입력하면 됩니다.
3.
Supabase와 로컬 PostgreSQL의 차이 로컬 PostgreSQL의 비밀번호와 Supabase 데이터베이스 비밀번호는 완전히 별개입니다. 로컬은 여러분의 컴퓨터에서만 사용하는 것이고, Supabase는 클라우드에 있는 별도의 데이터베이스입니다.

6. Supabase 백업을 위한 PostgreSQL 활용

Supabase 데이터를 백업하려고 PostgreSQL을 설치하는 경우가 많습니다. 하지만 전체 서버가 필요한 것은 아닙니다.
1.
필요한 도구들
pg_dump: 데이터베이스 백업 도구
pg_restore: 백업 파일 복원 도구
psql: 커맨드라인 클라이언트
2.
클라이언트 도구만 설치하기 Windows에서는 "PostgreSQL Client"나 "pgAdmin"만 설치하는 옵션이 있습니다. 전체 서버를 설치할 필요 없이 이 도구들만으로도 Supabase 데이터베이스에 원격 접속해서 백업을 받을 수 있습니다.
3.
백업 명령어 예시
pg_dump -h db.xxxx.supabase.co -p 5432 -U postgres -d your_database > backup.sql
Shell
복사
Supabase 대시보드에서 제공하는 접속 정보를 사용해서 백업을 받을 수 있습니다.
PostgreSQL과 Supabase의 관계를 이해하셨나요?
PostgreSQL은 강력한 오픈소스 데이터베이스이고, Supabase는 이를 편리하게 사용할 수 있도록 만든 클라우드 서비스입니다.
로컬 개발이나 백업 작업을 위해 PostgreSQL을 설치할 때는 용도에 맞는 도구만 선택해서 설치하면 됩니다. 데이터베이스가 복잡해 보여도 하나씩 이해하다 보면 어렵지 않습니다!