Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
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
Archives
Today
Total
관리 메뉴

우기TIL

MongoDB 기본 정리 본문

Database/NoSQL

MongoDB 기본 정리

우기왕 2016. 9. 4. 02:28


MongoDB는 NoSQL이다.


NoSQL은 고성능 비관계형 데이터베이스를 뜻합니다. NoSQL에 공통적인 특징으로는 관계형모델을 사용하지 않으면서 스키마가 없는것 또 클러스터[각주:1] 환경에서 잘 작동하는 것이 NoSQL에 공통적인 특징입니다.

지금부터 NoSQL중에 하나 mongoDB에 대해서 알아봅시다.


MongoDB의 특징

  • 문서 지향적인 데이터베이스입니다.

  • 스키마가 없다.

  • 스케일 아웃이 아주 쉽게 가능하다.

      • 스케일 아웃이 쉽게 가능한것은 DB에서 자체적으로 문서를 재분배 해주고 라우팅 처리를 해주기 때문

  • 범용 데이터베이스로 제작됨

      • 인덱스 제공 - 고유인덱스, 복합인덱스, 공간적 인덱스, text 인덱스 등

      • Aggregation(집계) Framework[각주:2] 지원(v 2.2 이상)

      • 특수한 Collection 유형 제공

          • TTL(Time-To-Live : 유효시간) 특정 시간에 데이터가 만료되는 Collection

          • log 같은 최신데이터를 보유할 때 사용하는 고정크기의 Collection (용량이 가득찼을 시 최초에 입력된 데이터 삭제)

      • 파일 저장소의 지원 - 큰 파일과 메타데이터를 편하게 저장할 수 있는 Protocol 지원

  • 조인과 트랜잭션이 없다..(분산 시스템을 위해서 포기)

  • 엄청난 고성능

      • 기존의 RDBMS에 비하여 수십배의 성능을 발휘

      •  단, 연산과 로직을 서버사이드 또는 클라이언트 사이드에서 처리해야 한다.(데이터 조회만 빠르다는...)

이제 MongoDB의 특징을 파악했으니 본격적으로 MongoDB의 개념을 파악해보자.

  1. 문서 Document

      1. 정렬된 키와 연결된 값의 집합으로 이루어진 문서

      2. 네이밍 naming

          1. 문서의 key는 문자열이다.

          2. 대소문자를 구별한다.  

          3. 키에 \0(null 문자)를 포함하지 않는다. (이 문자는 키의 끝을 표시할 때 사용한다.)

          4. .(dot) $(dollar) 특정 상황에만 사용해야 한다. (일반적으로 예약어로 취급한다.)

  2. 콜렉션 Collection

      1. 문서의 모음, RDBMS 에서는 TABLE이라고 볼 수 있다.

      2. 동적 스키마 Dynamic Schema

          1. 하나의 콜렉션 문서가 모든 구조를 수용할 수 있다.

          2. , 저장은 가능하나 일반적으로 데이터형태에 따라서 콜렉션을 분리한다.

              1. 같은 콜렉션내에서 다른 형태의 문서를 저장시 개발자가 관리하기 힘듬

              2. 콜렉션별로 데이터를 조회하는 것이 한 콜렉션에서 특정 데이터를 조회하는 것 보다 훨씬 빠르다.

              3. 인덱싱을 하게 되면 문서는 특정구조를 가져야 한다.(인덱스는 콜렉션별로 정의)

          3. 네이밍 naming - 문서와 유사하다.

              1. 빈 문자열("") 불가, \0 (null문자) 를 사용할 수 없다.

              2. system.으로 시작하는 콜렉션명은 사용 불가 (예약어)

              3. 사용자가 만든 콜렉션에서는 $(dollar) 사용 불가 (예약어)

          4. 서브 콜렉션 Sub-Collection

              1. 콜렉션을 체계화 하는 방법중 하나인 네임스페이스 .(dot)문자를 사용하여 분리 ( coffee.mocha ,  coffee.americano)

              2. 큰 파일을 저장하는 프로토콜 GridFS는 콘텐츠 데이터와 별도로 메타데이터 저장시 서브 콜렉션 사용

              3. , 서브 콜렉션은 체계화가 유일한 목적이지 coffee coffee.mocha는 전혀 상관없다.

  3. 데이터베이스 DB

      1. MongoDB DB에 콜렉션을 집합체

      2. 단일 인스턴스는 여러 DB를 호스팅  할 수 있다.

      3. 하나의 DB는 자체 권한을 가지고 있으면 따로 분리된 파일로 디스크에 저장한다.

      4. 네이밍 naming

          1. 빈 문자열(" ")은 사용불가

          2. /,|, ., ‘’, *, >, <, :, |, ?, $, (단일 공간), \0(null) 의 문자는 이름으로 사용할 수 없다.

          3. 대소문자 구별 (가급적 소문자를 추천)

          4. 최대 64바이트이다.

          5. 예약된 DB name은 사용불가

              1. admin : root DB

              2. local : 복제되지 않기 때문에 특정 서버에만 저장하는 콜렉션에 사용

              3. config : 샤딩 설정시, 내부적으로 샤드정보를 저장시 사용

 

 


  1. 서버클러스터를 기준으로 여러개의 다른 서버들을 하나로 묶어서 하나의 시스템같이 동작하게 함으로써, 클라이언트들에게 고가용성의 서비스를 제공하는 것을 말합니다. [본문으로]
  2. Big Data 추출에 최적화 되어 만들어진 기능입니다. [본문으로]
Comments