MySQL은 SQL을 사용하는 대표적인 데이터베이스이다. 몽고디비는 SQL을 사용하지 않는, NoSQL(Not only SQL) 데이버테이스의 대표이다.
SQL과 NoSQL의 차이는 다음과 같다. (여기서 NoSQL의 특징은 몽고디비의 특징이다.)
SQL(MySQL) | NoSQL(몽고디비) |
규칙에 맞는 데이터 입력 | 자유로운 데이터 입력 |
테이블 간 JOIN 지원 | 컬렉션 간 JOIN 미지원 |
트랜잭션 지원 | 트랜잭션 미지원 |
안정성, 일관성 | 확장성, 가용성 |
용어(테이블,로우,컬럼) | 용어(컬렉션, 다큐먼트, 필드) |
NoSQL에는 고정된 테이블이 없다. 컬렉션이라는 개념이 있지만, 컬럼을 따로 정의하지는 않는다.
몽고디비에는 JOIN 기능이 없어서 하나의 쿼리로 여러 테이블을 합치는 작업이 항상 가능하지는 않다.
트랙잭션 또한 지원하지 않는다. 아예 없다고는 할 수 없지만(4버전부터 지원예정), MySQL 수준의 트랜잭션은 없다. 따라서 데이터 일관성에 문제가 생길 수 있다. (트랜잭션이란 여러 쿼리가 모두 정상적으로 수행되거나 아예 하나도 수행되지 않음을 보장하는 기능이다.)
트랜잭션도 안되고, JOIN도 안되지만 몽고디비를 사용하는 이유는 확장성과 가용성 때문이다.
데이터의 일관성을 보장해주는 기능이 약한 대신 데이터를 빠르게 넣을 수 있고, 쉽게 여러 서버에 데이터를 분산할 수 있다.
앱을 만들 때 꼭 한 가지 데이터베이스만을 사용해야 하는 것은 아니다.
많은 기업이 SQL과 NoSQL을 동시에 사용하고 있다.
일관성 있는 전달이 가능한 핵심 기능은 SQL로 구현하고, 핵심 기능 외의 빅데이터,메시징,세션 관리 등에는 확장성과 가용성을 위해 몽고디비를 사용할 수도 있다.
'👩💻 Web Programming > Database' 카테고리의 다른 글
[코드잇 SQL 데이터베이스] 데이터베이스 모델링 (0) | 2021.08.15 |
---|---|
[코드잇 SQL 데이터베이스] SQL로 하는 데이터분석 (0) | 2021.08.12 |
AWS Springboot Mysql 연동 오류 해결방법 (0) | 2021.04.12 |
Mysql 한글 인코딩 문제 (Incorrect string value: '\xEC\x9E\x90\xEA\xB9\x8C') (0) | 2021.04.05 |
Mysql no database selected 에러 해결 (0) | 2021.04.05 |