728x90
반응형

stackoverflow developer Survey 2023 에서 개발자들 사용하는 데이터베이스에 대해서 투표한 결과를 보게 되었다.

https://survey.stackoverflow.co/2023/

 

Stack Overflow Developer Survey 2023

In May 2023 over 90,000 developers responded to our annual survey about how they learn and level up, which tools they're using, and which ones they want.

survey.stackoverflow.co

 

 

투표 결과를 확인해보니 대략 7만 5천명의 개발자분들이 투표해주셨고 그 결과는 다음과 같았다.

 

전체 결과를 확인해보니 PostgresSQL 이 Mysql 보다 더 높은 순위를 기록했다.

 

 

또한 전문적으로 개발을 하고 있는 사람들의 경우 PostgreSQL 의 빈도가 상당히 높았다.

 

 

하지만 데이터베이스를 배우는 사람들에게는 역시나 Mysql 의 비중이 상당히 높은 것을 알 수 있었다.
나도 마찬가지로 공부할때에는 Mysql 을 사용해서 공부를 했었다.

 

 

개발 외의 다른 사람들도 Mysql 의 비중이 컸다.

 

 

그리고 올해 선호하는 데이터베이스로 많은 사람들이 PostgreSQL 을 선택했다.

 

 

그래서 최근들어 PostgreSQL 의 사용 빈도가 증가하면서 기존에 사용했던 Mysql 과 어떤 차이가 있고 어떠한 이유에서 PostgreSQL 을 사용하게 되었는지 궁금해서 찾아보게 되었다.

 

MySQL 과 PostgreSQL 의 차이점

여러 사이트와 블로그를 찾아보고나서 표로 간략하게 정리해보았다.
두 개의 데이터베이스는 개념적으로는 유사한 부분이 많지만 구현하기 전에 고려해야할 많은 사항들이 있다고 한다.

 

비교 MySQL PostgreSQL
데이터베이스 유형 순수 관계형 데이터베이스 객체 관계형 데이터베이스
사용 환경 OLTP 에 적합 OLTP, OLAP 에 적합
*ACID 규정 준수 InnoDB 및 NDB 클러스터 스토리지 엔진 또는 소프트웨어 모듈과 함께 사용하는 경우에만 준수 모든 구성에서 ACID 와 완벽하게 호환
다중 버전 동시성 제어
(*MVCC)
지원하지 않음 지원
*인덱스 계층적으로 인덱싱된 데이터를 저장하는
B-Tree 및 R-Tree 인덱싱 지원
트리, 표현식 인덱스, 해시 인덱스 지원
데이터 유형 순수 데이터 유형 지원 데이터를 속성을 가진 객체로 저장
객체는 상위-하위 관계 및 상속과 같은 패러다임 지원
배열 및 XML 과 같은 다른 추가 데이터 유형도 지원
저장 프로시저 저장 프로시저 지원 저장 프로시저 지원
SQL 이외의 언어로 작성된 저장 프로시저 호출 가능
트리거 SQL 의 INSERT, UPDATE, DELETE 문에서
AFTER 및 BEFORE 트리거만 사용 가능
INSTEAD OF 트리거 지원
함수를 사용하여 복잡한 SQL 문 실행
UPDATE 방식 UPDATE INSERT & DELETE
지원되는 JOIN NL JOIN
HASH JOIN (5.7 2.06 버전 이후)
NL JOIN
HASH JOIN
SORT JOIN

*ACID
원자성, 일관성, 격리성, 지속성
예상치 못한 오류가 발생한 후에 데이터베이스를 유효한 상태로 유지하는 데이터 베이스 속성
예를 들어, 많은 수의 행을 업데이트했는데 중간에 시스템이 실패하는 경우 행을 수정하면 안된다.

*MVCC
다중 버전 동시성 제어
레코드의 중복 사본을 생성하여 동일한 데이터를 병렬로 안전하게 읽고 업데이트하는 고급 데이터베이스 기능

*인덱스
데이터베이스는 인덱스를 사용하여 더 빠르게 검색한다.
자주 엑세스하는 데이터를 다른 데이터와 다르게 정렬 및 저장하도록 데이터베이스 관리 시스템을 구성하여 인덱싱

 

 

뭐랄까.. 정리해서 적어봤지만.. 잘 이해가 되지 않는다.. ㅎㅎ

 

그래서 더 여기저기 찾아보니 가장 크게 비교되는 부분은 다음과 같았다.

 

CRUD 쿼리 성능 비교

UPDATE 를 하는 경우 PostgreSQL 은 DELETE 후에 INSERT 를 하기 때문에 MySQL 의 성능이 더 좋다고 한다.
따라서 PostgreSQL 은 INSERT, SELECT 위주의 서비스에서 사용하는 것이 더 적합하다고 한다.

 

복잡한 쿼리

복잡한 쿼리의 경우 예를 들어 JOIN 을 하는 경우에는 PostgreSQL 의 속도가 더 빠르다고 한다.

 

인덱싱

