SlideShare a Scribd company logo
MongoDB intro & tips
MongoDB Korea
김인범
Agenda
I. MongoDB Intro
II. MongoDB에 대해 알려진 사실들
III. MongoDB를 이용하면서 느낀 점
IV. MongoDB 모니터링
V. MongoDB 운영 Tips
별첨. MongoDB + WiredTiger
I am...
 저는 김인범입니다.
 MongoDB Korea에서 활동하고 있습니다.
 커뮤니티 소개는 기회가 된다면...
 MongoDB 관련 이야기를 하려 합니다.
1. MongoDB
간단 Intro
MongoDB Intro (1)
1. MongoDB Intro
• Document Oriented Database
• Replication / Sharding
• Multiple Transaction(CRUD) / MR
• Latest Stable Version is 3.2.4 (2016.03)
MongoDB Intro (2)
1. MongoDB Intro
• Document?
MongoDB Intro (3)
1. MongoDB Intro
• Replication / Sharding
MongoDB 주요 구성요소 (1)
1. MongoDB Intro
MongoDB 주요 구성요소 (2)
1. MongoDB Intro
 mongod
- 데이터를 저장, 관리 (복제 정책 적용 가능)
 mongos
- client의 요청 받아 환경 설정 서버의 partitioning
정보를 참고해 적절한 데이터 서버로 요청을 포워딩
 Config Server
- sharding에 대한 환경 설정 서버
- partitioning에 대한 정보를 관리
기억할 것!
1. MongoDB Intro
 mongod
- 데이터를 저장
 mongos
- client와 mongod 서버 간 라우터 역할
 Config Server
- 메타 정보 관리
MongoDB 활용사례
1. MongoDB Intro
1I. MongoDB에 대해
알려진 사실들(?)
a.k.a?(1)
 잘 다운되지 않나요?
- 1.x ~ 2.2 release 까지는 불안정의 연속
- 상대적으로 사용이 미숙했던 것도 문제
- 3.x 진입하면서 안정성 확보
1I. MongoDB에 대해 알려진 사실들(?)
a.k.a?(2)
 Locking은 언제쯤...
- ~ 2.6 release : DB Level Locking
- 3.0 default : Collection Level Locking
- 3.0 wired Tiger : document Level Locking
1I. MongoDB에 대해 알려진 사실들(?)
a.k.a?(3)
 MongoDB는 저 비용으로 구성하기에 알맞다?
- 물론 초기에는 저 비용
- 하지만..
- 성능, 용량, 확장성... 다 따지면 ! ! !
1I. MongoDB에 대해 알려진 사실들(?)
a.k.a?(4)
 MongoDB가 Oracle, MySQL을 대체...?
- 아니요...
- 그럴리가요...
- 기분 탓일거예요...
1I. MongoDB에 대해 알려진 사실들(?)
a.k.a?(5)
 MongoDB가 Oracle, MySQL을 대체...?
- 물론 미국에서는 Main Stream으로 진입중
- 하지만 국내에서는.... 아직 오랑캐 DB
- 서로닮아가는 모습이 특징(Oracle ↔ MongoDB)
1I. MongoDB에 대해 알려진 사실들(?)
111. MongoDB를
이용하며 느낀 점
피할 수 없는 RDBMS와의 비교 – Q&A(1)
 대용량 시스템 운영시 RDBMS 대비 주의할 점
- 제일 중요한 건 모니터링! (변수가 더 많음)
- 그 다음 중요한 건 shard key 설정
(효과적인 shard key 설정은 서비스 데이터에
대한 이해가 충분히 있어야 함)
11I. MongoDB를 이용하며 느낀 점
피할 수 없는 RDBMS와의 비교 – Q&A(2)
 대용량 시스템 운영시 RDBMS 대비 주의할 점
- 장애시 Contingency Plan이 명확해야 함
- 용량별, 시기별 확장 계획이 있다면 좋음
- collection 별로 데이터를 구분하는 습관필요
11I. MongoDB를 이용하며 느낀 점
Script 언어를 알면 유리한 MongoDB
 script언어를 알면 MongoDB 활용성 ↑
- 모니터링 shell
- 개인에게 특화된 function 사용
- 다양한 driver 연동
11I. MongoDB를 이용하며 느낀 점
MongoDB 를 관리하는 주체는...? (1)
 MongoDB를 누가 관리할 것인가?
