January 06, 2020
이번 포스팅에서는 NoSQL의 대표적인 데이터베이스인 MongoDB란 무엇이고, 특징에 대해서 정리해보았습니다.
실무에서는 오라클이나 MySQL과 같은 관계형 데이터베이스가 많이 사용됩니다. 그러나 최근 비관계형 데이터베이스를 적용하는 곳이 늘고 있습니다. 그중에서도 가장 대표적인 NoSQL 데이터베이스가 MongoDB입니다. 몽고디비는 NoSQL이기 때문에 관계형 데이터베이스의 테이블 개념이 없습니다. 그 대신 몽고디비는 여러 데이터가 모인 하나의 단위를 컬렉션(Collection)이라고 부릅니다. 몽고 디비는 데이터 저장소를 가지고 있으며, 그 안에 여러 개의 컬렉션을 넣을 수 있습니다. 즉 데이터베이스는 컬렉션의 집합이라고 할 수 있습니다. 그리고 각각 컬렉션은 여러 개의 문서 객체를 가질 수 있습니다. 문서 객체는 속성들의 집합으로서 한 사람의 이름과 나이 등을 저장하고 싶을 때 하나의 문서객체를 만든 후 그 안에 자바스크립트 객체와 같이 속성들을 추가하여 저장할 수 있습니다.
Document-Oriented Storage
Full Index Support
Auto-Sharing
Querying
Fast In-Place Updates
MapReduce
GridFS
복잡한 쿼리를 사용할 수 없다.
메모리 사용량이 큰 편이다.
데이터베이스에서 말하는 스키마(Schema)는 데이터베이스를 구성하는 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시에 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의하는 것이다. 스키마가 존재한다는 것은 그 구조가 미리 정의되어 있어야 한다는 의미로, 이는 데이터의 급격한 변화에 대응하기 힘들어진다는 것을 뜻한다. 몽고 DB는 이러한 스키마가 사전에 정의되지 않아도 되며, 데이터베이스에 저장된 Document는 각기 다른, 다양한 필드를 가질 수 있다. 또한 각 필드는 서로 다른 데이터 타입을 가질 수 있다.