PostgreSQL 에서는 전체 데이터의 부분 집합에 대해서만 인덱스를 생성하는 Patical Index 라는 기능이 있다고 한다.
특정 범위에 대해서만 인덱싱을 할 수 있기 때문에 대량의 데이터가 있을 때 일부의 데이터에 대해서만 인덱스를 생성할 경우에 크기도 작아지고 리소스도 줄일 수 있다는 장점을 가지고 있다고 한다.
MySQL 의 B-Tree 인덱스와 비교했을 때에는 조회할 경우에는 속도가 크게 차이가 나지 않았고 인덱스 크기에서 많은 차이가 있다고 한다.
때문에 저장공간에 대한 장점이 크게 느껴지고 유지관리 비용도 절약된다는 장점을 가지고 있다.

 

 

PostgreSQL 을 사용하는 이유

내가 궁금했던 건 왜 PostgreSQL 을 사용하는가에 대한 궁금증이다.

 

먼저, PostgreSQL 은 BSD 라이센스로 소프트웨어의 무료 사용과 수정 및 배포를 허용해주는 오픈소스 라이센스라고 한다.
그래서 기업의 입장에서는 법적으로 문제가 없다는? 큰 이유를 가지고 있다고 한다.

 

그리고 대용량 데이터를 처리하는데 더 좋다?
MySQL 과 비교를 해보았듯이 PostgreSQL 은 부분적인 인덱싱이 가능하기 때문에 대용량 데이터를 처리하는데 저장 공간이나 리소스적인 부분에서의 비용이 적게 드는 장점을 가지고 있는데 이러한 부분에서 대용량 데이터를 처리하는데 보다 효율적이지 않을까? 생각한다.

 

PostgreSQL 은 빠르게 업데이트를 지속하고 있다고 한다. 계속해서 업데이트가 지속된다는 것은 그만큼 성장하고 있고 많은 관심을 가지고 있다는 것이 아닐까?

 

데이터 타입과 문법에 익숙하면 그만큼 편하고 효율적으로 사용할 수 있다고 하는데 나는 제대로 사용해본 적이 없어서 사용해보면서 어떤 부분에서 장점이 되는지 알아가야겠다.

 

 

정리

갑자기 PostgreSQL 이 인기가 많아졌는가에 대한 궁금증이 생겨서 왜 사용하는지 알아보고 싶었다.
최근 PostgreSQL 의 사용 빈도가 올라가고 성능적인 부분에서도 많이 따라왔다는 글을 봤던 것 같다. 하지만 정확하게 PostgreSQL 을 언제 그리고 왜 사용해야하는지에 대한 이해와 왜 사용량이 급증했는지에 대해서 바로 이해하기에는 많은 부족함이 있었던 것 같다.
물론 데이터베이스에 대한 이해도 아직 많이 부족하기도 하고 직접 부딪혀가며 사용해보지 않아서 그런가... 싶기도 하다.

 

마지막으로 정말 많은 데이터베이스가 있고 그 중에서 데이터베이스를 고르고 사용하는 부분에 있어서는 사용 목적에 맞게 비교해서 적합한 데이터베이스를 골라야 하고 운영중인 서비스에 맞게 적합한 데이터베이스를 고르는 것이 맞다고 생각한다. 그래서 이렇게 찾아보고 정리하면서 나중에 서비스를 운영하는데 있어 데이터베이스를 고르는 과정에서 많은 도움이 되지 않을까 생각한다.

 

나중에 PostgreSQL 를 사용해보고나서 다시 정리해봐야겠다.

 

 

- 참고 사이트

https://aws.amazon.com/ko/compare/the-difference-between-mysql-vs-postgresql/

 

PostgreSQL과 MySQL 비교 - 관계형 데이터베이스 관리 시스템(RDBMS) 간의 차이점 - AWS

MySQL은 데이터를 행과 열이 있는 테이블로 저장할 수 있는 관계형 데이터베이스 관리 시스템입니다. 많은 웹 애플리케이션, 동적 웹 사이트 및 임베디드 시스템을 지원하는 널리 사용되는 시스

aws.amazon.com

https://techblog.woowahan.com/6550/

 

Aurora MySQL vs Aurora PostgreSQL | 우아한형제들 기술블로그

안녕하세요, 클라우드스토리지개발팀 정지원 입니다. 최근 저희 팀에서는 Aurora MySQL로 운영되고 있던 대량 통계성 DB를 Aurora PostgreSQL로 이관하는 것을 검토중입니다. 그래서 오늘은 준비 과정에

techblog.woowahan.com

https://codecamp.tistory.com/2

 

PostgreSQL을 선택한 이유

PostgreSQL을 접한지 5년이 되었다. 필자는 DBA는 아니지만 개발자로서 Oracle, MSsql, MySql, Sybase 등의 DB를 사용해 보았고 다른 데이터베이스를 사용하는것에 대한 두려움은 없었다. 하지만 PostgreSQL은

codecamp.tistory.com

 

728x90
반응형
복사했습니다!