DB를 선택을 할때에는 어떤 프로젝트를 진행하는지, 요구사항에 맞춰 선택하고는 한다. 이때, 프로젝트를 진행할때 대표적으로 사용되는 MySQL과 PostgreSQL의 차이를 알아보자.
PostgreSQL과 MySQL의 공통점
- SQL 언어를 인터페이스로 사용하여 데이터를 읽고 편집 가능
- 데이터 백업, 복제, 엑세스 제어 기능이 내장되어 있음
- 무료 오픈소스, 대규모의 커뮤니티 지원
MySQL
소개
- 오라클에서 관리되는, 가장 많이 사용되는 관계형 데이터베이스 관리 시스템(RDBMS)
- 주로 웹 애플리케이션에 대해 가볍고 효율적이며 안정적인 상태를 유지할 수 있다.
- 대규모의 데이터 셋을 빠르고 효율적으로 처리하기 때문에 대량의 데이터를 저장하고, 엑세스 해야 하는 기업에서 인기가 많다.
- Facebook, Netflix, Github 및 대형 기업들은 MySQL을 사용하고 있다.
장점 및 사용해야 하는 경우
- 표준 SQL을 완전히 준수하지 않는 대신 속도와 안정성을 위해 디자인 되었다.
- MySQL을 사용하는 애플리케이션은 별도의 데몬 프로세스를 통해 데이터베이스에 엑세스 한다.
- MVCC(다중 버전 동시성 제어)를 제공한다.
- 읽기 전용 명령을 관리하는데 선호된다.
- 보안 수준이 높은 데이터베이스.
- MySQL은 설치 시 암호 보안 수준을 설정할 수 있고 루트 사용자의 암호를 정의하며 익명 계정을 제거하고 모든 사용자가 접근할 수 있는 기본 테스트 데이터베이스를 젝거해 보안 향상에 도움이 되는 스크립트와 함께 설치
PostgreSQL
개요
- 오픈소스 객체 관계형 데이터베이스 관리 시스템(ORDBMS) : 관계형과 객체 지향 기능을 결합한 하이브리드 데이터베이스 시스템
- “카탈로그 기반” 운영 방식, 다른 DBMS보다 훨씬 더 많은 기능을 갖추었다.
- ACID 준수, 높은 동시 트랜잭션을 달성하고 있다.
- 사용자 정의 가능, 뛰어난 확장성과 유연성으로 다양하고, 복잡한 데이터 유형을 관리하는데 적합하다.
장점 및 사용해야 하는 경우
- 읽기-쓰기 작업, 대규모 데이터 세트 및 복잡한 퀀리를 관리하는 경우 선호된다,
- 읽기 전용 작업에서는 선호되지 않는다.
- 초대형 데이터베이스를 관리해야 할때
- 엄격한 SQL 표준 준수로 잘 알려져 있다.
차이점
- 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 인덱스
- 테이블 일부의 정보만 정리하는 부분 인덱스
- 열 값과 반대로 수식 함수의 결과로 인덱스를 만드는 수식 인덱스
기능, 특징 | MySQL | PostgreSQL |
---|
| RDBMS (관계형 데이터베이스 관리 시스템) | ORDBMS (객체 관계형 데이터베이스 관리 시스템) |
ACID 준수 | 대부분의 엔진은 ACID 규정을 준수하지만, MyISAM은 지원하지 않는다. | 완벽 지원 |
크로스플랫폼 | 대응 | UNIX 기반 시스템에 최적 |
외부키 | MyISAM은 지원하지 않는다. | 완벽 지원 |
저장 프로시저 | 지원 O | PL/pgSQL 언어로 고급화 |
웹 애플리케이션 | 속도와 안정성으로 널리 인정 | 복잡한 사용 사례에서 인기 |
트리거 | 지원 O | 다른 언어로도 작성할 수 있는 유연성 |
뷰 | 지원 O | 구체화된 뷰 제공(비용, 연산량 많음) |
출시 당시 두 DB는 차이점이 컸지만 새로운 버전이 출시될때마다 데이터베이스의 시스템의 기능과 성능간의 격차는 줄어들고 있다.
최근에 MySQL은 PostgreSQL에서만 제공하던 JSON과의 호환, 다중 버전 동시성 제어, 윈도우 함수, 지리정보 시스템과 공간 참조 시스템(GIS , SRS) 등의 기능을 제공하기 시작
또한 PostgreSQL은 MySQL에만 있던 기능을 제공하기 시작. 테이블을 더 작고 관리하기 쉬운 테이블로 세분화하는 선언적 파티셔닝, 논리적 복제, 준동기 복제 등
결론
- 설정과 관리가 쉽고, 빠르고, 안정적, 이해도가 높은 간단한 데이터베이스 = MySQL
- 복잡한 쿼리와 대규모 데이터베이스를 처리할 수 있는 풍부한 기능을 갖춘 데이터베이스 = PostgreSQL
참고
좋은 글 잘 읽고 가요 !