1.1 손쉬운 사용
MongoDB는 관계형 데이터베이스가 아니라 도큐먼트 지향 데이터 베이스이다.
-> 분산확장을 쉽게하기 위함
-> 내장 도큐먼트와 배열을 허용함으로써 도큐먼트 지향 모델은 복잡한 계층관계를 하나의 레코드로 표현할 수 있다.(최신 객체 지향 언어를 사용하는 개발자의 관점에 매우 적합)
MongoDB는 도큐먼트의 키와 값을 미리 정의하지 않는다. (따라서 고정된 스키마가 없음)
-> 필요할 때마다 쉽게 필드를 추가하거나 제거가능
-> 개발과정을 빠르게 반복할 수 있어 개발 속도 향상
1.2 확장 가능한 설계
분산 확장 : 저장 공강을 늘리거나 처리량(throughput)을 높이고 서버를 구매해서 클러스터에 추가하는 방법
-> 경제적이고 확장이 용이
-> but, 수천 대의 장비를 운영해야 하기 때문에 하나의 장비만 관리할 때 보다 관리가 더 어려워짐
Mongo DB는 분산 확장을 염두에 두고 설계됨
도큐먼트 지향 데이터 모델은 데이터를 여러 서버에 더 쉽게 분산하게 해준다.
도큐먼트를 자동으로 재분배하고 사용자 요청을 올바른 장비에 라우팅함으로써 클러스터 내 데이터 양과 부하를 조절가능
1.3 다양한 기능
Mongo DB는 범용 데이터 베이스로 만들어졌기 때문에 데이터의 생성, 읽기, 변경, 삭제 외에도 데이터베이스 관리 시스템(DBMS)의 대부분의 기능과 인덱싱, 집계, 특수한 컬렉션 유형파일 스토리지 기능을 제공한다.
인덱싱 : 일반적인 보조 인덱스를 지원함.
고유(unique), 복합(compound), 공간정보, 전문(full-text) 인덱싱 기능도 제공한다.
또한, 중첩된 도큐먼트(nested document) 및 배열과 같은 계층 구조의 보조 인덱스도 지원함.
집계 : 데이터 처리 파이프라인 개념을 기반으로 한 집계 프레임워크를 제공함.
특수한 컬렉션 유형 : 로그와 같은 최신 데이터를 유지하고자 세션이나 고정 크기 컬렉션(제한 컬렉션)과 같이 특정 시간에 만료해야하는 데이터에 대해 유효시간(TTL, Time-to-Live) 컬렉션을 지원함.
또한, 기준 필터와 일치하는 도큐먼트에 한정된 부분 인덱스를 지원함으로써 효율성을 높이고 필요한 저장 공간을 줄인다.
파일스토리지 : 큰 파일과 파일 메타데이터를 편리하게 저장하는 프로토콜을 지원한다.
***관계형 데이터 베이스에서 일반적으로 사용되는 일부 기능, 특히 복잡한 조인(Join)은 Mongo DB에 존재하지 않는다.
Mongo DB는 3.2에 도입된 $lookup 집계 연산자를 사용함으로써 매우 제한된 방식으로 조인하도록 지원한다.
3.6 버전에서는 관련 없는 서브쿼리 뿐만 아니라 여러 조인 조건으로 보다 복잡한 조인도 할 수 있다.
두 가지 기능 모두 분산 시스템에서 효율적으로 제공하기 어렵기 때문에, Mongo DB의 조인은 더 큰 확장성을 허용하기 위한 아키텍처적인 결정
(그래서 조인이 있단 건가..?)
1.4 고성능
Mongo DB에서는 동시성(concurrency)과 처리량을 극대화하기 위해 와이어드타이거(wiredTiger), 스토리지 엔진(storage engine)에 기회적 락(Opportunistic locking)을 사용했다.
-> MongoDB는 모든 측면에서 고성능을 유지하기 위해 설계됐다.
강력한 성능을 제공하면서도 관계형 시스템의 많은 기능을 포함
BUT, 관계형 데이터 베이스의 작업을 전부 하려는 것은 아니다.
일부 기능의 경우 데이터베이스 서버는 처리와 로직을 클라이언트 측에 오프로드한다.(드라이버 또는 사용자의 애플리케이션 코드에 의해 처리된다.)
MongoDB의 개념에 대해 배워보는 시간이였다. 아직 코드나 실습을 통해 배운 것이 아닌 이론을 통해서만 들어서 정확하게 머리에 들어오진 않았지만 뒤에 실습과 같이 배우게 된다면 지금 배운 내용들이 정리될 것이라 생각한다. 지금까지 배운 DB는 관계형 데이터 베이스여서 도큐먼트 데이터 베이스를 배우려고 마음을 먹은 것만으로도 신나는 기분이다. 이 기분이 책을 완독할 때까지 이어졌으면 좋겠다.
* 이 글은 몽고 DB 완벽 가이드 3판<한빛미디어> 책을 토대로 작성되었습니다.
'Study > MongoDB' 카테고리의 다른 글
[study] MongoDB 완벽 가이드 3판 - 몽고DB기본(2) (0) | 2021.11.29 |
---|---|
[study] MongoDB 완벽 가이드 3판 - 몽고DB 클라이언트 및 셸 기본 작업 (0) | 2021.11.19 |
[study] MongoDB 완벽 가이드 3판 - 몽고DB시작 (0) | 2021.10.29 |
[study] MongoDB 완벽 가이드 3판 - 몽고DB 기본 (0) | 2021.10.26 |