MongoDB in use
MongoDB Korea
김인범
Agenda
I. MongoDB에 대해 알려진 사실
들
II. MongoDB + WiredTiger
III. MongoDB를 이용하면서 느낀
점
IV. MongoDB 모니터링
Intro
 저는 김인범입니다.
 MongoDB Korea에서 활동하고 있
습니다.
 커뮤니티 소개는 기회가 된다
면...
 MongoDB와 관련된 이야기를 하
려 합니다.
1. MongoDB에 대
해
알려진 사실
들(?)
a.k.a?(1)
 잘 다운되지 않나요?
- 1.x ~ 2.2 release 까지는 불안정의 연속
- 상대적으로 사용이 미숙했던 것
도 문제
- 3.x 진입하면서 안정성 확보1. 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
1. MongoDB에 대해 알려진 사실들(?)
a.k.a?(3)
 MongoDB는 저 비용으로 구성하기
에 알맞다?
- 물론 초기에는 저 비용
- 하지만..
- 성능, 용량, 확장성... 다 따지면 ! !1. MongoDB에 대해 알려진 사실들(?)
a.k.a?(4) - Q&A
 MySQL보다 좋다? 나쁘다?
- (제 경험으로) insert/update시의 read 속
도는
- MongoDB 2.6<= MySQL5.5<= MongoDB 3.0
- 데이터 증가할수록 MySQL5.51. MongoDB에 대해 알려진 사실들(?)
a.k.a?(5)
 MongoDB가 Oracle, MySQL을 대체...?
- 아니요...
- 그럴리가요...
- 기분 탓일거예요...
1. MongoDB에 대해 알려진 사실들(?)
a.k.a?(5)
 MongoDB가 Oracle, MySQL을 대체...?
- 물론 미국에서는 Main Stream으로 진
입중
- 하지만 국내에서는.... 아직 오랑캐
DB
1. MongoDB에 대해 알려진 사실들(?)
11. MongoDB
+
WiredTiger
WiredTiger
 3.0 release 부터 도입된 WiredTiger
 mongodb 사용시 엔진 선택 가능
(--storageEngine=“wiredTiger”)
 디폴트 설정시에는 MMAPv1 엔진
사용
 3.2 release부터는 WiredTiger가 디폴트!11. MongoDB + WiredTiger
WiredTiger performance – (1)
 MongoDB 2.6 vs 3.0
11. 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 – (2)
 MongoDB 3.0(MMAP) vs 3.0 (WT)
11. MongoDB + WiredTiger
https://www.mongodb.com/blog/post/performance-testing-mongodb-30-part-1-throughput-improvements-
measured-ycsb (YCSB – Yahoo Cloud Serving Benchmark)
WiredTiger vs TokuMX – Q&A
 쿼리 성능 측면에서 TokuMX가 유
리함
(특히 insert, update)
 두 제품의 data 구조 차이로 인해
성능 차이 발생
WiredTiger : B-Tree 데이터 구조
TokuMX : Fractal tree Indexing11. MongoDB + WiredTiger
TokuMX performance
 TokuMX 2.0.1 vs WiredTiger 3.0
11. MongoDB + WiredTiger
http://benchmark-docs.readthedocs.org/en/latest/mongodb-sysbench-hppro2.html
WiredTiger vs TokuMX – Q&A
 B-tree vs Fractal Tree
11. MongoDB + WiredTiger
https://www.bnl.gov/csc/seminars/abstracts/Bender_Presentation.pdf
WiredTiger vs TokuMX – Q&A
 다만 TokuMX를 써보니...
 CPU 과부하 문제가 발생할 수 있
으며,
모니터링 & 조절 가능하다면
TokuMX 추천
 TokuMX는 도입시에 다양한 측면11. MongoDB + WiredTiger
111. MongoDB를
이용하며 느
낀 점
피할 수 없는 RDBMS와의 비
교 – Q&A(1) 대용량 시스템 운영시 RDBMS 대
비 주의할 점
- 제일 중요한 건 모니터링! (변수
가 더 많음)
- 그 다음 중요한 건 shard key 설정
(효과적인 shard key 설정은 서비스11I. MongoDB를 이용하며 느낀 점
피할 수 없는 RDBMS와의 비
교 – Q&A(2) 대용량 시스템 운영시 RDBMS 대
비 주의할 점
- 장애시 Contingency Plan이 명확해야
함
- 용량별, 시기별 확장 계획이 있다
면 좋음11I. MongoDB를 이용하며 느낀 점
Script 언어를 알면 유리한
MongoDB script언어를 알면 MongoDB 활용성
↑
- 모니터링 shell
- 개인에게 특화된 function 사용
- 다양한 driver 연동11I. MongoDB를 이용하며 느낀 점
MongoDB 를 관리하는 주체는...?
(1) MongoDB를 누가 관리할 것인가?
- 개발자가 이해하기 쉬운 구조
- 하지만 ~DB가 붙고 data가 들어와
서 DBA느낌
- 왠지 모니터링도 잘해야 할 것 같11I. MongoDB를 이용하며 느낀 점
MongoDB 를 관리하는 주체는...?
(2) MongoDB를 누가 관리할 것인가?
- 앞서 열거한 역량을 고루 가진 운
영자
- devops 성격을 가진 조직
(서비스 개발자들이 직접 운영도
수행)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의
변경사항을1V. MongoDB 모니터링
MongoDB Monitoring(8)
 제가 시도해 보고 있는 방법은...
- 해결책으로서, Meteor는 data변화를
탐지하고
observer를 작동시키기 위해 oplog를
사용한다.
- Meteor는 Primary를 tailing하는 Secondary1V. 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
Tips 8.
fragmentation 발생시 compact 보다
‘usePowerOf2Sizes’ 옵션을 사용하
거나, fragmentation이 발생하지
않는 스키마 모델링을 할 것.
V. 운영 Tips
Tips 9.
급하게 성능을 올려야 한다
면
Scale out 보다는 Scale up!
scale out으로 인한 성능 변화가
생각보다 크지
않음.V. 운영 Tips
Tips 10.
release update에 따른 API 변화 및
deprecated 확인 필요!
V. 운영 Tips
Q & A 추가 항목
: 기존에 shard key 재설정 하려
면
Sharding 설정을 다시 해야 됐
는데..
신규 release에서도 같은 상황
인지..V. 운영 Tips
Q&A 추가항목
Q. 기존에 shard key 재설정 하려면
Sharding
설정을 다시 해야 됐는데.. 신규
release에서도 같은 상황인지..
A. 우선 신규 release 에서도 기존과
같이 샤딩
재설정은 불가능.1V. MongoDB 모니터링
Q&A 추가항목
1V. MongoDB 모니터링
https://docs.mongodb.org/manual/faq/sharding/#can-i-change-the-shard-key-after-sharding-a-collection
참고할 만한 곳
 DB 점유율 ranking
(http://db-engines.com/en/ranking)
 mongodb 학습 사이트
(http://university.mongodb.com/)
1V. MongoDB 모니터링
Q & A
감사합니다.
inbum85@gmail.com
https://www.facebook.com/revolutionistK
https://www.facebook.com/groups/krmug/

Mongo db in use(naver)

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