SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
흥배 최
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Jeongsang Baek
 

Was ist angesagt? (20)

웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차
 
Nodejs를 이용한 개발
Nodejs를 이용한 개발Nodejs를 이용한 개발
Nodejs를 이용한 개발
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
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 다루기)
 
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
 
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 아꿈사연말모임] 웹소켓과온라인게임
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰자바 네트워크 소녀 Netty 리뷰
자바 네트워크 소녀 Netty 리뷰
 
Inside node.js
Inside node.jsInside node.js
Inside node.js
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 

Andere mochten auch

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
 
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
 
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
 

Andere mochten auch (18)

MongoDB: Mastering the shell
MongoDB: Mastering the shellMongoDB: Mastering the shell
MongoDB: Mastering the shell
 
3 scenarios when to use MongoDB!
3 scenarios when to use MongoDB!3 scenarios when to use MongoDB!
3 scenarios when to use MongoDB!
 
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)
 
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 Tick Data Presentation
MongoDB Tick Data PresentationMongoDB Tick Data Presentation
MongoDB Tick Data Presentation
 
MongoDB
MongoDBMongoDB
MongoDB
 
A Brief MongoDB Intro
A Brief MongoDB IntroA Brief MongoDB Intro
A Brief MongoDB Intro
 
MongoDB: Intro & Application for Big Data
MongoDB: Intro & Application  for Big DataMongoDB: Intro & Application  for Big Data
MongoDB: Intro & Application for Big Data
 
정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
OSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB TutorialOSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB Tutorial
 
Query mechanisms for NoSQL databases
Query mechanisms for NoSQL databasesQuery mechanisms for NoSQL databases
Query mechanisms for NoSQL databases
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Intro To MongoDB
Intro To MongoDBIntro To MongoDB
Intro To MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
An Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDBAn Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDB
 
A Beginners Guide to noSQL
A Beginners Guide to noSQLA Beginners Guide to noSQL
A Beginners Guide to noSQL
 

Ähnlich wie Mongo db intro & tips

Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석
Daeyong Shin
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
ChangKyu Song
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
Jeongsang Baek
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316
기한 김
 

Ähnlich wie Mongo db intro & tips (20)

CoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park Jihun
 
게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016
게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016
게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016
 
[스마트스터디]MongoDB 의 역습
[스마트스터디]MongoDB 의 역습[스마트스터디]MongoDB 의 역습
[스마트스터디]MongoDB 의 역습
 
(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)
 
The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석
 
피니엔진
피니엔진피니엔진
피니엔진
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
(Public)mongo db cncity_energy_inbumkim
(Public)mongo db cncity_energy_inbumkim(Public)mongo db cncity_energy_inbumkim
(Public)mongo db cncity_energy_inbumkim
 
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System
 
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
 
Place site Design
Place site DesignPlace site Design
Place site Design
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
 
Why no Hadoop? What's next?
Why no Hadoop? What's next?Why no Hadoop? What's next?
Why no Hadoop? What's next?
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316
 
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIO
 
산동네 게임 DBA 이야기
산동네 게임 DBA 이야기산동네 게임 DBA 이야기
산동네 게임 DBA 이야기
 

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