PostgreSQL과 MySQL의 비교 및 Docker 컨테이너 설치 가이드

PostgreSQL과 MySQL의 비교 및 Docker 컨테이너 설치 가이드

PostgreSQL 개요 🐘

PostgreSQL은 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, 1996년에 개발이 시작되었고 1997년 첫 번째 오픈소스 버전이 공개되었습니다. 이 데이터베이스는 강력한 성능과 안정성을 자랑하며, 다양한 개발 환경에서 신뢰받고 있습니다. 특히, 대규모 데이터셋 처리, 고급 쿼리 성능, 그리고 NoSQL과의 호환성 덕분에 점점 더 많은 기업과 개발자들이 PostgreSQL을 선택하고 있습니다.

PostgreSQL 로고와 상징 🌟

PostgreSQL의 로고인 코끼리는 강력함, 신뢰성, 그리고 우수한 기억력을 상징합니다. 이러한 특성은 PostgreSQL의 특징과 완벽히 일치하며, 데이터 처리의 신뢰성과 안정성을 강조합니다.

성장과 수상 이력 🏆

  • 2020년 올해의 데이터베이스(Database of the Year)로 선정
    • 2021년과 2022년에는 Snowflake가 수상
  • 빠르게 성장하는 DBMS로, PostgreSQL은 2020년 이후 꾸준히 시장 점유율을 확대하고 있습니다.

PostgreSQL을 사용하는 주요 기업

Apple, Cisco, Facebook, Red Hat 등 글로벌 기업들이 PostgreSQL을 선택하며, 빅데이터 처리, 고급 애플리케이션 개발, 그리고 높은 안정성을 요구하는 서비스를 구현하고 있습니다.


PostgreSQL vs MySQL 비교 🔍

PostgreSQL과 MySQL은 둘 다 널리 사용되는 오픈소스 데이터베이스 시스템이지만, 사용 목적과 기능에서 차이가 있습니다. 사용자는 자신의 프로젝트 요구사항에 따라 적합한 시스템을 선택해야 합니다.

데이터 처리 용량 비교 📊

항목PostgreSQL 13MySQL 8
최대 DB 크기무제한무제한
최대 테이블 크기32TB32TB
최대 레코드(row) 크기16TB512TB
테이블 당 최대 컬럼 개수1,6001,017

PostgreSQL은 테이블 당 최대 컬럼 개수다양한 데이터 유형 지원 측면에서 우위를 가지고 있으며, 대규모 데이터 처리와 복잡한 데이터 구조를 다룰 때 유리합니다.


주요 기능 및 특징 비교 💡

기능 및 특징MySQLPostgreSQL
데이터베이스 유형RDBMSORDBMS
ACID 규정 준수대부분 엔진이 지원완벽 지원
백업 및 복구기본 제공효율적이고 고급화된 백업 및 복구 기능
확장성 및 플러그인다양한 스토리지 엔진 지원PostGIS 등 강력한 확장성 제공
외부 키 지원일부 미지원완벽 지원
인덱싱기본 인덱싱 사용 가능고급 인덱싱(GIN, GiST) 제공
SQL 데이터 유형표준 SQL 유형다양한 데이터 유형(hstore, 배열 등)
NoSQL 지원일부 제한적JSONB, XML 등 고급 NoSQL 형식 지원

PostgreSQL의 주요 장점

  1. ACID 규정 준수: 모든 데이터 처리에서 안정성과 신뢰성을 보장합니다.
  2. NoSQL 지원: JSONB, XML 등 다양한 형식을 지원해 유연한 데이터 처리가 가능합니다.
  3. 고급 인덱싱 기법: GIN과 GiST 인덱스 덕분에 복잡한 검색 및 질의 처리에서 탁월한 성능을 발휘합니다.

MySQL의 주요 장점

  1. 스토리지 엔진의 유연성: 다양한 스토리지 엔진과 호환되어 맞춤형 데이터베이스 설정이 용이합니다.
  2. 단순한 읽기 전용 작업에 최적화: 빠르고 간편한 데이터 조회를 제공합니다.

PostgreSQL과 MySQL 선택 기준 🛠️

PostgreSQL과 MySQL은 각각 고유의 강점을 가지고 있어 상황에 따라 적합한 시스템을 선택해야 합니다.

PostgreSQL을 선택해야 할 때MySQL을 선택해야 할 때
대규모 데이터베이스 관리스토리지 엔진의 유연성이 필요할 때
복잡한 읽기-쓰기 작업 관리단순한 읽기 작업이 주가 될 때
NoSQL 지원 필요교육용 또는 소규모 프로젝트용
REST API 지원 필요낮은 하드웨어 리소스로 운영할 때

Docker를 활용한 PostgreSQL 설치 가이드 🐳

Docker를 활용하면 PostgreSQL 설치가 쉽고 간편해집니다. 몇 가지 명령어만으로 PostgreSQL 환경을 구축할 수 있습니다.

1. PostgreSQL 도커 이미지 다운로드

bash복사편집docker pull postgres:latest

특정 버전을 설치하려면 버전 태그를 명시합니다:

bash복사편집docker pull postgres:<버전>

2. PostgreSQL 컨테이너 생성 및 실행

bash복사편집docker run -p 5432:5432 --name test-postgres \
  -e POSTGRES_PASSWORD=<password> \
  -e TZ=Asia/Seoul \
  -v /home/user/pgdata:/var/lib/postgresql/data \
  -d postgres:latest

옵션 설명

  • 포트 매핑: 기본 포트 번호 5432 사용
  • 컨테이너 이름: test-postgres로 지정
  • 환경 변수:
    • POSTGRES_PASSWORD: 데이터베이스 비밀번호 설정
    • TZ: 타임존 설정 (예: Asia/Seoul)
  • 볼륨 설정: 데이터를 영구적으로 저장하기 위해 로컬 디렉토리(/home/user/pgdata)를 컨테이너 내부 디렉토리(/var/lib/postgresql/data)와 연결
  • 백그라운드 실행: -d 옵션을 사용해 백그라운드에서 실행

3. PostgreSQL 컨테이너 접속

bash복사편집docker exec -it test-postgres /bin/bash

4. PostgreSQL 초기 설정 및 데이터베이스 생성

PostgreSQL CLI 접속

bash복사편집psql -U postgres

데이터베이스 생성

sql복사편집CREATE DATABASE test_db;

계정 생성 및 권한 부여

sql복사편집CREATE ROLE test_user WITH LOGIN PASSWORD 'test1234';
ALTER USER test_user WITH CREATEDB;
ALTER USER test_user WITH SUPERUSER;

유저 및 권한 확인

sql복사편집\du

추가 주의사항 ⚠️

  1. 대소문자 구분: PostgreSQL은 대소문자를 구분하며, SQL 명령어 작성 시 주의해야 합니다.
  2. SQL 문법 차이: PostgreSQL에서는 IFIFNULL 대신 CASE 문을 사용해야 합니다.
  3. UTF-8 변환 필요 없음: PostgreSQL은 기본적으로 UTF-8을 지원하므로 추가 설정이 필요 없습니다.