- 개발자가 이해하기 쉬운 구조
- 하지만 ~DB가 붙고 data가 들어와서 DBA느낌
- 왠지 모니터링도 잘해야 할 것 같으니 서버가이
11I. MongoDB를 이용하며 느낀 점
MongoDB 를 관리하는 주체는...? (2)
 MongoDB를 누가 관리할 것인가?
- 앞서 열거한 역량을 고루 가진 운영자
- devops 성격을 가진 조직
(서비스 개발자들이 직접 운영도 수행)
→ flow 이해 빠르고, bug fix 더 빠름
11I. MongoDB를 이용하며 느낀 점
1V. MongoDB
모니터링
MongoDB Monitoring(1)
 내부 명령어를 이용한 방법
- mongotop (≒ top )
- mongostat (≒ vmstat )
 Shell Scripting의 조합(능력자 ver.)
1V. MongoDB 모니터링
MongoDB Monitoring(2)
 그 외 tool
1V. MongoDB 모니터링
MongoDB Monitoring(3)
 돈을 쓰게 된다면...
- Cloud Manager와 같은 Enterprise version
제품 사용 가능하지만,
- 생각보다 응답시간이 오래 걸림.
- 이상적인 것은 자체 개발
1V. MongoDB 모니터링
MongoDB Monitoring(4)
 흥미 롭게 봤던 외부 tool(PandoraFMS)
- Open Source(GPL2) (Ent. Ver가 따로 존재)
- Ent. Ver는 100 agent부터 비용이 책정됨.
1V. MongoDB 모니터링
MongoDB Monitoring(5)
 흥미 롭게 봤던 외부 tool(PandoraFMS)
1V. MongoDB 모니터링
MongoDB Monitoring(6)
 제가 시도해 보고 있는 방법은...
- 브라우저 / 서버 / 데이터베이스에 이르기까지
자바스크립트로 구성된 풀스택 플랫폼
- 실시간 업데이트 가능 (매번 빌드 하거나, 서버를
내렸다 올리지 않아도 자동 갱신)
1V. MongoDB 모니터링
MongoDB Monitoring(7)
 제가 시도해 보고 있는 방법은...
- MongoDB의 Oplog를 이용한 Monitoring 수행
* oplog : 복제셋 형태로 운영되는 MongoDB
서버간의 동기화를 위해 DB의 변경사항을
저장하는 로그
- app 구성하기에 따라서 visualization이 가능
1V. MongoDB 모니터링
MongoDB Monitoring(8)
 제가 시도해 보고 있는 방법은...
- 해결책으로서, Meteor는 data변화를 탐지하고
observer를 작동시키기 위해 oplog를 사용한다.
- Meteor는 Primary를 tailing하는 Secondary
처럼 행동함
1V. MongoDB 모니터링
MongoDB Monitoring(9)
 제가 시도해 보고 있는 방법은...
1V. MongoDB 모니터링
V. MongoDB
운영 Tips
Tips 1.
충분한 메모리와 SSD, 그리고 CPU!!
V. 운영 Tips
Tips 2.
성능을 고려한다면
동적 스키마를 배제할 것.
V. 운영 Tips
Tips 3.
복제는 필수지만,
샤딩은 충분히 고려해 볼 것.
V. 운영 Tips
Tips 4.
데이터에 대한 이해가 없다면,
shard Key는 포기할 것.
V. 운영 Tips
Tips 5.
성능 향상을 위해 PageFault를
최소화할 수 있는 구성을 할 것.
V. 운영 Tips
Tips 6.
필드 네이밍을 짧게할수록
속도 엄~~~청 빨라짐.
(Key-Value 구조에서 key가 길수록
모두 비용이 됨)
V. 운영 Tips
Tips 7.
document resizing은 엄청난
overhead 발생시키므로, 더미 필드를
미리 만들어 놓는 것도 방법 중 하나.
V. 운영 Tips
Q & A
감사합니다.
inbum85@gmail.com
https://www.facebook.com/revolutionistK
https://www.facebook.com/groups/krmug/
별첨 . MongoDB
+
WiredTiger
WiredTiger
 3.0 release 부터 도입된 WiredTiger
 mongodb 사용시 엔진 선택 가능
(--storageEngine=“wiredTiger”)
 디폴트 설정시에는 MMAPv1 엔진 사용
 3.2 release부터는 WiredTiger가 디폴트!
