1. 소개

일반적으로 널리 쓰이는 관계형 데이터베이스(MySQL 등)는 데이터 중복을 제거하고 무결성을 보장하기 위해

정규화를 하게 되어 있는데 이러한 정규화가 과도해지면 어떤 데이터를 추출하기 위해 많은 조인 작업이 필요하고

인해 성능 저하가 있을수 있습니다.

하지만 NoSQL[각주:1]은 아래 구조처럼 중첩 데이터 형태를 가지므로 불필요한 조인을 최소화합니다.

NoSQL 데이터베이스는 소개하려는 MongoDB 를 포함해서 Redis 등 종류가 다양한 편이고 각각 구조에 차이가 조금씩 있습니다. 

 

2. 관계형 데이터 베이스와 비교한 MongoDB 논리적 구조

관계형 데이터베이스 MongoDB
Table Collection
Row Document
Column Field
Primary Key Object_ID field
Relationship Embbeded, Link

아래 이미지는 실제 MongoDB Compass에서 조회한 Customer Collection의 Document 예시입니다.

 

3. 특징

NoSQL 데이터베이스의 한 종류이기 때문에 비슷한 특징을 가집니다.

관계형 데이터베이스와 비교해봤는데요. 절대적인 내용이 아니라 일반적 관점에서 비교한 내용이

참고해주시기 바랍니다.

예를 들어 관계형 데이터베이스라고 해도 Scale-Up 가능한 것은 아닙니다.

MySQL 같은 경우 MySQL Cluster 같은 기능으로 Scale-Out 이 가능합니다.

  관계형 데이터베이스 MongoDB
적합한 시스템 데이터 정합성이 보장되어야하는 시스템 가용성이 중요하고 낮은 지연이 필요한 시스템
구조 정규화, 무결성이 보장된 스키마 스키마 없는 자유로운 모델 
트랜잭션 ACID 지원 완화된 ACID 지원
확장 Scale-Up Scale-Out
API SQL  객체 기반 API 제공

 

4. 마치며

여기까지 간략하게 소개와 특징들을 관계형 데이터베이스와 비교해보았고

실무에서 Redis를 먼저 접해 봤기 때문에 어떤 사례에 적합한지는 미리 경험을 해보았습니다.

빠른 응답과 빈번한 데이터 처리가 필요한 좋아요 같은 기능에 적용해보면 좋을 것 같고

Oauth 구조에서 Refresh Token 체킹 하는 기능에도 적용해보면 좋을 것 같은 생각이 듭니다.

이론적인 정리 내용은 이만 줄이고 MongoDB 기본 설치와 Spring boot를 활용한 Demo앱 제작을 다음 단계로

진행해보겠습니다.

 

  1. 비관계형 데이터베이스를 지칭. [본문으로]

'DB > MongoDB' 카테고리의 다른 글

MongoDB 설치  (0) 2022.01.19

+ Recent posts