본문 바로가기
C++ 200제/코딩 IT 정보

PostgreSQL vs 마리아DB(mysql) 특징 비교 5개

by vicddory 2019. 6. 28.

오픈 소스 관계형 SQL 데이터베이스를 선택해야 할 경우 MariaDB / PostgreSQL 채용하는 경우가 많습니다. 이 포스트에서는 5가지 항목을 놓고 둘을 비교해 봅니다.


PostgreSQL vs 마리아DB(mysql) 특징 비교 5개DBMS 장단점 비교


정규식 (regexp_replace)

큰 차이는 없습니다. PostgreSQL 정규 표현식 플래그(flag) 등이 프로그래밍 언어(Perl 등의)에서 채택한 정규식과 가깝습니다. 마리아DB는 조금 다릅니다.


MariaDB - https://mariadb.com/kb/en/library/regexp_replace/


구문 : REGEXP_REPLACE (subject, pattern, replace)


PostgreSQL - https://www.postgresql.org/docs/9.5/functions-matching.html


구문 : regexp_replace (source, pattern, replacement [, flags])

메모리 스토리지 엔진, UNLOGGED 테이블

마리아DB 데이터베이스 엔진을 선택할 수 있습니다. PostgreSQL에는 없는 메모리만의 데이터베이스인 메모리 스토리지 엔진을 선택할 수 있습니다.


물론 실제 메모리를 소모하기 때문에 큰 테이블은 없지만, 속도는 압도적입니다.


PostgreSQL에는 UNLOGGED TABLE이라는 저널 미생성 테이블을 만들 수 있습니다. 일반 테이블과 비교하면 안정성이 떨어지지만, 속도는 빠릅니다.


실제 사용할 땐, 용량 걱정 없는 UNLOGGED TABLE이 좋습니다. 메모리 스토리지 엔진의 경우, BLOB 형태와 TEXT 형태는 사용할 수 없는 단점이 있습니다.


MariaDB


1
CREATE TABLE test (id int, v varchar(10) ) ENGINE = MEMORY;
cs


PostgreSQL


1
CREATE UNLOGGED TABLE test (id int, v text);
cs


dbms sql 특징 비교DBMS 장단점 비교


Stored Procedure 스토어드 프로시저

스토어드 프로시저 자유도는 PostgreSQL이 높습니다.


예를 들어, MariaDB에서는 저장 프로시저 입력 시 테이블을 처리할 수 ​​없습니다. 그래서 임시 테이블(TEMPORARY TABLE)을 거치게 되므로, PostgreSQL과 비교했을 때 사용 방법이 어렵습니다. 임시 뷰(TEMPORARY VIEW)가 있으면 차라리 나을 수도 있지만, 그것마저도 없습니다.


PostgreSQL의 스토어드 프로시저에는 Perl이나 Python을 사용할 수 있습니다.

병렬 쿼리

PostgreSQL에는 병렬 쿼리 기능이 구현되어 있습니다. 하나의 쿼리를 여러 스레드에서 처리하는 것이 특징입니다. 잘 다루기엔 난이도가 높지만 일단 구현하면 쿼리 성능은 올릴 수 있습니다.


MariaDB에서 같은 작업을 하는 경우, 호출 측에서 분할 처리하여 여러 프로세스에서 여러 쿼리를 실행해야 합니다. 거꾸로 말하면, 멀티 프로세스 - 멀티 스레드에 대응할 수 없는 언어(표준 PHP 등)에서 병렬 쿼리와 비슷한 성능을 낼 수 없다는 뜻입니다.


병렬 쿼리는 Oracle이나 MS-SQL Server에도 구현되어 있습니다.


MySQL

저작권, 상표권을 보유한 ORACLE의 상용 SQL 데이터베이스 보급이 많았지만, 최근 Linux 각 배포판 등에선 MySQL에서 파생된 마리아DB를 채택하고 있습니다.


정규식 관련 기능 구현도 늦어 regexp_replace는 MySQL8에서 구현되었습니다. 또한, MySQL8은 MariaDB와 호환되지 않습니다. 마리아DB와 완벽하게 호환되는 것은 MySQL5.X까지입니다. MySQL8을 채용하는 경우엔 이점도 주의가 해야 합니다.


마리아db postgresqlDBMS 장단점 비교


결론 및 고찰

사용하기 쉬운 것은 PostgreSQL이라고 생각합니다. 만약 고성능이 요구되지 않는다면, Oracle, MS-SQLServer도 선택에 넣어도 좋은 것이 아닐까요.




관련 글

마리아DB 개요, OpenSource RDBMS 시스템

Firebird db 테이블 컬럼 ddl 비교하기, ibexpert 파이어버드 사용법

오라클 컬럼 추가 에러, 테이블 편집 실패 NOT NULL ALTER



ⓒ written by vicddory

댓글