Home SD 커뮤니티 Easy Tech

Easy Tech

Easy Tech

NoSQL에서 가장 인기있는 몽고DB의 특징

2019-06-04


NoSQL 중 인기있는
MongoDB

 

몽고DB(MongoDB)는 NoSQL 중 가장 많이 쓰이는 비관계형 데이터베이스 관리시스템으로, 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. JSON과 같은 동적 스키마형 문서들을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 삼간다. 이로써 특정한 종류의 애플리케이션을 더 쉽고 빠르게 데이터 통합을 가능케 한다. 아페로 GPL과 아파치 라이선스를 결합하여 공개된 몽고DB는 자유 오픈소스 소프트웨어다. 몽고DB는 NoSQL 데이터베이스이기 때문에 데이터 객체들이 컬렉션 내부에서 독립된 문서로 저장되는 문서 모델을 기반으로 한다. 

 

NoSQL이 뭘까?

 렇다면 NoSQL은 정확히 무엇일까? NoSQL은 전통적인 관계형 데이터베이스 관리 시스템(RDBMS)과는 다르게 설계된 비관계형 DBMS로, 대규모의 데이터를 유연하게 처리할 수 있는 것이 장점이다. 테이블-칼럼과 같은 스키마 없이, 분산 환경에서 단순 검색 및 추가 작업을 위한 키 값을 최적화하고, 지연(latency)과 처리율(throughput)이 우수하다. 게다가 대규모 확대가 가능한 수평적인 확장성의 특징을 가지고 있고 아파치 카산드라(Apache Cassandra), 하둡(Hadoop), 몽고DB(MongoDB) 등이 있다. RDBMS보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다. 이러한 접근에 대한 동기에는 디자인의 단순화, 수평적 확장성, 세세한 통제를 포함한다. NoSQL은 빅데이터와 실시간 웹 애플리케이션의 상업적 이용에 널리 쓰인다. 

 

 

스키마가 없는 NoSQL
Schemaless

 데이터베이스에서 말하는 스키마(Schema)는 데이터베이스를 구성하는 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시에 데이터값들이 갖는 제약조건 등에 관해 전반적으로 정의하는 것이다. 스키마가 존재한다는 것은 그 구조가 미리 정의되어 있어야 한다는 의미로, 이는 데이터의 급격한 변화에 대응하기가 힘들어진다는 것을 뜻한다. 몽고DB는 이러한 스키마가 사전에 정의되지 않아도 되며, 데이터베이스에 저장된 도큐먼트는 각기 다른, 다양한 필드를 가질 수 있다. 또한 각 필드는 서로 다른 데이터타입을 가질 수 있다.

 
 

MongoDB의
대표적인 특징

MongoDB의 대표적인 특징들을 알아볼까요?



    ▶ Document-Oriented Storage
        : 모든 데이터가 JSON 형태로 저장되며, 스키마가 없다.

    ▶ Full Index Support
        : RDBMS에 뒤치지 않는 다양한 인덱싱을 제공한다.

    ▶ Replication & High Availability
         : 데이터 복제를 통해 가용성을 향상시킬 수 있다.

    ▶ Auto-Sharing
         : Primary key를 기반으로 여러 서버에 데이터를 나누는 scale-out이 가능하다.

    ▶ Querying
         : key 기반의 get, put 뿐만 아니라 다양한 종류의 쿼리들을 제공한다.

    ▶ Fast In-Place Updates
         : 고성능의 atomic operation을 지원한다.

    ▶ MapReduce
         : 맵리듀스를 지원한다.

    ▶ GridFS
         : 별도 스토리지 엔진을 통해 파일을 저장할 수 있다.

 
 

자유로운 Indexing

몽고DB는 가장 많이 쓰이는 MySQL에서 지원하는 지원하는 대부분의 인덱스를 지원한다. 지원하는 인덱스의 목록은 다음과 같다.

 

    ▶ Single Field Indexes
        : 가장 기본적인 인덱스 타입

    ▶ Compound Indexes
        : RDBMS에서 많이 쓰이는 복합 인덱스

    ▶ Multikey Indexes
        : Array에 매칭되는 값이 하나라도 있으면 인덱스에 추가하는 멀티키 인덱스

    ▶ Geospatial Indexes and Queries
        : 위치 기반 인덱스와 쿼리

    ▶ Text Indexes
        : String 컨텐츠에도 인텍싱이 가능

    ▶ Hashed Index
        : BTree 인덱스가 아닌 Hash 타입의 인덱스도 사용 가능

 

 

스토리지 엔진
와이어드타이거(Wired Tiger)

 3년 전 몽고DB는 스토리지 엔진에서 DB 엔진을 분리하는 새로운 아키텍처를 도입했고, MySQL 모델을 취했다. 와이어드타이거(Wired Tiger)는 몽고DB의 기본 스토리지 엔진이다. 이 엔진은 높은 쓰기 성능을 제공하고, 압축을 기본내장해 더 적은 스토리지 비용을 들이게 해준다. 별개의 인메모리와 암호화 데이터스토어를 추가했다. 또한 몽고DB는 스파크 커넥터를 제공해 대용량 인메모리 분석을 지원하게 한다. 컬럼 데이터스토어를 추가할 수도 있고, 스트리밍 데이터도 활용할 수 있다. 몽고DB 기업의 사업은 오픈소스 DB에 다양한 부가기능을 제공하는 서브스크립션 모델을 중심에 둔다. 게다가 클라우드 기반 DB서비스도 제공중이며, 다양한 클라우드 플랫폼을 통해 몽고DB를 이용하거나 몽고DB 자체적으로 제공하는 클라우드 서비스를 이용할 수 있다. 코오롱베니트와 총판 계약을 체결한 몽고DB는 첫 행사로 10월11일 '몽고DB 포럼 서울 2018(가칭)'을 공동 개최해 새롭게 출시된 '몽고DB 4.0' 소개와 몽고DB 아트라스의 새로운 기능을 소개할 계획이다.