MongoDB

몽고DB 란?

macro 2011. 10. 13. 18:04
반응형

 몽고DB는 기존의 관계형 데이터베이스가 아니다.

관계형 DB의 테이블, 스키마, SQL, row 라는 컨셉이 없다. 또한 트랜잭션이나 ACID, join, foreign key등도 가지고 있지 않다.

 

그렇다면 몽고DB의 특징은 무엇인가.

 

  •  Document-oriented DB 다.
    • 즉 기존 관계형 DB의 row 처럼 컬럼이 명확히 명시되어 있는 것이 아니라, 하나의 document 안에 들어가는 내용을 아주 유연하게(key,value) 담을 수 있고 계층구조를 가질 수 있다. 
    • 예를 들면, 블로그라는 컬렉션에(나중에 자세히 설명함) 블로그1 이라는 document를 생성했고,
    • 이 document에 저자 : A, 내용 : B, 태크 : [음식점, 중국요리, 맛집]
    • 이렇게 키와 밸류 값을 사용하며, 태그 항목은 배열이 사용되었다.
    • 그다음 블로그2 라는 document를 생성할때는 저자 : [B, C], 내용 : K, 생성일 : 2011.08.31
    • 이러한 방식으로 기존에 없던 생성일을 바로 동적으로 만들 수 있다.
  • Schema-free
    • 위의 예처럼 document 는 키(key)와 밸류(value)를 사용하는데, 스키마를 먼저 정의하지 않고 그냥 카와 밸류값으로 생성하였다.
    • 즉, 미리 스키마를 정의할 필요가 없다.
    • 또한 스키마 변경이 일어나는 경우(RDB의 필드추가 등)도 신경쓸 필요없이 그냥 생성하면 된다.
  • Easy Scaling (확장성)
    • 데이터가 많이 쌓이는 환경(트위터처럼 블로그 글이 계속 생성되어 늘어남)에서는 확장성이 아주 중요하다.
    • 몽고DB는 auto-sharding 방식(나중에 설명함)을 제공하여 클라우드 환경에서의 확장성을 만족시킨다.
    • auto-sharding은 데이터를 분산처리하고 map/reduce를 이용하여 병렬처리를 쉽게 수행할 수 있게 한다.
  • HA (안정성)
    • 기존 RDBMS처럼 master/slaves 방식 제공
    • 그리고 replica-set 이라는 방식을 제공한다. 이는 auto-sharding 방식과 혼합하여 구성할 경우에 band-width, 트래픽 분산 등의 이점을 가져다 준다.

이 글을 읽고 이해가 안가도 그냥 넘어가면 된다. 이런 것이구나 만 알고 넘어가고,

나중에 실제적으로 사용하는 방법과 활용법을 설명하면 자연스레 이해가 될 것이다.

 

 

반응형