Skip to content

DataBase 비교 (MySQL)

JinGu edited this page Dec 17, 2020 · 2 revisions

DataBase 비교 (MySQL)

  • MySQL, MongoDB, PostgreSQL을 비교해보고 왜 MySQL을 선택했는지 설명하겠습니다.



MySQL

MySQL이란?

MySQL은 전세계적으로 가장 널리 사용되고 있는 오픈 소스 데이터베이스이며, 관계형 데이터베이스 관리시스템(RDBMS)이다. 또한 매우 빠르고, 유연하며, 사용하기 쉬운 특징이 있다.

MySQL의 구조

응용 프로그램과 데이터의 중재자로서 모든 응용 프로그램들이 데이터베이스를 공유할 수 있도록 관리해준다.
목적은 데이터의 독립성을 제공하는 것이다.
데이터의 독립성에는 응용 프로그램에 영향을 주지 않고, 데이터베이스의 논리적인 구조를 변경시킬 수 있는 물리적 데이터의 독립성이 있다.

특징

  • 다중 스레드, 다중 사용자 형식의 구조이다.
  • 질의어 형식의 데이터 베이스 관리 시스템이다.
  • 현재 사용율이 엄청 높은 만큼 믿고 사용할 수 있다.
  • 구조가 간단하여 학습하기 쉽다.
  • 들어가는 비용이 적다.
  • 유연하고 확장이 쉽다.



MongoDB

MongoDB란?

NoSQL(Not Only SQL)로 기존의 관계형보다 더 융통성있는 데이터 모델을 사용하고 데이터의 저장 및 검색을 위한 특화된 메커니즘을 제공합니다. 이를 통해 NoSQL 데이터벵스는 단순 검색 및 추가작업에 있어서 매우 최적화된 키-값 저장 기법을 사용하여 응답속도나 처리효율 등에 있어서 매우 뛰어난 성능을 나타냅니다.
MongoDB는 이러한 특성을 갖고 문서지향 데이터베이스로, 객체지향 프로그래밍과 잘 맞고 JSON을 사용할 때 아주 유용합니다.

MongoDB의 구조

몽고디비 안에는 여러개의 DB가 존재하며 또 그 DB 안에는 여러 개의 콜렉션이 존재할 수 있다. 해당 콜렉션들에는 각각 연관되어 있는 도큐멘트끼리 묶어서 보관되어 있다고 보면 된다. 그러나 필요할 경우, 도큐멘트 내부에도 복수의 도큐멘트를 포함시킬 수 있어 형식이 매우 자유롭다.

특징

  • NoSQL이다
  • RDB와 개념이 유사해, 쿼리 변환기가 있을 만큼 개념적으로 어색하지 않다
  • RDB에 비해 성능이 100배 이상 빠르다.
  • 스키마 관리가 필요없다.
  • Schema-less라서 어떤 형태의 데이터라도 저장할 수 있다.
  • JSON 형태로 저장이 가능해서 직관적이고 개발이 편리하다.
  • 복잡한 쿼리를 사용할 수 없다 ex) Join이 힘들다
  • 메모리 사용량이 큰 편이다.
    • 메모리 부족 시 퍼포먼스 급락
  • 데이터 일관성이 보장되지 않는다.



image

PostgreSQL

PostgreSQL이란?

오픈소스 객체-관계형 데이터베이스 시스템(ORDBMS)으로, Enterprise 급 DBMS의 기능과 차세대 DBMS에서나 볼 수 있을 법한 기능들을 제공한다.

PostgreSQL의 구조

PostgreSQL은 클라이언트/서버 모델을 사용한다. 서버는 데이터베이스 파일들을 관리하며, 클라이언트 애플리케이션으로부터 들어오는 연결을 수용하고, 클라이언트를 대신하여 데이터베이스 액션을 수행한다. image

특징

  • 다양한 join 방법을 제공한다.
  • 처리 속도를 빠르게 하기 위해 여러 CPU를 활용하여 쿼리를 실행한다.
  • 복제 설정의 유연성 결여
  • 복잡한 쿼리를 실행하기에 좋은 환경을 가지고 있따.
  • DW, 데이터 분석 응용 부분에서 뛰어난 성능을 보여준다.
  • JSON 형식을 빠르게 처리하는 능력을 갖추고 있다.

사용하고 나서의 후기 (2020-12-17)

MySQL을 선택한 이유는 우선 익숙하고, 학습을 하는데 어려움이 없기 때문에 선택을 했다.
또한 Sequelize 를 사용해 ORM을 적용하였기 때문에 객체형태로 관리하다보니 몽고디비와도 비슷한 형식이라 생각하고 사용하였다.
사용하다보니 느낀 것은 이번 프로젝트에서는 복잡한 쿼리를 필요로 하지않기 때문에 MySQL의 장점을 모두 뽑아냈다고는 생각이 들지 않았다.
이렇게 복잡한 쿼리를 사용할 일이 없다면 MongoDB와 같은 NoSQL을 사용하여 요청 응답의 속도를 높여보는 것도 좋을 것 같다는 생각이 들었다.

Clone this wiki locally