MySQL과 MongoDB는 시중에서 가장 많이 쓰이는 데이터베이스 시스템이다. 보다 정확히 말하자면, 시중에서는 RDBMS(관계형 데이터베이스)가 압도적으로 점유하고 있고, MySQL은 RDBMS 중 1등을 거머쥐고 있다. MySQL 말고는 PostgreSQL, SQLite 등의 RDBMS가 있다.
RDBMS를 제외한 다른 데이터베이스 시스템도 많다. 대다수가 점유율이 낮지만, 그 중에 RDBMS과 맞설 정도로 순위권을 차지하고 있는, MongoDB에 대해서도 다뤄보고자 한다.
RDBMS(Relational DataBase System)이란 무엇?
흔히 RDBMS의 첫 단어인 Relational을 보고, '아, 외래키를 받아 종속관계를 뜻하는 건가?'라고 생각하기 쉽다. 하지만, 여기서 말하는 Relational은 아래 그림과 같이 테이블을 뜻한다. 엑셀을 사용하신 분이라면 더 쉽게 이해가 가능할 것이다. 한마디로 RDBMS, 즉 MySQL은, 엑셀과 같이 테이블(표)로 데이터를 저장하는 데이터베이스를 뜻한다.

이러한 RDBMS의 특징 상, 데이터를 테이블, 즉 표의 형식에 맞게 넣어야 한다. 그렇기 때문에, 정형 데이터를 넣는 데 알맞다. 또한 Attribute(속성)이라 하여, 각 데이터(Tuple)은 속성에 맞게 넣어야 하는 데(예: "철수", "175cm", "75kg", "3급"), 속성이 각 형식에 맞게 들어가야 한다는 도메인 제약을 요구한다('키'를 입력해야 하는 속성에 60kg을 입력할 수는 없지 않은가?). 또한 중복 값을 넣는 것을 되도록이면 지양해야 하는 정규화과정도 필히 요구된다.

그렇다면, MongoDB는 어디에 쓰이는 건가?
MongoDB는 위의 RDBMS와 대비되는 데이터베이스 시스템이다. 일단 위에서 말하는 정형 데이터와 대비되는 비정형 데이터를 처리하기 용이하다. 구조도 테이블이 아닌 document 형식이라 확장성에 용이하기도 하다. 도메인 제약도 없는 JSON 형식이라, 상대적으로 자유롭기도 하다.

이렇게 1. 데이터 형식을 신경을 쓰지 않고, 2. 쉽게 옆에 서버를 추가하여 확장할 수 있고, 3. 속도 면에서 빠르기 때문에.. 실시간 채팅이나 대용량 데이터 저장 시 애용되는 데이터베이스 시스템이다.
MongoDB 데이터 저장 방식
MongoDB에도 데이터 저장하는 방식이 두 가지 존재한다. 하나는 Embed, 즉 내장형이라는 뜻이고, 다른 하나는 Reference, 즉 참조형이라는 뜻이다. 이 둘의 차이는 아래 이미지를 통해 이해를 할 수 있다:


내장형은 안에다가 값을 추가로 넣는 방식임을 알 수 있고, 참조형은 RDBMS에서 정규화한 추가 테이블과 유사한 형태을 알 수 있다. Embed형식으로 넣는 이유는 상대적으로 자료를 더 빨리 불러올 수 있기 때문이다. 위의 "우유"를 찾아올 때, category를 바로 안으로 들어가서 찾아낼 수 있는 반면에, Reference의 경우 다른 document를 찾아야 하기 때문. 물론 embed는 단점도 존재하는데, 데이터가 중복이 될 수 있고, 관리가 번거롭다는 것이다.
이렇게 MongoDB와 MySQL의 기본에 대해 알아보았다. 뿅~
글을 작성하는데 참조한 자료:
MySQL만 써봤는데... MongoDB 프로젝트에 투입됐다🤯
빅데이터라는 시대의 요구에 맞추어 NoSQL이 등장한 지 십 년이 넘는 세월이 흘렀습니다. 하지만, 아직 RDB에 비해서 스키마 설계를 위한 참고 자료가 부족하다고 생각되는데요. 저 또한 MySQL만 사
dev.gmarket.com
'컴퓨터 과학' 카테고리의 다른 글
| OS(운영체제)에 대해 알아보기: System Call이란? (15) | 2025.03.12 |
|---|---|
| Http의 역사를 알아보자: Http/2을 중심으로 (2) | 2025.03.10 |
| Docker(도커) vs Virtual Machine(가상머신), 왜 도커를 사용하나? (8) | 2025.03.08 |
| c10k problem: 동시 사용자 1만명 채팅서버는 어떻게 구현되는가? (4) | 2025.03.07 |
| 깊게 파헤쳐보기: Intel CPU와 AMD CPU 차이점은 무엇일까? (2) | 2025.03.06 |