mongodbtrends and introduction - rockplace 1... · 2014-12-05 ·...

84
MongoDB Trends and Introduction 우정웅 연구원 Dec. 02, 2014

Upload: others

Post on 26-Apr-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB Trends and Introduction

우정웅 연구원

Dec. 02, 2014

Page 2: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Contents

ⓒ2014 rockPLACE 2

1. MongoDB?

2. MongoDB 주요 특징

3. MongoDB 구조

4. Performance

Page 3: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

rockPLACE

MongoDB?

3ⓒ2014 rockPLACE

Page 4: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• NoSQL(Not Only SQL)- ‘wikipedia’에 따르면, 1988년 카를로 스트로지에

의해 처음 사용된 용어로, 표준 SQL 인터페이스를사용하지 않는 경량의 오픈 소스 관계형 데이터베이스를 지칭

- 하지만, 최근에는 대용량의 데이터를 처리하거나다양한 요구사항에 따라 확장성을 고려하여 출시되는제품들을 Not Only SQL, 즉 NoSQL 이라고 부르게됐다.

ⓒ2014 rockPLACE 4

Page 5: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• NoSQL List (http://nosql-database.org/)

• Wide Column Store / Column Families- Cassandra, HBase

• Document Store- MongoDB, CouchDB

• Key-Value / Tuple Store- DynamoDB, Redis

• Graph Databases- InfoGrid, Titan

ⓒ2014 rockPLACE 5

Page 6: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• DB-Engines Ranking(http://db-engines.com/en/ranking, October 2014)

ⓒ2014 rockPLACE 6

Page 7: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• Cassandra vs. HBase vs. MongoDB(http://db-engines.com/en/system, October 2014)

ⓒ2014 rockPLACE 7

Page 8: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• Cassandra vs. HBase vs. MongoDB(http://db-engines.com/en/ranking_trend, October 2014)

ⓒ2014 rockPLACE 8

Page 9: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• Cassandra vs. HBase vs. MongoDB(http://www.google.com/trends, October 2014)

ⓒ2014 rockPLACE 9

Page 10: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• NoSQL Job Trends (http://regulargeek.com/2014/09/01/nosql-job-trends-august-2014/)

ⓒ2014 rockPLACE 10

Page 11: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• 적용사례(http://www.mongodb.com/use-cases)

ⓒ2014 rockPLACE 11

Page 12: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• NoSQL DB 중 하나이며, NoSQL 제품군 중 가장 많이활용되고 있는 오픈 소스 기반의 DBMS

• Collection으로 이루어진 각각의 데이터베이스들의 집합으로 구성

• Document 방식이기 때문에 유연한 스키마를 지원- Dynamic schema- 구조적 이지 않기 때문에, 다양한 스키마를 쉽게 생성

할 수 있다.- Embedded document와 array를 통해 join에 대한

필요성을 줄일 수 있다.

ⓒ2014 rockPLACE 12

Page 13: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB?

• 높은 성능 및 가용성- Embedding으로 인해 빠른 read/write 가능- 인덱싱을 통한 빠른 검색이 가능

(Memory mapping 기술)- 복제 서버 간 failover 기능을 지원

• 확장성- Automatic sharding을 통해 collection 데이터를 분산- 복제된 서버를 통해 분산된 read가 가능

• 빠르고 사용하기 쉽다.• CAP 이론 중 C(consistency)와 P(Partition tolerance)

ⓒ2014 rockPLACE 13

Page 14: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

rockPLACE

MongoDB 주요 특징

14ⓒ2014 rockPLACE

Page 15: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• Sharding(분산) / Replication(복제) 기능 제공- Automatic Sharding 매커니즘을 이용하여 수평으로 확장

- 이와 같은 매커니즘을 이용하여 ‘Auto load balancing’ 이이루어지고, 자동 장애 복구 기능과 더불어 이론상 으로는MongoDB의 구성을 수백 ~ 수천 개의 노드까지 확장 가능

- 이러한 구성 환경에서, 클라이언트는 Query를 분석해서해당하는 노드들로 리다이렉트 시켜주는 mongos 라는특별한 구성 요소(노드)에 연결

ⓒ2014 rockPLACE 15

Page 16: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• Sharding(분산)- http://docs.mongodb.org/manual/

ⓒ2014 rockPLACE 16

Page 17: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• Sharding(분산)- 데이터의 손실을 피하기 위해, 모든 logical 노드들은

replica set 역할을 하는 다수의 물리적 서버로 구성

- 이러한 인프라를 구축하면 Map/Reduce를 이용하여좋은 성능의 데이터 셋을 사용하는 것이 가능

- 메타데이터를 저장하고 있는 Config 서버가 1개 또는3개의 노드가 별도로 필요로 하며, 다른 노드들과물리적으로 별도의 구성을 권장

ⓒ2014 rockPLACE 17

Page 18: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• Sharding(분산)- http://docs.mongodb.org/manual/

ⓒ2014 rockPLACE 18

Page 19: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• Sharding(분산) / Replication(복제) 기능 제공- MongoDB는 2가지 타입의 replication을 제공

- 장애 복구와 복제를 구현하기 위해 MySQL과마찬가지로 Master-Slave 구성의 복제 기능을 제공하며, 이 기능은 노드 간의 일관성을 높은 수준으로 보장

- Replica Set을 제공하며 기본적으로 Master-Slave와똑같은 동작방식을 보여주지만, ‘Arbiter’를 이용하여 사용자 임의로 새로운 primary를 정하는 것이 가능

ⓒ2014 rockPLACE 19

Page 20: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• Replication(복제) 기능 제공- http://docs.mongodb.org/manual/

ⓒ2014 rockPLACE 20

Page 21: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징• Replication(복제) 기능 제공

- failover 기능 제공(- http://docs.mongodb.org/manual/)

ⓒ2014 rockPLACE 21

Page 22: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• Map/Reduce 기능 제공- 분산된 데이터를 효율적으로 처리- R-DB에서 사용했던 복잡한 query 지원

( join, sub query, union 등)

• Memory Mapping 기반 기술, 빅 데이터를 처리하는데효율적인 성능을 제공- 메모리 상의 가상 Address에 대한 디스크의 물리적

Address를 매핑시켜 불필요한 작업을 최소화

• JSON & BSON Type을 제공

ⓒ2014 rockPLACE 22

Page 23: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• JSON & BSON Type을 제공- JSON(JavaScript Object Notation)- 데이터를 표현하며, ‘field’와 ‘value’로 구성

- String, Number, Boolean, Arrays, Null, Objects/Document

ⓒ2014 rockPLACE 23

Page 24: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• JSON & BSON Type을 제공- BSON(Binary JSON)

- DB에 저장될 때는 Binary 형태로 저장

- JSON, DATE, TIMESTAMP, OBJECT ID 등 현재 까지19가지 데이터 타입을 지원한다.

- 각 프로그래밍 언어에 대한 드라이버가 BSON과JSON으로 상호 변환시켜 주기 때문에, 실제로 사용자가이진 형식으로 만들어진 BSON Dcoument 를 사용 할일은 없다.

ⓒ2014 rockPLACE 24

Page 25: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 주요 특징

• GridFS 이용한 대용량 데이터 저장 기술 제공• Full Index 지원• R-DB와 비슷한 구조의 Query를 제공• hint, explain, profiling 등을 이용하여 최적화 가능• Fast In-Place Updates• Aggregation pipeline을 제공

- 데이터 수집 모델을 위한 프레임워크- Map/Reduce에 대한 대체 기능을 제공하고, 복잡성에

대한 솔루션을 제공- Application code와 요구되는 리소스를 단순화

ⓒ2014 rockPLACE 25

Page 26: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

rockPLACE

MongoDB 구조

26ⓒ2014 rockPLACE

Page 27: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Mongo Shell

• Mongo Shell은 JavaScript shell 이다.• 접속한 후, MongoDB query 및 Map/Reduce, Aggregate,

Index 생성 및 관리 등을 사용• db.help()를 통해 database 관련 query(JavaScript

method)를 확인 가능• db.collection.help()를 통해 collection 단위에서

사용가능 한 query(JavaScript method)를 확인 가능• Mongo Shell에서 사용 가능한 JavaScript API는 다음

url을 참조- http://docs.mongodb.org/manual/reference/method/

ⓒ2014 rockPLACE 27

Page 28: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 용어

ⓒ2014 rockPLACE 28

- http://docs.mongodb.org/manual/

Page 29: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB Query

ⓒ2014 rockPLACE 29

- http://docs.mongodb.org/manual/

Page 30: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB Query

ⓒ2014 rockPLACE 30

- http://docs.mongodb.org/manual/

Page 31: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB Query

ⓒ2014 rockPLACE 31

- http://docs.mongodb.org/manual/

Page 32: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB Query

ⓒ2014 rockPLACE 32

- http://tech.it168.com/a2011/0905/1242/000001242540.shtml

Page 33: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

rockPLACE

Performance

33ⓒ2014 rockPLACE

Page 34: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

• MongoDB의 모든 index 데이터 구조는 B-Tree 방식• Index type은 field나 embedded field, 그리고 sub

document 등에 대해서 index 생성을 지원하며, 다음과같은 type 들이 있다.- Single Field Indexes- Compound Indexes- Multikey Indexes- Geospatial Indexes and Queries- Text Indexes- Hashed Index

ⓒ2014 rockPLACE 34

Page 35: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

- Single Field indexes- http://docs.mongodb.org/manual/

ⓒ2014 rockPLACE 35

Page 36: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

- Compound Indexes- http://docs.mongodb.org/manual/

ⓒ2014 rockPLACE 36

Page 37: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

- Multikey indexes- http://docs.mongodb.org/manual/

ⓒ2014 rockPLACE 37

Page 38: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

- Geospatial Indexes and Queries* 지리 정보를 처리하기 위해 제공되며, 그리고 이를처리하기 위한 query 메커니즘이 제공

- Text Indexes* Document 내에서 텍스트 검색을 지원하기 위해 제공

- Hashed Index* Hashed index는 index를 생성한 필드 값의 hash 항목들을 유지, 관리하기 위해 제공

ⓒ2014 rockPLACE 38

Page 39: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

• Default- db.collection.ensureIndex(<key>, <option>)

• { unique : true }- unique index를 생성할 때 사용

• { sparse : true }- 해당 필드의 값이 존재하는 document 들만으로 인덱스가

생성, 검색 대상 필드의 값이 전체 컬렉션에서 차지하는밀도가 낮은 경우, 쿼리 최적화에 도움

ⓒ2014 rockPLACE 39

Page 40: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

• { dropDups : true }- 동일한 값이 여러 개 저장되어 있는 필드에 dropDups

옵션을 사용하면 최초 입력된 document만 남고 나머지document는 제거된다.

• { background : true }- 일반적으로 index 생성 시 데이터베이스 전체의 성능 지연

현상을 유발 시킬 수 있다. 이에 따라 index 생성 시background의 옵션을 사용하면 다른 데이터베이스의

활동들을 block 하지 않는다.

ⓒ2014 rockPLACE 40

Page 41: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

• Index를 생성한 경우 insert는 항상 느리다.• Update, delete 에는 상황에 따라 달라진다.• Delete에서 많은 document들을 삭제할 때는 index로

부터 해당하는 모든 key들을 삭제해야 되기 때문에속도가 느리다.

• 하지만, 하나의 document만을 삭제할 때는 삭제할document를 바로 찾기 때문에 빠르다.

• 일반적으로, update 역시 delete와 같다.

ⓒ2014 rockPLACE 41

Page 42: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

• Index 생성 후에는, read가 write보다 항상 빠르다.• 일반적으로 index가 많을 수록 빠른 읽기 작업을 수행

하지만, 반대로 index가 많을 수록 쓰기 속도는 느려지는것을 의미한다.

• Index를 생성할 때는 데이터베이스의 다른 작업들을차단할 수 있기 때문에 항상 collection의 size와 시스템자원 등을 충분히 고려

ⓒ2014 rockPLACE 42

Page 43: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Index Concepts)

• 주의사항- index는 물리적 공간을 차지 하기 때문에, 성능상의

이유가 아닌 한 적절하게 사용하는 것이 중요

- ‘_id’ index는 자동으로 생성되며, 필요하지 않다면명시적으로 index를 설정할 필요가 없다.

ⓒ2014 rockPLACE 43

Page 44: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Explain & hint)

• Explain()은 query에 대한 수행 계획을 보여준다.• Explain(true)와 같이 사용할 경우, 기본 정보 보다 더

자세한 설명을 보여준다.• Hint()는 query를 수행할 때 특정 index를 사용하도록

하여 query의 최적화 프로세스를 보장한다.

ⓒ2014 rockPLACE 44

Page 45: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(Explain & hint)

• Explain

ⓒ2014 rockPLACE 45

Page 46: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance

• Covered Query- 여러 개의 field로 생성된 index를 검색할 때, index의

검색 만으로 조건에 만족하는 document들이 추출 될 수있다.

- db.collection.find(~).explain.indexOnly의 값은 true 또는false의 값을 가지는데, 값이 true인 경우 조건을 만족하는데이터를 검색하기 위해 오직 index만을 검색한 것이다.

ⓒ2014 rockPLACE 46

Page 47: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance

• Covered Query- 이러한 방법은 collection에 대한 추가 검색을 피할 수 있기

때문에 성능을 개선시킬 수 있다.

ⓒ2014 rockPLACE 47

Page 48: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(currentOp & killOp)

• currentOp는 mongod나 mongos에서 현재 수행되고있는 operation들을 확인할 수 있다.- currentOp()

• 반대로 killOp는 현재 수행되고 있는 operation들을중단시킬 수 있다.- killOp(<opid>)- <opid>는 currentOp()로 확인 가능하다.

ⓒ2014 rockPLACE 48

Page 49: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(currentOp & killOp)

ⓒ2014 rockPLACE 49

• currentOp & killOp 실행결과

Page 50: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(profile)• Mongod 단위로 실행• read나 write operation, cursor operation 또는 database

command에 대한 데이터 정보를 저장• 사용자가 실행하는 모든 문장들에 대한 로그 정보를

저장하기 때문에, query 문장에 대한 성능 지연 현상이발생하는 경우에는 profile을 통해 해당 문장을 추출하고분석할 수 있는 기능

• profile은 기본적으로 off 상태• 임계값(threshold)을 설정할 수 있으며, 단위는 ms.

ⓒ2014 rockPLACE 50

Page 51: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(profile)• { profile : <level> }

- ‘-1’ = No change, Returns the current profile level.- 0 = Off, No profiling.- 1 = On, Only includes slow operations.- 2 = On, Includes all operations.

• { profile : 1, slowms : 200 }- ‘slowms’ 옵션을 통해서 임계값을 설정할 수 있다.- 위와 같은 경우, profile이 활성화 되어 있으면서 200ms

보다 느린 연산에 대한 로그를 저장한다.

ⓒ2014 rockPLACE 51

Page 52: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(profile)

• system.profile collection에 저장

ⓒ2014 rockPLACE 52

Page 53: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(mongostat&mongotop)

ⓒ2014 rockPLACE 53

• 두 명령어 모두 OS shell에서 실행 가능하며, ‘--help’를통해 관련 도움말을 확인 가능

• Mongostat는 ‘MongoDB’ 내에서 발생하는 다양한 작업(insert, query, update, delete 등)의 상태 정보와 메모리상태(mapped, vsize, res, faults, locked 등) 및 기타시스템 상태 정보를 출력해 주는 유틸리티

Page 54: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(mongostat&mongotop)

ⓒ2014 rockPLACE 54

• vsize : 프로세스의 가상 크기(단위 MB)• faults : 초당 발생하는 pagesFault 수

Page 55: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(mongostat&mongotop)

ⓒ2014 rockPLACE 55

• Set : Replica Set 명

• repl- M : Master- SEC : Secondary- REC : Recovering- UNK : Unknown- SLV : Slave

Page 56: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(mongostat&mongotop)

ⓒ2014 rockPLACE 56

• Mongotop은 ‘MongoDB’ 내의 모든 collection에 대해서read/write의 상태 정보를 제공하는 유틸리티

Page 57: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(MMS)

ⓒ2014 rockPLACE 57

• MMS(MongoDB Management Service)• MMS에는 몇 가지 구성 요소가 있으며, 대표적으로

monitoring과 backup module이 있다.• 제품이나 서비스는 MongoDB와 별개의 project 이지만,

MongoDB 기반의 시스템 관리나 운영에 있어서확실하게 도움을 줄 수 있다.

• MongoDB와 관련된 모든 프로세스 목록들을 확인 가능하다.

Page 58: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(MMS)

ⓒ2014 rockPLACE 58

• Sharding 환경 구성도 확인 가능• 각 노드에 대한 서버의 설정이나 ReplicaSet의 서버에

대해서도 on/off가 가능• Deployment, Servers, Activity, Backup, Dashboard,

Administration 탭을 통해 다양한 정보를 확인 가능• Chart도 사용할 수 있다.

- 단, database 기반의 데이터 일 뿐 database 내의실질적인 데이터가 아니다.

Page 59: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Performance(MMS)

ⓒ2014 rockPLACE 59

Page 60: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

rockPLACE

Sharding

60ⓒ2014 rockPLACE

Page 61: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding

ⓒ2014 rockPLACE 61

• Range based partitioning 기법• Sharding을 구성하기 위해서는 반드시 shard key가

필요하며, 각각의 collection에 대해 서로 다른 shard key를 가질 수 있다.

• Automatic Sharding 메커니즘을 통한 Scale Out- Write Scalability 증가

• Shard key는 2가지에 사용- sort를 위한 방법으로 사용

Page 62: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding

• Shard key는 2가지에 사용- key range 기반에 따라 데이터를 분배

* [k1, k2] -> S2 è k1 <= x <= k2 è x = S2* [a,b) -> S1 è a <= x < b è x = S1

ⓒ2014 rockPLACE 62

- http://docs.mongodb.org/manual/

Page 63: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding

• 기본적으로 MongoDB의 sharding은 2가지 활동이 존재- split(분할)- migrate(이동)

• Split(분할)- 분할 작업은 큰 size의 chunk가 있는지 확인하는 작업

- 해당 chunk의 size가 지정된 chunk size 이상으로 커지면,MongoDB는 chunk를 반으로 분할한다.

- 기본적으로, chunk size는 64MB이다.

ⓒ2014 rockPLACE 63

Page 64: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding

• Split(분할)- http://docs.mongodb.org/manual/

ⓒ2014 rockPLACE 64

Page 65: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding• Migrate(이동)

- shard 간 데이터의 balance를 맞추는 역할- 따라서, shard 간 데이터 size가 불균형 할 경우

shard에서 다른 shard로 데이터를 이동하는 역할- 기본적으로 복제된 데이터가 이동하고, 이동이 끝나면

기존의 데이터는 삭제

ⓒ2014 rockPLACE 65

- http://docs.mongodb.org/manual/

Page 66: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding

• Migrate(이동)- 새로운 shard 번호 및 chunk를 가리키도록 시스템의

메타데이터를 update

- 실제로는 cost가 많이 드는 작업이며, 시스템의 과부하를줄이기 위해 한번에 많은 작업을 하지 않는 것을 권장

- 이러한 migrate 중에도 데이터에 대한 read/write 가능

- 개념적 구성 요소가 아니라, 실제로는 balancer 라는독립형 프로세스를 통해 작업이 이루어짐

ⓒ2014 rockPLACE 66

Page 67: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding

• Balancer Process- Balancer는 chunk migration을 관리하기 위한

background 프로세스

- 정확한 byte 혹은 document, chunk의 수를 맞춰서balancing이 이루어지는 것은 아님

- 더 정교한 balancing을 위한 부분은 앞으로의 버전을통해 지속적으로 업데이트 예정

ⓒ2014 rockPLACE 67

Page 68: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding

• Shard에서 구동되는 또 다른 프로세스- 각 shard 에서는 실제로 데이터가 저장되는 mongod

프로세스가 존재

- config는 cluster의 메타데이터를 저장하기 때문에mongod 프로세스 보다 훨씬 가볍다.

- 데이터 및 구성 요소들을 규합하고, 일종의 router 역할을하기 위한 구성 요소로 mongos 프로세스가 존재* 즉, client와 shard를 연결할 수 있으며 mongos는 영속성

상태가 아니기 때문에 데이터 파일이 없다.

ⓒ2014 rockPLACE 68

Page 69: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding

• Structure- http://docs.mongodb.org/manual/

ⓒ2014 rockPLACE 69

Page 70: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Sharding

• Structure- http://docs.mongodb.org/manual/

ⓒ2014 rockPLACE 70

Page 71: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

rockPLACE

Replica set

71ⓒ2014 rockPLACE

Page 72: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Replica set

• 기본적으로 Master/Slave 구성을 하나의 set라 한다.• Primary와 secondary로 구성되며, secondary 노드는

오로지 read 기능밖에 없다.• Client에 설치된 드라이버를 통해 사용자는 replica set의

어떠한 노드라도 접근이 가능- 장애 발생 시 다른 노드가 primary가 되고, 변경된

노드로 접근을 할 수 있어야 되기 때문

• 장애 현상이 일어났을 경우, 일반적으로 10초 이내에다른 노드가 primary 서버로 선택된다.

ⓒ2014 rockPLACE 72

Page 73: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Replica set

• 이는 사용자가 개입하여 원하는 노드로 선택되도록 할수 있으며, 또는 ‘arbiter’에 의해 자동으로 처리 가능

• 우선 순위를 설정해 둔 경우에는 가장 높은 값을 부여받은 서버가 primary 서버로 된다. (단, 우선 순위 값은 0~1000)

• 이와 같이, 장애 조치와 복구는 replica set의 중요한개념

• Replica set을 구축할 때 replica set의 이름은 관리하기쉽고, 단순하게 정하는 것이 좋다.(내부적으로 사용될 일이 거의 없다.)

ⓒ2014 rockPLACE 73

Page 74: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Replica set(slaveOK)

• 일반적으로 primary에서 기존의 데이터 및 새로운데이터에 대한 정보를 읽을 수 있지만, secondary에서도 데이터를 읽을 수 있다.- primary의 작업량을 줄이기 위해(analytics server)- Read Scalability 증가- Automatic failover를 사용하여 높은 가용성을 제공

• Secondary 멤버에서 read operation을 실행할 수 있도록허용

ⓒ2014 rockPLACE 74

Page 75: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Replica set(Configuration)

ⓒ2014 rockPLACE 75

Page 76: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Replica set(Configuration)

• 가장 일반적으로 사용되는 것이 arbiter - primary 노드가 다운됐을 경우 arbiter가 자동으로

적절한 서버를 선택하여 primary 서버로 바꾼다.

- 그 후, 복구된 이전의 primary는 secondary 서버

- 데이터가 저장되지 않으며 오직 장애 발생시 새로운primary 서버를 선출하기 위해 투표 시에만 사용

- “arbiterOnly:true”을 추가하여 사용

ⓒ2014 rockPLACE 76

Page 77: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Replica set(Configuration)

• priority : <value>- 사용자가 임의로 지정해 놓은 대로 새로운 primary

서버가 될 노드를 표시하기 위해 사용된다.

- 즉, 우선 순위를 이용하여 장애 발생시 예정된 서버가새로운 primary 서버로 선출되도록 하기 위한 방식

- 값이 클 수록 높은 우선 순위를 가짐

- 단, 값이 0일 경우 절대 해당 노드는 절대 primary 서버가 될 수 없는 ‘Only Secondary’ 서버를 의미한다.

ⓒ2014 rockPLACE 77

Page 78: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Replica set(Configuration)

• Hidden Member- 기본적인 복제 이외의 트래픽을 수신하지 않기 때문에

주로 데이터의 backup이나 reporting을 위한 노드로사용된다.

- client로 부터 replicate set의 멤버를 숨길 수 있다.* MongoDB 드라이버나 client는 replica set의 멤버

상태를 판별하기 위해 ‘db.isMaster()’ 메소드를 사용하는데 hidden 멤버는 isMaster() 메소드에서 출력이되지 않는다.

- “hidden:true”를 추가하여 사용

ⓒ2014 rockPLACE 78

Page 79: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Replica set(Configuration)

• Hidden Member- 사용시, 반드시 ‘priority = 0’ 과 함께 사용해야 된다.- 따라서, primary 노드에서 장애가 일어나도 hidden이

포함된 노드는 절대로 primary가 될 수 없다.- Delayed 멤버는 반드시 hidden 옵션이 필요하다.

ⓒ2014 rockPLACE 79

- http://docs.mongodb.org/manual/

Page 80: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Replica set(Configuration)

• slaveDelay(Delayed) Member- primary 서버의 oplog 정보를 secondary 서버에 바로

적용하지 않고 정의된 시간 동안 delay 시킨 후 적용시켜주는 멤버

- “slaveDelay:3600”

- 수치 1당 1초

- 따라서, delay 시간 동안 저장된 데이터는 읽을 수 없다.

- “hidden:true” 옵션과 같이 사용

ⓒ2014 rockPLACE 80

Page 81: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Http Admin UI

• Mongod process의 상태 정보를 확인 할 수 있다.• Http 기반으로 사용되며, 기본 포트 number에 1000을

더하여 web으로 접근할 수 있다.- 기본 port가 27017이면, web admin page를 위한

연결 port는 28017이 된다. - 따라서, ‘localhost:28017’로 접근

• Mongo shell에서 실행되는 ‘rs.status’와 많은 부분이비슷

ⓒ2014 rockPLACE 81

Page 82: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

Http Admin UI

• Mongod process의 상태 정보를 제공해 준다.

ⓒ2014 rockPLACE 82

Page 83: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB 환경 구성도(예시)

• http://www.cumulogic.com/mongodb-as-a-service-on-cumulogic/

ⓒ2014 rockPLACE 83

Page 84: MongoDBTrends and Introduction - rockPLACE 1... · 2014-12-05 · •기본적으로MongoDB의sharding은2가지활동이존재-split(분할)-migrate(이동) •Split(분할)-분할작업은큰size의chunk가있는지확인하는작업-해당chunk의size가지정된chunk

MongoDB on cloud

• 기본적으로 다양한 클라우드 플랫폼을 지원- Amazon Web Services EC2- dotCloud- Joyent Cloud- Rackspace Cloud- Red Hat OpenShift- VMware Cloud Foundry- Windows Azure- Google Compute Engine

ⓒ2014 rockPLACE 84