별첨. MongoDB + WiredTiger
WiredTiger performance – (1)
 MongoDB 2.6 vs 3.0
별첨. MongoDB + WiredTiger
https://www.mongodb.com/blog/post/performance-testing-mongodb-30-part-1-
throughput-improvements-measured-ycsb (YCSB – Yahoo Cloud Serving Benchmark)
WiredTiger performance – (1)
 MongoDB 3.0(MMAP) vs 3.0 (WT)
별첨. MongoDB + WiredTiger
https://www.mongodb.com/blog/post/performance-testing-mongodb-30-part-1-
throughput-improvements-measured-ycsb (YCSB – Yahoo Cloud Serving Benchmark)
TokuMX performance
 TokuMX 2.0.1 vs WiredTiger 3.0
별첨. MongoDB + WiredTiger
http://benchmark-docs.readthedocs.org/en/latest/mongodb-sysbench-hppro2.html
WiredTiger vs TokuMX – Q&A
 쿼리 성능 측면에서 TokuMX가 유리함
(특히 insert, update)
 WiredTiger : B-Tree 데이터 구조
TokuMX : Fractal tree Indexing
 TokuMX는 도입시에 다양한 측면에서
테스트가 필요함(few reference)
별첨. MongoDB + WiredTiger
WiredTiger vs TokuMX – Q&A
 쿼리 성능 측면에서 TokuMX가 유리함
(특히 insert, update)
 WiredTiger : B-Tree 데이터 구조
TokuMX : Fractal tree Indexing
별첨. MongoDB + WiredTiger
WiredTiger vs TokuMX – Q&A
 B-tree vs Fractal Tree
별첨. MongoDB + WiredTiger
https://www.bnl.gov/csc/seminars/abstracts/Bender_Presentation.pdf
WiredTiger vs TokuMX – Q&A
 다만 TokuMX를 써보니...
 CPU 과부하 문제가 발생할 수 있으며,
모니터링 & 조절 가능하다면 TokuMX 추천
 TokuMX는 도입시에 다양한 측면에서
테스트가 필요함(few reference)
별첨. MongoDB + WiredTiger

More Related Content

What's hot (20)

웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화
NAVER D2
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
WebFrameworks
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차
seung-hyun Park
 
Nodejs를 이용한 개발
Nodejs를 이용한 개발Nodejs를 이용한 개발
Nodejs를 이용한 개발
WebFrameworks
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
SU BO KIM
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
흥배 최
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
민태 김
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
YoungSu Son
 
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
NAVER D2
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
흥배 최
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리
흥배 최
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
현욱 김
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
sung ki choi
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
Dan Kang (강동한)
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
DK Lee
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Jeongsang Baek
 
자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰
Woojin Joe
 
Inside node.js
Inside node.jsInside node.js
Inside node.js
Jeongsang Baek
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기
NAVER D2
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화
NAVER D2
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
WebFrameworks
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차
seung-hyun Park
 
Nodejs를 이용한 개발
Nodejs를 이용한 개발Nodejs를 이용한 개발
Nodejs를 이용한 개발
WebFrameworks
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
SU BO KIM
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
흥배 최
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
민태 김
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
YoungSu Son
 
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
NAVER D2
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
흥배 최
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리
흥배 최
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
현욱 김
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
sung ki choi
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
Dan Kang (강동한)
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
DK Lee
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Jeongsang Baek
 
자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰
Woojin Joe
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기
NAVER D2
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 

Viewers also liked (18)

MongoDB: Mastering the shell
MongoDB: Mastering the shellMongoDB: Mastering the shell
MongoDB: Mastering the shell
Scott Hernandez
 
3 scenarios when to use MongoDB!
3 scenarios when to use MongoDB!3 scenarios when to use MongoDB!
3 scenarios when to use MongoDB!
Edureka!
 
Webinar Slides: Become a MongoDB DBA (if you’re really a MySQL user)
Webinar Slides: Become a MongoDB DBA (if you’re really a MySQL user)Webinar Slides: Become a MongoDB DBA (if you’re really a MySQL user)
Webinar Slides: Become a MongoDB DBA (if you’re really a MySQL user)
Severalnines
 
Webinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBWebinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDB
MongoDB
 
MongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB Tick Data Presentation
MongoDB Tick Data Presentation
MongoDB
 
MongoDB
MongoDBMongoDB
MongoDB
jsterce
 
