PostgreSQL과 MySql의 차이

Dayon·2024년 5월 24일
1

DB를 선택을 할때에는 어떤 프로젝트를 진행하는지, 요구사항에 맞춰 선택하고는 한다. 이때, 프로젝트를 진행할때 대표적으로 사용되는 MySQL과 PostgreSQL의 차이를 알아보자.

PostgreSQL과 MySQL의 공통점

  • SQL 언어를 인터페이스로 사용하여 데이터를 읽고 편집 가능
  • 데이터 백업, 복제, 엑세스 제어 기능이 내장되어 있음
  • 무료 오픈소스, 대규모의 커뮤니티 지원

MySQL

소개

  • 오라클에서 관리되는, 가장 많이 사용되는 관계형 데이터베이스 관리 시스템(RDBMS)
  • 주로 웹 애플리케이션에 대해 가볍고 효율적이며 안정적인 상태를 유지할 수 있다.
  • 대규모의 데이터 셋을 빠르고 효율적으로 처리하기 때문에 대량의 데이터를 저장하고, 엑세스 해야 하는 기업에서 인기가 많다.
    • Facebook, Netflix, Github 및 대형 기업들은 MySQL을 사용하고 있다.

장점 및 사용해야 하는 경우

  • 표준 SQL을 완전히 준수하지 않는 대신 속도와 안정성을 위해 디자인 되었다.
    • InnoDB 및 NDB 클러스터 스토리지 엔진에서만 ACID를 준수한다.

      ACID = 트랜젝션의 원칙(원자성, 일관성, 고립성, 지속성) 을 통해 예상치 못한 오류가 발생한 후에도 데이터베이스를 유효한 상태로 유지하는 데이터 베이스 속성

    • 속도를 우선순위로 지정해, 매우 빠른 속도를 보여준다

  • MySQL을 사용하는 애플리케이션은 별도의 데몬 프로세스를 통해 데이터베이스에 엑세스 한다.
  • MVCC(다중 버전 동시성 제어)를 제공한다.
  • 읽기 전용 명령을 관리하는데 선호된다.
  • 보안 수준이 높은 데이터베이스.
    • MySQL은 설치 시 암호 보안 수준을 설정할 수 있고 루트 사용자의 암호를 정의하며 익명 계정을 제거하고 모든 사용자가 접근할 수 있는 기본 테스트 데이터베이스를 젝거해 보안 향상에 도움이 되는 스크립트와 함께 설치

PostgreSQL

개요

  • 오픈소스 객체 관계형 데이터베이스 관리 시스템(ORDBMS) : 관계형과 객체 지향 기능을 결합한 하이브리드 데이터베이스 시스템
  • “카탈로그 기반” 운영 방식, 다른 DBMS보다 훨씬 더 많은 기능을 갖추었다.
  • ACID 준수, 높은 동시 트랜잭션을 달성하고 있다.
  • 사용자 정의 가능, 뛰어난 확장성과 유연성으로 다양하고, 복잡한 데이터 유형을 관리하는데 적합하다.

장점 및 사용해야 하는 경우

  • 읽기-쓰기 작업, 대규모 데이터 세트 및 복잡한 퀀리를 관리하는 경우 선호된다,
  • 읽기 전용 작업에서는 선호되지 않는다.
  • 초대형 데이터베이스를 관리해야 할때
  • 엄격한 SQL 표준 준수로 잘 알려져 있다.
    • 최고수준의 ACID 규정 준수

차이점

  • MySQL은 PostgreSQL 보다 기능이 적지만, 그 덕분에 읽기 전용 쿼리에서 더 가볍고 안정적이며 빠른 처리 속도를 유지한다.
    • Spotify, IMDB, Apple, Cisco..
  • MySQL은 대소문자를 구분하지 않지만, PostgreSQL은 대소문자를 구분한다.
  • MySQL에서 IF 및 IFNULL 문을 사용해도 아무런 문제가 되지 않는다. PostgreSQL에서는 IF 및 IFNULL 문은 사용할 수 없습니다. 대신 CASE 문을 사용한다.
  • PostgreSQL 경우 문자 집합과 문자열을 UTF-8을 허용하지 않는다. 변환할 필요가 없다.
  • 인덱싱 방법
  • MySQL 인덱스 :
    • INDEX, FULLTEXT, PRIMARY KEY, UNIQUE 등 B-tree에 저장된 인덱스
    • 공간 데이터 형식에서 찾을 수 있는 인덱스 등 R-tree에 저장된 인덱스
    • FULLTEXT 인덱스 사용 시 해시 인덱스 및 역 리스트
  • PostgrSQL 인덱스 :
    • 해시 인덱스 및 B-tree 인덱스
    • 테이블 일부의 정보만 정리하는 부분 인덱스
    • 열 값과 반대로 수식 함수의 결과로 인덱스를 만드는 수식 인덱스
기능, 특징MySQLPostgreSQL
RDBMS (관계형 데이터베이스 관리 시스템)ORDBMS (객체 관계형 데이터베이스 관리 시스템)
ACID 준수대부분의 엔진은 ACID 규정을 준수하지만, MyISAM은 지원하지 않는다.완벽 지원
크로스플랫폼대응UNIX 기반 시스템에 최적
외부키MyISAM은 지원하지 않는다.완벽 지원
저장 프로시저지원 OPL/pgSQL 언어로 고급화
웹 애플리케이션속도와 안정성으로 널리 인정복잡한 사용 사례에서 인기
트리거지원 O다른 언어로도 작성할 수 있는 유연성
지원 O구체화된 뷰 제공(비용, 연산량 많음)

출시 당시 두 DB는 차이점이 컸지만 새로운 버전이 출시될때마다 데이터베이스의 시스템의 기능과 성능간의 격차는 줄어들고 있다.

최근에 MySQL은 PostgreSQL에서만 제공하던 JSON과의 호환, 다중 버전 동시성 제어, 윈도우 함수, 지리정보 시스템과 공간 참조 시스템(GIS , SRS) 등의 기능을 제공하기 시작

또한 PostgreSQL은 MySQL에만 있던 기능을 제공하기 시작. 테이블을 더 작고 관리하기 쉬운 테이블로 세분화하는 선언적 파티셔닝, 논리적 복제, 준동기 복제 등

결론

  • 설정과 관리가 쉽고, 빠르고, 안정적, 이해도가 높은 간단한 데이터베이스 = MySQL
  • 복잡한 쿼리와 대규모 데이터베이스를 처리할 수 있는 풍부한 기능을 갖춘 데이터베이스 = PostgreSQL

참고

profile
success is within reach, allow yourself time

1개의 댓글

comment-user-thumbnail
2024년 5월 27일

좋은 글 잘 읽고 가요 !

답글 달기