Mongo db in use(naver)
-
Upload
inbum-kim -
Category
Data & Analytics
-
view
105 -
download
0
Transcript of Mongo db in use(naver)
MongoDB in use
MongoDB Korea 김인범
Agenda
I. MongoDB 에 대해 알려진 사실들
II.MongoDB + WiredTiger
III.MongoDB 를 이용하면서 느낀 점
IV.MongoDB 모니터링
V. MongoDB 운영 Tips
Intro
저는 김인범입니다 .
MongoDB Korea 에서 활동하고 있습니다 .
커뮤니티 소개는 기회가 된다면 ...
MongoDB 와 관련된 이야기를 하려 합니다 .
1. Mon-goDB 에 대해 알려진 사실들 (?)
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 : docu-ment Level Locking
1. MongoDB 에 대해 알려진 사실들(?)
a.k.a?(3) MongoDB 는 저 비용으로
구성하기에 알맞다 ?
- 물론 초기에는 저 비용
- 하지만 ..
- 성능 , 용량 , 확장성 ... 다 따지면 \! \! \!1. MongoDB 에 대해 알려진 사실들(?)
a.k.a?(4) - Q&A MySQL 보다 좋다 ? 나쁘다 ?
- ( 제 경험으로 ) insert/up-date 시의 read 속도는
- MongoDB 2.6<= MySQL5.5<= MongoDB 3.0
- 데이터 증가할수록 MySQL5.5 < MongoDB 3.0
1. MongoDB 에 대해 알려진 사실들(?)
a.k.a?(5) MongoDB 가 Oracle,
MySQL 을 대체 ...?
- 아니요 ...
- 그럴리가요 ...
- 기분 탓일거예요 ...1. MongoDB 에 대해 알려진 사실들(?)
a.k.a?(5) MongoDB 가 Oracle,
MySQL 을 대체 ...?
- 물론 미국에서는 Main Stream 으로 진입중
- 하지만 국내에서는 .... 아직 오랑캐 DB
- 서로닮아가는 모습이 특징(Oracle ↔ MongoDB)
1. MongoDB 에 대해 알려진 사실들(?)
11. Mon-goDB
+WiredTiger
WiredTiger 3.0 release 부터 도입된
WiredTiger
mongodb 사용시 엔진 선택 가능 (--storageEngine=“wiredTiger”)
디폴트 설정시에는 MMAPv1 엔진 사용
3.2 release 부터는 WiredTiger 가 디폴트 !
11. MongoDB + WiredTiger
WiredTiger perfor-mance – (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 perfor-mance – (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 Indexing
11. MongoDB + WiredTiger
TokuMX per-formance TokuMX 2.0.1 vs
WiredTiger 3.0
11. MongoDB + WiredTigerhttp://benchmark-docs.readthedocs.org/en/latest/mongodb-sysbench-hppro2.html
WiredTiger vs TokuMX – Q&A B-tree vs Fractal Tree
11. MongoDB + WiredTigerhttps://www.bnl.gov/csc/seminars/abstracts/Bender_Presentation.pdf
WiredTiger vs TokuMX – Q&A 다만 TokuMX 를 써보니 ...
CPU 과부하 문제가 발생할 수 있으며 ,모니터링 & 조절 가능하다면 TokuMX 추천
TokuMX 는 도입시에 다양한 측면에서테스트가 필요함 (few ref-erence)
11. MongoDB + WiredTiger
111. Mon-goDB 를 이용하며
느낀 점
피할 수 없는 RDBMS와의 비교 – Q&A(1) 대용량 시스템 운영시
RDBMS 대비 주의할 점
- 제일 중요한 건 모니터링 ! ( 변수가 더 많음 )
- 그 다음 중요한 건 shard key 설정 ( 효과적인 shard key 설정은 서비스 데이터에 대한 이해가 충분히 있어야 함 )
11I. MongoDB 를 이용하며 느낀 점
피할 수 없는 RDBMS와의 비교 – Q&A(2) 대용량 시스템 운영시
RDBMS 대비 주의할 점
- 장애시 Contingency Plan 이 명확해야 함
- 용량별 , 시기별 확장 계획이 있다면 좋음
- collection 별로 데이터를 구분하는 습관필요
11I. MongoDB 를 이용하며 느낀 점
Script 언어를 알면 유리한 MongoDB script 언어를 알면 Mon-
goDB 활용성 ↑
- 모니터링 shell
- 개인에게 특화된 function 사용
- 다양한 driver 연동11I. MongoDB 를 이용하며 느낀 점
MongoDB 를 관리하는 주체는 ...? (1) MongoDB 를 누가 관리할
것인가 ?
- 개발자가 이해하기 쉬운 구조
- 하지만 ~DB 가 붙고 data가 들어와서 DBA 느낌
- 왠지 모니터링도 잘해야 할 것 같으니 서버가이
11I. MongoDB 를 이용하며 느낀 점
MongoDB 를 관리하는 주체는 ...? (2) MongoDB 를 누가 관리할
것인가 ?
- 앞서 열거한 역량을 고루 가진 운영자
- devops 성격을 가진 조직 ( 서비스 개발자들이 직접 운영도 수행 ) → flow 이해 빠르고 , bug fix 더 빠름
11I. MongoDB 를 이용하며 느낀 점
1V. Mon-goDB 모니터링
MongoDB Moni-toring(1) 내부 명령어를 이용한 방법 - mongotop (≒ top ) - mongostat (≒ vmstat )
Shell Scripting 의 조합( 능력자 ver.)
1V. MongoDB 모니터링
MongoDB Moni-toring(2) 그 외 tool
1V. MongoDB 모니터링
MongoDB Moni-toring(3) 돈을 쓰게 된다면 ...
- Cloud Manager 와 같은 Enterprise version 제품 사용 가능하지만 , - 생각보다 응답시간이 오래 걸림 .
- 이상적인 것은 자체 개발1V. MongoDB 모니터링
MongoDB Moni-toring(4) 흥미 롭게 봤던 외부
tool(PandoraFMS)
- Open Source(GPL2) (Ent. Ver 가 따로 존재 )
- Ent. Ver 는 100 agent부터 비용이 책정됨 .1V. MongoDB 모니터링
MongoDB Moni-toring(5) 흥미 롭게 봤던 외부
tool(PandoraFMS)
1V. MongoDB 모니터링
MongoDB Moni-toring(6) 제가 시도해 보고 있는
방법은 ...
- 브라우저 / 서버 / 데이터베이스에 이르기까지 자바스크립트로 구성된 풀스택 플랫폼
- 실시간 업데이트 가능 ( 매번 빌드 하거나 , 서버를 내렸다 올리지 않아도 자동 갱신 )
1V. MongoDB 모니터링
MongoDB Moni-toring(7) 제가 시도해 보고 있는
방법은 ...
- MongoDB 의 Oplog 를 이용한 Monitoring 수행 * oplog : 복제셋 형태로 운영되는 MongoDB 서버간의 동기화를 위해 DB 의 변경사항을 저장하는 로그 - app 구성하기에 따라서 vi-sualization 이 가능
1V. MongoDB 모니터링
MongoDB Moni-toring(8) 제가 시도해 보고 있는
방법은 ...
- 해결책으로서 , Meteor 는 data 변화를 탐지하고 observer 를 작동시키기 위해 oplog 를 사용한다 .
- Meteor 는 Primary 를 tailing 하는 Secondary 처럼 행동함
1V. MongoDB 모니터링
MongoDB Moni-toring(9) 제가 시도해 보고 있는
방법은 ...
1V. MongoDB 모니터링
V. Mon-goDB 운영 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 resiz-ing 은 엄청난 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 에서도 기존과 같이 샤딩
재설정은 불가능 . (3.2 공식 매뉴얼 확인 : https://docs.mongodb.org/manual/faq/sharding/#can-i-change-the-shard-key-after-sharding-a-collection )
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
감사합니다 [email protected]
https://www.facebook.com/revolutionistK
https://www.facebook.com/groups/krmug/