Notice
Recent Posts
Recent Comments
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

CogandKim

Mongo DB - Mongo DB Intro(1) 본문

MongoDB

Mongo DB - Mongo DB Intro(1)

김정출 2016. 6. 2. 15:17


Mongo DB - Mongo DB Intro(1)



MongoDB는 강력하고 유연하며 확장성이 높은 범용 DB다. 보조 인덱스, 범위 쿼리, 정렬, 집계, 공간 인덱스 등과 같은

기능과 함께 확장할 수 있는 기능을 결합하였다.



1.1 Easy Using

MongoDB는 문서 지향 데이터베이스이다. 관계형 모델을 사용하지 않는 주된 이유는 분산 확장을 쉽게 하기 위한 것이지만,

다른 이점 또한 있다.


문서 지향 데이터베이스에서는 ‘행'개념 대신에 보다 유연한 모델인 ‘문서'를 사용한다.

내장 문서와 배열을 허용함으로써 문서 지향 모델은 복잡한 계층 관계를 하나의 레코드로 표현할 수 있다.

이 방식은 최신 객체 지향 언어를 사용하는 개발자의 관점에서 매우 적합하다.



또한 MongoDB 에서는 문서의 키와 값을 미리 정의하지 않는다. 따라서 고정된 형태인 스키마(Schema)가 없다.

고정된 스키마가 없기 때문에 필요할 때마다 필드를 추가하거나 제거하는 것이 쉬워졌다.

그 덕분에 개발자는 빠르게 개발 과정을 반복할 수 있어서 개발 속도를 향상 시킬 수 있다.

또한 실험해 보기에도 쉽다.

개발자들은 수십 개의 데이터 모델을 시도해 볼 수 있고 추구하는 최선의 모델을 선택할 수 있다.


1.2 Easy Extension

애플리케이션(Application) 데이터 셋의 크기는 놀라운 속도로 증가하고 있다.

가용 대역폭과 값싼 저장장치의 증가로 인해 작은 애플리케이션에도 현재 DB의 한계를 넘어선 데이터를 저장하는 상황이 되었다.


데이터 증가


저장해야 할 데이터가 증가함에 따라 개발자는 “데이터베이스를 어떻게 확장할 것인가?” 물음

데이터베이스의 확장은 더 큰 장비로 성능 확장(scale-up), 여러 장비에 데이터를 나누어 분산 확장(scale-out)

성능 확장이 간편하지만 단점이 있다. 대형 장비는 가격이 비싸고, 더 이상 확장할 수 없는 물리적 한계에 부딪힌다.

반대로 분산 확장은 저장 공간 또는 성능 향상을 위해 저렴한 서버를 구매해서 클러스터에 추가하는 방법이다.

이는 경제적이고 확장이 더 용이하다.


MongoDB는 분산 확장을 염두에 두고 설계되었다.

문서 지향 데이터 모델은 데이터를 여러 서버에 더 쉽게 분산할 수 있도록 해준다.

문서를 자동적으로 재분배하고 사용자 요청을 올바른 장비에 라우팅 함으로써

클러스터 내 데이터 양과 부하를 조절할 수 있기 때문이다.



1.3 Various Function

MongoDB는 범용 데이터베이스 목적으로 만들어졌기 때문에 데이터의 생성, 읽기, 변경, 삭제 외에도

특별한 기능을 제공한다.

인덱싱 Indexing

MongoDB는 다양한 쿼리의 속도를 빠르게 할 수 있는 일반적인 보조 인덱스 뿐만 아니라

고유 인덱싱, 복합 인덱싱, 공간 정보 인덱싱, 전문(full-text) 인덱싱 기능도 제공


집계 aggregation

MongoDB는 집계 파이프-라인(pipe-line)을 지원하여 단순한 조각들로부터 복잡한 집계를 생성할 수 있게 하며,

데이터베이스가 이를 최적화 할 수 있게 한다.


특수한 콜렉션 유형 Collection

MongoDB는 세션(session)과 같이 특정 시간에 만료되는 데이터에 대한 TTL(Time-To-Live : 유효시간) 콜렉션을 지원

또한, 로그(log)와 같은 최신 데이터를 보유하는 데 유용한 고정 크기의 콜렉션(collection)을 지원


파일 저장소 file storage

큰 파일과 파일 메타 데이터(metadata)를 편리하게 저장할 수 있는 프로토콜(protocol)을 지원



관계형 DB에서는 일반적으로 제공하는 몇몇 기능이 MongoDB에는 없는데, 특히 조인과 복잡한 다중행 트랜잭션이 없다.

이런 기능은 분산시스템에서 효율적으로 제공하기 어렵기 때문에 제외되었으며,

높은 확장성을 제공하는 아키텍처(Architecture)를 위한 결정이다.


1.4 High Performance

문서에 추가 공간을 동적으로 미리 할당하여 둠으로써 저장소를 더 쓰더라도 일관된 성능을 유지할 수 있다.

이는 캐시(cache)처럼 제한된 용량의 램을 사용하여 쿼리에 알맞은 인덱스를 자동적으로 선택하도록 한다.

MongoDB는 고성능을 유지하기 위해 설계



MongoDB가 강력한 성능을 제공하면서도 관계형 시스템의 기능을 최대한 제공하려 하지만,

관계형 DB가 하는 모든 것을 제공하기 위해 만들어진 것은 아니다.

DB Server는 연산과 로직을 드라이버(driver) 또는 사용자 애플리케이션 코드(application code)에서 처리하도록

클라이언트(client) 몫으로 넘긴다.



1.5 Start MongoDB

MongoDB Project는 확장성이 높고 유연하고 빠른, 즉 완전한 기능을 갖춘 데이터 저장소를 만드는 것이 목적!!!



'MongoDB' 카테고리의 다른 글

Mongo DB - Mongo DB Intro(3) MongoDB 3.2.6 Install  (5) 2016.06.02
Mongo DB - Mongo DB Intro(2)  (0) 2016.06.02
MongoDB - RDBMS(관계형데이터베이스)  (0) 2016.06.02
MongoDB - DB Classification  (0) 2016.06.02
MongoDB - DB의 기본(2)  (0) 2016.06.02