안녕하세요, 김인범입니다.

그 동안김인범의 Sport Paradox를 통해 인사를 드렸는데, 올해부터는 Open Source 이야기도 함께 진행하고자 합니다.

많은 서비스에서 점점 그 비중을 높여가는 다양한 Open Source를 다룰 예정이며, 이번에는 그 첫 시작으로 MongoDB에 대한 이야기를 하고자 합니다.

 

  MongoDB?

우선 MongoDB의 어원부터 알아보겠습니다.

흔히 어감 때문에 몽골과 관련된 가설이 튀어나오는데(실제로 MongoDB 관련 발표 때 가장 많이 들었던 질문이기도 합니다), 실제 몽골과는 관련이 없습니다.

MongoDB에서 Mongo humongous라는 단어에서 비롯되었으며, humongous라는 단어가 가진 의미인거대한의 뜻을 살리기 위해 사용되었습니다. , big data 환경에서 발생하는 방대한 데이터를 처리하기 위한거대한 데이터베이스라는 의미에서 MongoDB라는 이름을 확정 짓게 되었습니다.

10gen에서(현재 사명은 MongoDB) Paas(Platform as a Service)제품의 구성 요소로 개발하기 시작한 것이 시초이며, 2009년에오픈 소스 개발 모델로 정식 발표를 하기에 이르렀습니다.

GNU AGPL + Apache License(drivers)의 듀얼 라이선스이며, MongoDB 제품 자체는 누구나 사용할 수 있는 public release와 기업용으로 발매된 enterprise release가 별도로 존재합니다. 


그림 1. MongoDB (출처 : https://www.mongodb.com/ )

 


  MongoDB의 성장과정

앞서 말씀 드린 것처럼 MongoDB 2009년에 외부에 첫 선을 보였으며, 다음과 같은 과정을 거치며 발전했습니다.

1.x release

초기 버전성능과 안정성 측면에서 모두 문제를 제기 받음.

DB 수준의 Global Lock 문제 등을 포함하여 여러모로 개선이 필요한 시기


2.2 release

aggregation framework, TTL Collection 도입

동시성 향상(Concurrency Improvements)

 

2.4 release

해시 기반 샤딩(Hash-Based Sharding)

Replication 성능 및 안정성 개선

Javascript 엔진 교체 (SpiderMonkey → V8)


2.6 release

쿼리 엔진 개선

보안성 강화

insert, update 속도 및 안정성 개선

 

3.0 release

Wired Tiger Engine 도입(스토리지 엔진선택 가능)

Locking Level 변화

( 2.6 release : DB Level Locking → 3.0 release (Default Engine) : Collection Level Locking → 3.0 release (Wired Tiger Engine) : Document Level Locking )

쿼리로그 관련 개선


3.2 release

기본 스토리지 엔진이 Wired Tiger 엔진으로 변경

Aggregation, 검색 기능 강화, Document Validation 기능 도입

 

release 2.6에 들어서면서 성능과 안정성에서 눈에 띄는 발전을 보였으며, 단점으로 지적 받던 Locking Level 문제도 3.2에서 document level locking(Oracle 기준 row level locking)까지 향상 되었습니다. 2016. 4 27일 기준으로 3.2.6 release가 최신 stable 버전이며, 주기적으로 업데이트가 이루어지고 있습니다.

 

  MongoDB가 주목 받는 이유

국내에서는 2014~2015년을 기점으로 MongoDB를 주목하기 시작했지만, 이미 미국에서는 주류급의 대우를 받는 NoSQL이 되었습니다.


그림 2. DB Engine 순위 (출처 : http://db-engines.com/en/ranking)

 

실제로 DB 엔진 사용률에 따른 순위를 월 단위로 표기하는 DB-Engines(http://db-engines.com/en/)에서 MongoDB는 장기간 4위로 군림하며 높은 인기를 자랑하고 있습니다.(NoSQL중에서 1)

또한 미국 대학생 개발자들을 대상으로 진행한 해커톤에서 가장 많이 사용하는 프로그래밍 언어 & 데이터베이스 순위에서도 MongoDB는 당당히 1위를 차지하며 대중화에도 성공하고 있다는 평가를 받고 있습니다.(http://www.bloter.net/archives/234334)

그럼 MongoDB가 이렇게 주목 받게 된 배경은 무엇일까요?

우선 Schema-less 라 표현되는 유연함을 꼽을 수 있겠습니다. 기존 RDBMS와는 달리 다양한 형태의 데이터를 제약없이 저장할 수 있다는 점이 큰 장점으로 알려져 있습니다. 이는 MongoDB가 제품 초기에 SNS, Log성 데이터에 강하다고 표현한 것과 그 맥을 같이 합니다.

MongoDB document 기반이자 BSON(Binary JSON) 형태라는 것도 많은 개발자들이 MongoDB를 친숙하게 생각하는 이유 중 하나입니다. 기존 RDBMS에서 지원하지 않던 형태의 배열(array)이나 날짜(date) 등의 형태로도 저장할 수 있기 때문에 하나의 document 내에서 이해하기 쉬운 형태로 정보를 저장할 수 있습니다.

다음으로 손 쉬운 설치와 사용을 그 이유라 할 수 있습니다설치해 보신 분은 알겠지만 플랫폼 별로 설치 과정이 그렇게 어렵지 않고 설치 시간도 짧은 편입니다.

MongoDB 공식 사이트에서 제공되는 manual이 매우 정교하고 쉽게 설명되어 있어서 초기 사용자도 어려움 없이 접하기 좋은 편입니다. 


그림 3. MongoDB 매뉴얼 (출처 : https://docs.mongodb.com/manual/)


Sharding Replication으로 인해 확장성과 안정성을 함께 가져갈 수 있다는 것도 장점입니다대량의 데이터를 빠르게 처리해야 하는 환경에서 Sharding 기능은 MongoDB가 빅데이터 시대에 알맞은 도구 중 하나라는 걸 각인 시키기에 충분합니다.

특정 회사(과거 이름 10gen, 현재 사명은 MongoDB)가 기술개발을 주도하고, 이로 인해 주기적인 제품 release update가 이루어지는 것도 큰 장점입니다. 일반적으로 Open Source는 특정 회사가 주도적인 권한과 역할을 쥐고 있는 경우가 많지 않습니다. 하지만 MongoDB의 경우 처음부터 MongoDB(과거 10gen)가 기술개발을 이끌어 왔으며, 6-8개월 단위로 version release가 이루어졌습니다. 이러한 지속적인 release update MongoDB를 사용하는 고객으로 하여금 신뢰감을 갖게 하는 동시에 제품의 무한한 발전 가능성을 기대할 수 있는 요소이기도 합니다.

(2화에서 계속)



저작자 표시 비영리 변경 금지
신고

티스토리 툴바