반응형
요즘 시대에는 구글이나 아마존, 페이스북 같은 글로벌 서비스를 제공하는 회사가 늘어나면서
방대한 양의 데이터를 서비스를 제공하는데 문제없이
빠른 속도로 처리할 수 있는 데이터베이스에 대한 필요성이 강해졌다.
대용량 데이터 서비스를 제공하기 위해서는 전통적인 RDBMS만으로는 처리하기에는 한계가 존재한다.
MySQL 같이 오픈 소스 RDBMS는 비용적인 문제를 해결해주기는
하지만 이러한 MySQL도 빅데이터를 처리하기에는 무리가 있다.
예를들어 엄청난 양의 데이터가 있고,
매번 데이터베이스 스키마에 맞게 데이터를 조작하여 작업을 수행한다면
여러가지 리소스의 낭비가 발생된다고 볼 수 있다.
이를 해결하기 위해서 NoSQL이 등장하였고
다른 NoSQL과 같이 MongoDB는 이러한 문제를 해결하기 위해 적합한 데이터베이스라고 볼 수 있다.
자체적으로 분산 처리, 데이터 리밸런싱, 샤딩, 데이터 복제, 복구 등을 지원하고
무엇보다 Schema-less 한 구조이기에 대용량의 데이터 작업에 아주 효율적인 데이터베이스이다.
또한 일부 RDBMS의 기능을 제공하기도 한다.(인덱싱 과 같은 전통적인 RDB 에서 지원하는 기능 제공)
MongoDB 의 특징
특징 | 설명 |
JSON 형태로 저장 | -중괄호를 기준으로 Document 를 구분, 그 안의 속성이 Key - Value 쌍으로 이루어짐 |
JOIN 지원하지 않음 | - 빅데이터 처리 속도 향상을 위해 JOIN 을 사용하지 않아도 되도록 Embedding 필요 |
Memory Map 형태 | - 메모리 크기에 의존적 - 데이터 쓰기 시 OS 의 가상 메모리에 데이터를 넣은 후 비동기로 디스크에 기록 - 로그, 세션, 이벤트 참여 내역 등의 데이터 처리에 적합 |
트랜잭션이 필요한 데이터 처리에 부적합 |
- 정확한 트랜잭션 처리가 필요하다면 RDB 를 사용해야함 |
Document Data Model | - One Query 로 해결이 가능하게끔 Collection Model 설계가 필요 |
MongoDB 의 장단점
장점 | - Schema-less 구조 : 다양한 형태의 데이터 저장, 데이터 모델의 유연한 변화가 가능 - Read/write 성능 뛰어남 - Scale out 구조 - 데이터를 직관적으로 이해하기 쉽다 : JSON 구조 - 사용 방법이 쉽고 개발이 편리 |
단점 | - 데이터 업데이트할 때 장애가 발생하면 데이터 손실될 가능성 있음 - 인덱스가 많이 늘어날 때 충분한 메모리가 필요함 - 데이터 공간 소모가 RDMBS 보다 많다 : 비효율적인 Key 저장, 데이터 자체의 중복 가능성 - MapReduce 작업이 Hadoop 보다 성능이 떨어짐 - 복잡한 JOIN 사용할 때 성능 제약 있음 - Transaction 지원이 RDBMS 보다 미약 |
MongoDB 와 MySQL 의 성능비교
- 동일한 데이터로 CRUD 할때 대부분 MongoDB 가 빠르다.
쓰기 성능 비교 | MongoDB 가 100배 이상 빠름 |
읽기 성능 비교 | MongoDB 가 3배 이상 빠름 |
MongoDB 복제기능
특징 | 설명 |
Master-Slave 구성 가능 | Master-Slave 구성이 가능하며, 데이터 복사본을 Slave 에 배치할 수 있다 → Data Mirroring |
장애대응 가능 | - Slave 장애시에는 데이터에 영향 없음 - Master 장애시에는 자동적으로 Slave 들 끼리 Master를 선출하여 중단없는 서비스를 구현 |
내부 저널링 지원 | - MongoDB 데이터 변화에 따른 모든 연산에 대한 로그를 적재 → 데이터 손실시 로그를 통해 데이터 복구 가능 - 데이터 손실 최소화 효과 |
MongoDB Sharding 기능 제공
특징 | 설명 |
Sharding 기능 지원 |
|
Sharding 종류 |
|
Sharding 시스템 구조 |
|
Sharding 방식 |
|
반응형
'MongoDB' 카테고리의 다른 글
[MongoDB] WiredTiger StorageEngine (0) | 2023.03.13 |
---|---|
[MongoDB] Ubuntu MongoDB 설치 - mongoshell 설치 (0) | 2022.11.28 |
[MongoDB] Ubuntu MongoDB 설치 - mongos 설치 (0) | 2022.11.25 |
[MongoDB] Ubuntu MongoDB 설치 - mongoc 설치 (0) | 2022.11.24 |
[MongoDB] Ubuntu MongoDB 설치 - mongod 설치 (0) | 2022.11.23 |