A Brief MongoDB Intro
A Brief MongoDB IntroA Brief MongoDB Intro
A Brief MongoDB Intro
Scott Hernandez
 
MongoDB: Intro & Application for Big Data
MongoDB: Intro & Application  for Big DataMongoDB: Intro & Application  for Big Data
MongoDB: Intro & Application for Big Data
Takahiro Inoue
 
정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)
Sunyoung Kim
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Justin Smestad
 
OSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB TutorialOSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB Tutorial
Steven Francia
 
Query mechanisms for NoSQL databases
Query mechanisms for NoSQL databasesQuery mechanisms for NoSQL databases
Query mechanisms for NoSQL databases
ArangoDB Database
 
Mongo DB
Mongo DBMongo DB
Mongo DB
Edureka!
 
Intro To MongoDB
Intro To MongoDBIntro To MongoDB
Intro To MongoDB
Alex Sharp
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Ravi Teja
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
Heungsub Lee
 
An Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDBAn Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDB
Lee Theobald
 
A Beginners Guide to noSQL
A Beginners Guide to noSQLA Beginners Guide to noSQL
A Beginners Guide to noSQL
Mike Crabb
 
MongoDB: Mastering the shell
MongoDB: Mastering the shellMongoDB: Mastering the shell
MongoDB: Mastering the shell
Scott Hernandez
 
3 scenarios when to use MongoDB!
3 scenarios when to use MongoDB!3 scenarios when to use MongoDB!
3 scenarios when to use MongoDB!
Edureka!
 
Webinar Slides: Become a MongoDB DBA (if you’re really a MySQL user)
Webinar Slides: Become a MongoDB DBA (if you’re really a MySQL user)Webinar Slides: Become a MongoDB DBA (if you’re really a MySQL user)
Webinar Slides: Become a MongoDB DBA (if you’re really a MySQL user)
Severalnines
 
Webinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBWebinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDB
MongoDB
 
MongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB Tick Data Presentation
MongoDB Tick Data Presentation
MongoDB
 
MongoDB: Intro & Application for Big Data
MongoDB: Intro & Application  for Big DataMongoDB: Intro & Application  for Big Data
MongoDB: Intro & Application for Big Data
Takahiro Inoue
 
정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)
Sunyoung Kim
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Justin Smestad
 
OSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB TutorialOSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB Tutorial
Steven Francia
 
Query mechanisms for NoSQL databases
Query mechanisms for NoSQL databasesQuery mechanisms for NoSQL databases
Query mechanisms for NoSQL databases
ArangoDB Database
 
Intro To MongoDB
Intro To MongoDBIntro To MongoDB
Intro To MongoDB
Alex Sharp
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Ravi Teja
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
Heungsub Lee
 
An Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDBAn Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDB
Lee Theobald
 
A Beginners Guide to noSQL
A Beginners Guide to noSQLA Beginners Guide to noSQL
A Beginners Guide to noSQL
Mike Crabb
 
Ad

Similar to Mongo db intro & tips (20)

The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습
Hyun-woo Park
 
(Public)mongo db cncity_energy_inbumkim
(Public)mongo db cncity_energy_inbumkim(Public)mongo db cncity_energy_inbumkim
(Public)mongo db cncity_energy_inbumkim
InBum Kim
 
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)
InBum Kim
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
smartstudy_official
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
NAVER D2
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석
Daeyong Shin
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
OnGameServer
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
beom kyun choi
 
[스마트스터디]MongoDB 의 역습
[스마트스터디]MongoDB 의 역습[스마트스터디]MongoDB 의 역습
[스마트스터디]MongoDB 의 역습
smartstudy_official
 
MongoDB 신제품 및 신기능 소개
MongoDB 신제품 및 신기능 소개MongoDB 신제품 및 신기능 소개
MongoDB 신제품 및 신기능 소개
MongoDB
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
Jin wook
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
Woo Yeong Choi
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosql
Suwon Chae
 
MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기
Seongkuk Park
 
Mongo db 2장
Mongo db  2장Mongo db  2장
Mongo db 2장
dagri82
 
Mongodb cluster
Mongodb clusterMongodb cluster
Mongodb cluster
Kyungsuk Song
 
