몽고DB

내위키
Dennis (토론 | 기여)님의 2016년 1월 17일 (일) 18:29 판

JSON 방식 문서 기반의 NoSQL 데이터베이스. 2007 10gen에서 개발을 시작해서 2009년에 오픈소스로 공개되었고, 10gen은 아예 회사 이름을 MongoDB Inc.로 바꾸었다. 완전 무료인 커뮤니티 에디션과 유료 지원을 받을 수 있는 엔터프라이즈 에디션 두 가지로 나뉜다.

NoSQL이라는 말이 뜻하는 것처럼 관계형 데이터베이스가 아니다. 일단 테이블이 없다. 관계형은 기본 구조가 데이터베이스 → 테이블이라면 몽고DB는 데이터베이스 → 컬렉션으로 되어 있다. 이 컬렉션을 테이블과 같은 것으로 생각하기 쉽지만 개념이 많이 다르다. 예를 들어 컬렉션이 컬렉션을 품을 수도 있다. 이는 관계형에서 테이블이 다른 테이블을 외래 키로 참조하는 것과는 많이 다르다. 또한 NoSQL 답게 스키마의 일관성을 강제하지 않아서 데이터 구조가 굉장히 유연하다. 관계형 데이터베이스는 테이블을 일단 짜 놓고 데이터가 쌓이면 이 구조를 고치는 게 좀 까다로운 반면, 몽고DB는 그야말로 막 할 수 있다. 예를 들어, 어떤 컬렉션에 새로운 문서를 하나 집어넣으면서 전에는 정의되어 있지 않던 키를 쓸 수도 있다. 그렇다고 기존의 컬렉션에 있던 문서에 이 키가 전부 생기는 것도 아니다.

정형화 되지 않은 데이터가 폭발적으로 늘어나는 빅데이터 시대가 되면서 다른 NoSQL 데이터베이스와 함께 급부상하고 있다. 반면 금융 거래와 같이 데이터의 안전성이나 정확히 절대 중요한 분야에는 적합하지 않다. 모든 데이터는 JSON 형식으로 입출력되며, 이를 '문서'라고 한다. JSON이 자바스크립트 쪽에서 나온 것인 만큼 자바스크립트와 궁합이 좋다. 물론 루비, PHP를 비롯한 어떤 언어에도 붙여 쓸 수 있지만 Node.js에 붙여서 쓰는 NoSQL 데이터베이스로는 가장 많이 쓰이고 있다. 일단 하둡이나 카산드라 같은 다른 NoSQL 데이터베이스에 비해서 진입장벽이 낮고 자바스크립트를 알고 있으면 JSON도 능숙하게 다룰 수 있기 때문. 아예 자바스크립트 언어 한 가지로 프론트엔드-백엔드-데이터베이스까지 퉁칠 수 있는 대표 기술들을 MEAN 스택으로 묶어서 웹 개발 플랫폼으로 사용한다. 자세한 것은 해당 항목 참조.

몽고DB 데이터 질의가 간단한 건 정말 단순해 보이지만 질의문을 무조건 JSON 형태로 만들어야 하기 때문에 조금만 복잡해지면 SQL과는 비교도 안 되게 알아보기 힘들어진다. 이를 보완하기 위해서 몽구스를 많이 쓴다.