MySQL 과 MongoDB의 주요 차이점
MySQL은 Oracle사의 대표적인 관계형 데이터베이스(RDBMS) 이다. 다른 관계형 데이터베이스 처럼 MySQL은 Table에 데이터를 저장하며, SQL(structured query language)을 이용하여 DB에 접근 한다. MySQL은 데이터베이스 스키마를 먼저 정의하여야 하며 테이블에 들어갈 필드들에 대한 규칙을 규정하여 사용한다.
이에 반해, MongoDB는 noSQL 데이터베이스로써, JSON과 닮은 형태의 document로 데이터를 저장한다. Document는 관련된 데이터를 한 번에 저장하며 MQL(MongoDB query Language)을 이용하여 DB에 접근 한다. Document는 규정된 스키마를 두지 않기에, 각 필드는 항상 달라질 수 있다. 만약 스키마에 대한 검증이 필요하다면 Collection에 대하여 데이터의 조건을 옵셔널하게 추가할 수 있다.
MySQL MongoDB row document table collection database database
MongoDB는 빠르게 애플리케이션 구축 할 수 있으며, 다양한 데이터 타입을 핸들링할 수 있다. 또한 스케일링에 대한 관리 기능을 제공하기에 많은 기업들이 cloud database로써 mongoDB를 선택하고 있다.
MongoDB가 사용하는 document는 객체지향 프로그래밍에 언어와 자연스럽게 매핑되기에 개발이 단순화된다. mongoDB를 사용하는것 만으로도 객체를 관계형 테이블로 변환하는 복잡한 매핑 계층(ORM)이 사라진다.
MongoDB의 데이터 구조는 유연하기에, 새로운 비즈니스 요구사항에 대해 잘 반영해줄 수 있다. 반면, MySQL은 관계형 구조를 변경시키는데 애플리케이션에 큰 오버헤드를 가져온다.
MongoDB는 분산 데이터센터에 대하여 스케일링이 가능하며, 데이터 볼륨 및 처리량이 증가함에 따라 중지 없이 쉽게 확장이 가능하다. 반면, MySQL은 스케일링에 반드시 엔지니어의 작업이 필요하다.
용어 정리
관계형 데이터베이스(RDBMS) : 관계형 데이터베이스란 테이블(table)로 이루어져 있으며, 테이블은 엑셀을 생각하면 쉽게 연상할 수 있다. 이 테이블은 키(key)와 값(value)의 관계를 나타낸다. 이처럼 데이터의 종속성을 관계(relationship)로 표현하는 것이 관계형 데이터베이스의 특징이다.
* 관계형 데이터베이스의 특징과 용어
[특징]
1. 데이터의 분류, 정렬, 탐색 속도가 빠름.
2. 오랜기간 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장한다.
3. 기존에 작성된 스키마를 수정하기 어렵다.
4. 데이터베이스의 부하를 분석하는 것이 어렵다.
[용어]
1. 열(column) : 필드(field) 또는 속성(attribute)이라고도 불리며, 데이터 타입을 명시한다.
2. 행(row) : 레코드(record) 또는 튜플(tuple)이라고도 불리며, 한 행에 여러 컬럼의 값이 저장 될 수 있다.
3. 키(key) : 테이블에서 행의 식별자로 이용되는 컬럼을 뜻한다. 키로 선택된 컬럼의 값은 중복될 수 없다.
4. 관계(relationship) : 여러 형태의 관계가 있으며, 테이블 간의 관계는 기본 키(primary key)와 외래 키(foreign key) 라는 개념을 사용하여 맺어진다. 외래키는 참조키라고도 불리며, 다른 테이블을 참조하기 때문에 이 같은 명칭이 쓰인다.
5. 스키마(schema) : 데이터베이스의 전반적인 구조와 제약조건에 관한 전반적인 명세를 기술한 것.
* 참고