NoSQL의 대표적인 MongoDB에 대해서 알아보자.

목적

이번 포스팅에서는 NoSQL의 대표적인 데이터베이스인 MongoDB란 무엇이고, 특징에 대해서 정리해보았습니다.

mongodb

MongoDB란?

실무에서는 오라클이나 MySQL과 같은 관계형 데이터베이스가 많이 사용됩니다. 그러나 최근 비관계형 데이터베이스를 적용하는 곳이 늘고 있습니다. 그중에서도 가장 대표적인 NoSQL 데이터베이스가 MongoDB입니다. 몽고디비는 NoSQL이기 때문에 관계형 데이터베이스의 테이블 개념이 없습니다. 그 대신 몽고디비는 여러 데이터가 모인 하나의 단위를 컬렉션(Collection)이라고 부릅니다. 몽고 디비는 데이터 저장소를 가지고 있으며, 그 안에 여러 개의 컬렉션을 넣을 수 있습니다. 즉 데이터베이스는 컬렉션의 집합이라고 할 수 있습니다. 그리고 각각 컬렉션은 여러 개의 문서 객체를 가질 수 있습니다. 문서 객체는 속성들의 집합으로서 한 사람의 이름과 나이 등을 저장하고 싶을 때 하나의 문서객체를 만든 후 그 안에 자바스크립트 객체와 같이 속성들을 추가하여 저장할 수 있습니다.

MongoDB의 대표적인 특징

  • Document-Oriented Storage

    • 모든 데이터가 JSON 형태로 저장되며, 스키마가 없다.
  • Full Index Support

    • RDBMS에 뒤치지 않는 다양한 인덱싱을 제공한다.
  • Auto-Sharing

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

    • Key 기반의 get, put뿐만아니라 다양한 종류의 쿼리들을 제공한다.
  • Fast In-Place Updates

    • 고성능의 atomic operation을 지원한다.
  • MapReduce

    • 맵 리듀스를 지원한다.
  • GridFS

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

MongoDB의 단점

  1. 복잡한 쿼리를 사용할 수 없다.

    • join을 사용할 수 없다.
  2. 메모리 사용량이 큰 편이다.

    • 메모리 부족 시 퍼포먼스가 급락한다.
  3. 데이터 일관성이 보장되지 않는다.

스키마가 없다?

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