본문 바로가기

Data/데이터베이스 이론

DB - 04 MongoDB

앞으로 아래의 기준을 가지고 몇 가지 Nosql 모델을 살펴볼 생각이다.

1. 모델의 특징

2. 분산처리에 강점이 있는 이유

3. Data Quality 중 중요하게 생각하는 특성

4. 사용 예시

일단 Document-Oriented DataBase인 MongoDB에 대해서 알아보자.

MongoDB의 특징 및 구조

MongoDB는 Nosql중 현재 가장 많이 쓰는 데이터베이스로 Bson이라는 문서형식의 데이터를 저장한다.

Bson(Binary Json)의 약자로 JSON 문서를 기계어에 가깝게 만들어 컴퓨터가 이해하기 쉽게 만든 문서이다.

때문에 데이터를 빠르게 분석하고 의미를 이해할 수 있다.

MongoDB는 RDBMS에서 Table과 같은 역할을 하는 Collection이 있다.

예를 들어 User Tabel == User Collection이다.

사용자의 정보를 담고 있는 문서들을 모아서 Collection의 단위로 관리하는 방식이다.

{
"_id": "507f1f77bcf86cd799439011",
"name": "John Doe",
"age": 29,
"email": "coding@example.com",
"address": {
"street": "123 Main St",
"city": "Springfield",
"state": "IL",
"zip": "62704"
},
"hobbies": ["reading", "hiking", "coding"]
}

이건 Bson의 Document의 예시로 RDBMS로 보면 하나의 레코드를 의미한다.

문서 내의 id,name,email, address 등등은 RDBMS의 Column과 같은 역할로 Field라 불린다.

 

아래 표는 RDBMS와 MongoDB를 비교한 표로 MongoDB를 이해하기에 훨씬 이해가 쉬울 것이다

 

RDBMS MongoDB
Database Database
Table Collection
Row Document
Column Field
Primary Key _id (Primary Key)

 
   
   

MongoDB의 분산처리

 

분산 처리에 앞서 데이터 샤딩과 클러스터란 용어를 먼저 살펴보자

데이터 샤딩이란 데이터를 여러 서버(샤드)에 분할로 저장하여 관리하는 분산처리 방법이다.

 

클러스터(Cluster)는 여러 대의 컴퓨터 서버가 서로 연결되어 하나의 시스템처럼 작동하는 구성을 말한다.

 

MongoDB는 아래와 같은 샤딩 클러스터 구조를 가지고 있다.

 

 

샤드부터 살펴보면 샤드에는 primary와 두개의 secondary로 보이는 저장소가 있다.

 

main 저장소와 그 복제본이 set을 이루어 하나의 샤드로서 동작한다.

 

복제본을 이용함으로써 primary저장소가 피해를 입어도 백업데이터를 가져와 사용할 수 있어 데이터의 가용성이 좋다.

 

MongoS는 쿼리 라우터 서버로 클라이언트로 부터 오는 응답을 적절히 판단하여 샤드로 중개를 해주는 역할을 한다.

 

Config 서버에는 클러스터의 메타데이터가 존재한다.

 

쿼리 라우터 서버는 Config 서버를 참조하며 데이터의 적절한 이동경로를 정해줄 수 있다

 

이러한 샤딩 클러스터 구조와 유연한 스키마 구조로 다양한 데이터를 저장할 수 있어서 MongoDB는 분산처리에 용이하다.

MongoDB ACID -> BASE

Nosql은 RDBMS와는 다른 방향성을 가진 데이터베이스이다. 

 

데이터의 일관성보다는 데이터의 가용성을 더 중요시 여긴다.

 

그렇기에 조금 덜 엄격한 속성인 BASE를 이용한다.

 

BASE란?

 

Basic Availability : 일반적으로 가용하다. 즉 데이터가 일부 문제가 있어도 사용할 수 있다.

Soft-state : 무결성을 항상 유지해야할 필요가 없기 때문에 시간이 지남에 따라 변경될 수 있다.

-> 이것은 데이터의 일관성의 기준을 낮춰 즉시 업데이트 내용을 반영하는 것이 아니라 규칙에 맞춰 상대적으로 천천히 변경한다.

Eventual consistency : 당장은 무결성이 유지되지 않더라도 이후에 결국에는 유지되어야한다.

 

MongoDB는 Base의 속성으로 트렌젝션이 구성되어 있다.

 

이렇게만 보면 ACID와 BASE가 정확히 어떠한 차이가 있는지 잘 이해가 안될 수도 있다.

 

내용이 길어질 것 같아서 이후에 데이터의 Read, Writer Concern 상황을 예시로 이후에 작성해보겠다.

'Data > 데이터베이스 이론' 카테고리의 다른 글

DB - 03 Nosql (Not only SQL)  (2) 2024.07.23
DB - 02 RDBMS(Realation DBMS)  (0) 2024.07.23
DB - 01 데이터베이스 기초  (1) 2024.07.15