'Nosql/MongoDB'에 해당되는 글 1건

  1. 2016.08.22 MongoDB 소개

MongoDB 소개

Nosql/MongoDB 2016. 8. 22. 07:47

1. 정의 

- C++로 작성된 오픈소스 문서지향(Document-Oriented) 적 Cross-platform 데이터베이스


2. 데이터 모델

- Database : Collection 들의 물리적인 컨테이너 로 파일시스템에 여러파일들로 저장된다

- Collection : MongoDB Document의 그룹 으로 schemaless 하다

- Document

- Document는 RDMS의 record 와 비슷한 개념으로 한개이상의 key-value pair 으로 이뤄져있습니다

{

"_id": ObjectId("4b866f08234ae01d21d89604"),

"username": "mr.sense",

"address": { city: "seoul", zipcode: "11140"" }

}

- _id 는 12bytes의 hexadecimal 값으로서, 각 document의 유일함(uniqueness)을 제공 _

- Document 는 동적(dynamic)의 schema 를 갖는다


3. architecture

 

- 구성

- mongos

- mongos demon : router

- config server : sharding meta 정보를 관리한다

- mongod

- primary : read/write

- secondary : read only

4. features

    - hash, range 방식의 sharding 방식 지원

    - auto failover 지원

        - primary node 가 down 시, election 을 통해 secondary 가 primary 로 선출

    - replica

    - primary 의 write 이후 작성되는 oplog 를 전송받아 secondary 에 write 한다(최대 11)


5. 데이터 구조

- 논리 데이터 구조 

- 하나의 collection 에 대해 b-tree 구조 로 복수개의 index 를 관리한다

- extent : 데이터가 저장되는 논리적인 단위

- document : 정렬된 key/value의 집합

- 물리 데이터 구조

- OS에 의해서 제공되는 Virtual Memory를 사용하게 되는데, Pysical Memory 양이 작더라도 Virtual Memory는 훨씬 큰 공간을 가질 수 있다

(하지만 메모리 사이즈가 작으면 page fault 가 자주 발생해서 시스템이 느려진다)

- Virtual Memory는 page라는 블럭 단위로 나뉘어 지고, 이 Block들은 Disk의 block에 mapping이되고, 이 block들의 집합이 하나의 데이타 파일이 된다

- memory block -- OS 에 의한 write --> disk block


6. read / write

    - write 

        

        - step1. primary memory 에 write

        - step2. primary disk 로 flush

        - step3. secondary 요청으로 Oplog 를 복사 후 적용

        - (*) 이 때, write 성공의 조건은 write concern type 에 의해 결정된다

          

    - read

    - https://docs.mongodb.com/manual/core/read-preference/

    - "local" readConcern :  reads from the primary reflect the latest writes in absence of a failover;

- "majority" readConcern : read operations from the primary or the secondaries have eventual consistency.


7. lock

- database 단위의 lock 을 지원한다 == document 의 변경시 database 전체가 write lock 발생


참고

https://docs.mongodb.com

http://bigmatch.i-um.net/2013/12/mongodb%EB%A5%BC-%EC%93%B0%EB%A9%B4%EC%84%9C-%EC%95%8C%EA%B2%8C-%EB%90%9C-%EA%B2%83%EB%93%A4/

Posted by 감각적신사
,