가장 현대적 이며, 완벽하게 관리되는 데이터베이스 서비스 - MongoDB Atlas - June Kim, 시니어 솔루션즈 아키텍트, Mo...
가장 현대적 이며, 완벽하게 관리되는 데이터베이스 서비스 - MongoDB Atlas - June Kim, 시니어 솔루션즈 아키텍트, Mo...가장 현대적 이며, 완벽하게 관리되는 데이터베이스 서비스 - MongoDB Atlas - June Kim, 시니어 솔루션즈 아키텍트, Mo...
가장 현대적 이며, 완벽하게 관리되는 데이터베이스 서비스 - MongoDB Atlas - June Kim, 시니어 솔루션즈 아키텍트, Mo...
Amazon Web Services Korea
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
HoChul Shin
 
Mongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDMongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUD
Jin wook
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
MongoDB
 
The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습
Hyun-woo Park
 
(Public)mongo db cncity_energy_inbumkim
(Public)mongo db cncity_energy_inbumkim(Public)mongo db cncity_energy_inbumkim
(Public)mongo db cncity_energy_inbumkim
InBum Kim
 
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)
InBum Kim
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
smartstudy_official
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
NAVER D2
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석
Daeyong Shin
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
OnGameServer
 
[스마트스터디]MongoDB 의 역습
[스마트스터디]MongoDB 의 역습[스마트스터디]MongoDB 의 역습
[스마트스터디]MongoDB 의 역습
smartstudy_official
 
MongoDB 신제품 및 신기능 소개
MongoDB 신제품 및 신기능 소개MongoDB 신제품 및 신기능 소개
MongoDB 신제품 및 신기능 소개
MongoDB
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
Jin wook
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
Woo Yeong Choi
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosql
Suwon Chae
 
MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기
Seongkuk Park
 
Mongo db 2장
Mongo db  2장Mongo db  2장
Mongo db 2장
dagri82
 
가장 현대적 이며, 완벽하게 관리되는 데이터베이스 서비스 - MongoDB Atlas - June Kim, 시니어 솔루션즈 아키텍트, Mo...
가장 현대적 이며, 완벽하게 관리되는 데이터베이스 서비스 - MongoDB Atlas - June Kim, 시니어 솔루션즈 아키텍트, Mo...가장 현대적 이며, 완벽하게 관리되는 데이터베이스 서비스 - MongoDB Atlas - June Kim, 시니어 솔루션즈 아키텍트, Mo...
가장 현대적 이며, 완벽하게 관리되는 데이터베이스 서비스 - MongoDB Atlas - June Kim, 시니어 솔루션즈 아키텍트, Mo...
Amazon Web Services Korea
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
HoChul Shin
 
Mongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDMongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUD
Jin wook
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
MongoDB
 
Ad

