MongoDB의 특징을 간략하게 정리해 보았습니다.
1. 목적
o 성능
o 확장성
o 편의성
2. 특징 및 장점
o Full Index 지원
-. unique index
-. compound index
-. geospatial index
-. 내부 객체 index
o Auto-Replication
-. 안정성이 높음
-. fail-over
o Auto-Sharding
-. 고가용성
-. 쓰기성능 향상
o 작성 언어
-. C++ 로 개발되어서 퍼포먼스가 좋음
-. Cassandra 같은 경우 Java로 개발되어서 Full GC로 인한 성능저하가 발생할 수 있음
o 복잡한 Query 지원
-. 대부분의 NoSQL DB에 비행 상당히 복잡한 query 도 지원
o Document-oriented DB
-. hbase, cassandra 같은 column family 구조(다소 복잡)와 달리 유연한 구조
-. couchDB 와 같은 문서 지향 DB
o Protocol
-. http/rest 같은 부담이 큰 프로토콜 대신 TCP/IP 이진 와이어 프로토콜을 사용해서 성능이 우수함
o DB 공간을 미리 할당
-. DB 공간을 동적으로 미리 할당해서 일관된 성능 유지
-. 64m, 128m, 2g, 2g, ... 로 증가
o 저장소 기본 엔진
-. memory-mapped file 을 사용해서 메모리 관리 책임을 OS로 넘김
- .메모리 용량이 부족하면 LRU 방식으로 동작하기 때문에 page fault 발생이 증가하여 성능이 저하될 수 있으므로
충분한 메모리 용량을 확보
o 동적 쿼리 옵티마이저 사용
-. 몇개의 실행계획을 동시에 실행해서 가장 먼저 완료한 쿼리를 사용하고 나머지는 종료
-. 주기적으로 다른 실행계획 시도
o 부담을 최소화한 설계
-. 연산과 로직을 드라이버 또는 사용자 어플리케이션에서 처리하도록 클라이언트 몫으로 넘김
o 간편한 관리
-. 서버들이 스스로 관리하도록 설계함
o stored javascript 사용
-. 사용하기 편리한 shell
o bson(binary json) 사용
-. 여백을 많이 사용하지 않고 효율적으로 데이터를 표현하기 위해 설계됨
-. 빠르게 인코딩/디코딩 할 수 있게 설계되어서 성능이 우수
-. 웹에서 접근성이 높음
o Journaling
-. --journal 옵션으로 쉽게 설정
o 데이터 쓰는 방법이 빠름
-. 데이터를 메모리에 저장한 후 나중에 백그라운드 스레드를 통해 디스크에 기록하는 방식으로 성능이 우수함
o 다양한 언어로된 드라이버 제공
o 런타임에 쉽게 변경 할 수 있는 유연한 스키마를 가짐
o 규모가 크거나 작은 모든 곳에 사용 가능
o Map/Reduce
o GridFS
o update 성능 우수
-. no row lock, no table lock
o 컬렉션 기반 저장소
-. 객체 형태로 간편하게 저장
o Commercial Support
-. 10gen 에서 관리, 교육 및 컨설팅을 하는 open source 이기 때문에 믿을수 있음
o 라이센스
-. AGPL
-. drivers(Apache)
3. 단점
o 트랜잭션이 없음
-. 트랜잭션이 중요한 시스템에는 사용할 수 없음. 예)금융, 빌링, 회원테이블...
o join 이 없음
댓글 없음:
댓글 쓰기