Mongo db intro & tips

  • 1. MongoDB intro & tips MongoDB Korea 김인범
  • 2. Agenda I. MongoDB Intro II. MongoDB에 대해 알려진 사실들 III. MongoDB를 이용하면서 느낀 점 IV. MongoDB 모니터링 V. MongoDB 운영 Tips 별첨. MongoDB + WiredTiger
  • 3. I am...  저는 김인범입니다.  MongoDB Korea에서 활동하고 있습니다.  커뮤니티 소개는 기회가 된다면...  MongoDB 관련 이야기를 하려 합니다.
  • 5. MongoDB Intro (1) 1. MongoDB Intro • Document Oriented Database • Replication / Sharding • Multiple Transaction(CRUD) / MR • Latest Stable Version is 3.2.4 (2016.03)
  • 6. MongoDB Intro (2) 1. MongoDB Intro • Document?
  • 7. MongoDB Intro (3) 1. MongoDB Intro • Replication / Sharding
  • 8. MongoDB 주요 구성요소 (1) 1. MongoDB Intro
  • 9. MongoDB 주요 구성요소 (2) 1. MongoDB Intro  mongod - 데이터를 저장, 관리 (복제 정책 적용 가능)  mongos - client의 요청 받아 환경 설정 서버의 partitioning 정보를 참고해 적절한 데이터 서버로 요청을 포워딩  Config Server - sharding에 대한 환경 설정 서버 - partitioning에 대한 정보를 관리
  • 10. 기억할 것! 1. MongoDB Intro  mongod - 데이터를 저장  mongos - client와 mongod 서버 간 라우터 역할  Config Server - 메타 정보 관리
  • 13. a.k.a?(1)  잘 다운되지 않나요? - 1.x ~ 2.2 release 까지는 불안정의 연속 - 상대적으로 사용이 미숙했던 것도 문제 - 3.x 진입하면서 안정성 확보 1I. MongoDB에 대해 알려진 사실들(?)
  • 14. a.k.a?(2)  Locking은 언제쯤... - ~ 2.6 release : DB Level Locking - 3.0 default : Collection Level Locking - 3.0 wired Tiger : document Level Locking 1I. MongoDB에 대해 알려진 사실들(?)
  • 15. a.k.a?(3)  MongoDB는 저 비용으로 구성하기에 알맞다? - 물론 초기에는 저 비용 - 하지만.. - 성능, 용량, 확장성... 다 따지면 ! ! ! 1I. MongoDB에 대해 알려진 사실들(?)
  • 16. a.k.a?(4)  MongoDB가 Oracle, MySQL을 대체...? - 아니요... - 그럴리가요... - 기분 탓일거예요... 1I. MongoDB에 대해 알려진 사실들(?)
  • 17. a.k.a?(5)  MongoDB가 Oracle, MySQL을 대체...? - 물론 미국에서는 Main Stream으로 진입중 - 하지만 국내에서는.... 아직 오랑캐 DB - 서로닮아가는 모습이 특징(Oracle ↔ MongoDB) 1I. MongoDB에 대해 알려진 사실들(?)
  • 19. 피할 수 없는 RDBMS와의 비교 – Q&A(1)  대용량 시스템 운영시 RDBMS 대비 주의할 점 - 제일 중요한 건 모니터링! (변수가 더 많음) - 그 다음 중요한 건 shard key 설정 (효과적인 shard key 설정은 서비스 데이터에 대한 이해가 충분히 있어야 함) 11I. MongoDB를 이용하며 느낀 점
  • 20. 피할 수 없는 RDBMS와의 비교 – Q&A(2)  대용량 시스템 운영시 RDBMS 대비 주의할 점 - 장애시 Contingency Plan이 명확해야 함 - 용량별, 시기별 확장 계획이 있다면 좋음 - collection 별로 데이터를 구분하는 습관필요 11I. MongoDB를 이용하며 느낀 점
  • 21. Script 언어를 알면 유리한 MongoDB  script언어를 알면 MongoDB 활용성 ↑ - 모니터링 shell - 개인에게 특화된 function 사용 - 다양한 driver 연동 11I. MongoDB를 이용하며 느낀 점
  • 22. MongoDB 를 관리하는 주체는...? (1)  MongoDB를 누가 관리할 것인가? - 개발자가 이해하기 쉬운 구조 - 하지만 ~DB가 붙고 data가 들어와서 DBA느낌 - 왠지 모니터링도 잘해야 할 것 같으니 서버가이 11I. MongoDB를 이용하며 느낀 점
  • 23. MongoDB 를 관리하는 주체는...? (2)  MongoDB를 누가 관리할 것인가? - 앞서 열거한 역량을 고루 가진 운영자 - devops 성격을 가진 조직 (서비스 개발자들이 직접 운영도 수행) → flow 이해 빠르고, bug fix 더 빠름 11I. MongoDB를 이용하며 느낀 점
  • 25. MongoDB Monitoring(1)  내부 명령어를 이용한 방법 - mongotop (≒ top ) - mongostat (≒ vmstat )  Shell Scripting의 조합(능력자 ver.) 1V. MongoDB 모니터링
  • 26. MongoDB Monitoring(2)  그 외 tool 1V. MongoDB 모니터링
  • 27. MongoDB Monitoring(3)  돈을 쓰게 된다면... - Cloud Manager와 같은 Enterprise version 제품 사용 가능하지만, - 생각보다 응답시간이 오래 걸림. - 이상적인 것은 자체 개발 1V. MongoDB 모니터링
  • 28. MongoDB Monitoring(4)  흥미 롭게 봤던 외부 tool(PandoraFMS) - Open Source(GPL2) (Ent. Ver가 따로 존재) - Ent. Ver는 100 agent부터 비용이 책정됨. 1V. MongoDB 모니터링
  • 29. MongoDB Monitoring(5)  흥미 롭게 봤던 외부 tool(PandoraFMS) 1V. MongoDB 모니터링
  • 30. MongoDB Monitoring(6)  제가 시도해 보고 있는 방법은... - 브라우저 / 서버 / 데이터베이스에 이르기까지 자바스크립트로 구성된 풀스택 플랫폼 - 실시간 업데이트 가능 (매번 빌드 하거나, 서버를 내렸다 올리지 않아도 자동 갱신) 1V. MongoDB 모니터링
  • 31. MongoDB Monitoring(7)  제가 시도해 보고 있는 방법은... - MongoDB의 Oplog를 이용한 Monitoring 수행 * oplog : 복제셋 형태로 운영되는 MongoDB 서버간의 동기화를 위해 DB의 변경사항을 저장하는 로그 - app 구성하기에 따라서 visualization이 가능 1V. MongoDB 모니터링
  • 32. MongoDB Monitoring(8)  제가 시도해 보고 있는 방법은... - 해결책으로서, Meteor는 data변화를 탐지하고 observer를 작동시키기 위해 oplog를 사용한다. - Meteor는 Primary를 tailing하는 Secondary 처럼 행동함 1V. MongoDB 모니터링
  • 33. MongoDB Monitoring(9)  제가 시도해 보고 있는 방법은... 1V. MongoDB 모니터링
  • 35. Tips 1. 충분한 메모리와 SSD, 그리고 CPU!! V. 운영 Tips
  • 36. Tips 2. 성능을 고려한다면 동적 스키마를 배제할 것. V. 운영 Tips
  • 37. Tips 3. 복제는 필수지만, 샤딩은 충분히 고려해 볼 것. V. 운영 Tips
  • 38. Tips 4. 데이터에 대한 이해가 없다면, shard Key는 포기할 것. V. 운영 Tips
  • 39. Tips 5. 성능 향상을 위해 PageFault를 최소화할 수 있는 구성을 할 것. V. 운영 Tips
  • 40. Tips 6. 필드 네이밍을 짧게할수록 속도 엄~~~청 빨라짐. (Key-Value 구조에서 key가 길수록 모두 비용이 됨) V. 운영 Tips
  • 41. Tips 7. document resizing은 엄청난 overhead 발생시키므로, 더미 필드를 미리 만들어 놓는 것도 방법 중 하나. V. 운영 Tips
  • 42. Q & A
  • 45. WiredTiger  3.0 release 부터 도입된 WiredTiger  mongodb 사용시 엔진 선택 가능 (--storageEngine=“wiredTiger”)  디폴트 설정시에는 MMAPv1 엔진 사용  3.2 release부터는 WiredTiger가 디폴트! 별첨. MongoDB + WiredTiger
  • 46. WiredTiger performance – (1)  MongoDB 2.6 vs 3.0 별첨. MongoDB + WiredTiger https://www.mongodb.com/blog/post/performance-testing-mongodb-30-part-1- throughput-improvements-measured-ycsb (YCSB – Yahoo Cloud Serving Benchmark)
  • 47. WiredTiger performance – (1)  MongoDB 3.0(MMAP) vs 3.0 (WT) 별첨. MongoDB + WiredTiger https://www.mongodb.com/blog/post/performance-testing-mongodb-30-part-1- throughput-improvements-measured-ycsb (YCSB – Yahoo Cloud Serving Benchmark)
  • 48. TokuMX performance  TokuMX 2.0.1 vs WiredTiger 3.0 별첨. MongoDB + WiredTiger http://benchmark-docs.readthedocs.org/en/latest/mongodb-sysbench-hppro2.html
  • 49. WiredTiger vs TokuMX – Q&A  쿼리 성능 측면에서 TokuMX가 유리함 (특히 insert, update)  WiredTiger : B-Tree 데이터 구조 TokuMX : Fractal tree Indexing  TokuMX는 도입시에 다양한 측면에서 테스트가 필요함(few reference) 별첨. MongoDB + WiredTiger
  • 50. WiredTiger vs TokuMX – Q&A  쿼리 성능 측면에서 TokuMX가 유리함 (특히 insert, update)  WiredTiger : B-Tree 데이터 구조 TokuMX : Fractal tree Indexing 별첨. MongoDB + WiredTiger
  • 51. WiredTiger vs TokuMX – Q&A  B-tree vs Fractal Tree 별첨. MongoDB + WiredTiger https://www.bnl.gov/csc/seminars/abstracts/Bender_Presentation.pdf
  • 52. WiredTiger vs TokuMX – Q&A  다만 TokuMX를 써보니...  CPU 과부하 문제가 발생할 수 있으며, 모니터링 & 조절 가능하다면 TokuMX 추천  TokuMX는 도입시에 다양한 측면에서 테스트가 필요함(few reference) 별첨. MongoDB + WiredTiger