MONGO DB 잡학상식    MongoDB 한국 사용자 그룹    charsyam@naver.com
NoSQL의 종류
NoSQL의 종류Key-Value StoreColumn-Oriented StoreDocument-Orient Store
NoSQL의 종류Key-Value StoreColumn-Oriented StoreDocument-Orient Store               MongoDB
MongoDB 의 특징
MongoDB의 주요 특징Document-OrientedFull Index SupportQuerying
MongoDB의 주요 특징Document-OrientedFull Index SupportQueryingEasy To Use
Replication
Replication
Master/Slave장애시 Master가 자동으로 선출되지않는다.
Replica SetAutomated FailOverData RedundancyRead Scaling(Low Consistency)MaintenanceDisaster Recovery
Replica Set
OpLogWrite Operation 마다 증가.(insert/update/delete/index/etc)Size 가 고정되어 있다.(Collection)FailOver, Replication 의 핵심
OpTimeclass OpTime {       unsigned i;       unsigned secs;}
IdempotentINC A + 1  이런 형태가 아니라SET A = 2  이런 형태
HeartBeatPrimary - 자신을 포함한 절반 이상의 노드가응답하지 않으면 Secondary 가 된다
HeartBeatSecondary - Primary가 응답이 없으면,Voting을 요청한다.
Primary• Master• Only 1 server in a time
Secondary• Can be thought of as a  slave in the cluster;  varies over time
RECOVERING• getting back in sync  before entering Secondary  mode.
Standard• Primary 가 될 수 있는 노드
Passive• Replica Set 에는 참여하지만  Primary가 될 수 없는 노드• Priority가 0인 노드들
Arbiter• Replica Set에는 참여하지 않  고 투표만을 위한 노드, 데이터는  전달 받지 않는다.
Replication Steps    Primary              Secondary  Call Write Operation   Tailing Primary OpLog    Apply Database       ...
General View
Strong Consistency             Write                     Primary    Driver             Read                     Secondary ...
Eventual Consistency             Write                     Primary    Driver             Read    Secondary             Rea...
FailOver
Automated Leader Election                      Primary     Driver              Write              Read    Primary         ...
Recovery              Read    Secondary     Driver              Write   Primary              Read    Secondary
Recovery
If OpLog Size can save 20H                                  Die 1 Hour                      Primary     Driver            ...
Start Replication                                  Replication              Read    Secondary     Driver              Writ...
If Downtime is 21 Hour                                  Die 21 Hour                      Primary     Driver              W...
Start Replication                                  Need Full Resync                        Stale     Driver              W...
Voting
Triggering an Election• 하나의 노드에서 Primary 가 연결이 안  될때.(단 해당노드는 Arbiter가 아니어  야 함. Heartbeat(timeout:20))• 해당 노드의 priority 가...
Picking Primary1. get maxLocalOpOrdinal from each server.2. if a majority of servers are not up (from this   servers POV),...
Consensus Vote과반 수 이상의 득표가 있어야 선출
Source Flows   repl.cpp             repl/rs.cpp     startReplication       startThreads                        repl/manage...
TIPS
1. 64bit OS를 사용하라.MongoDB는 메모리를 많이 사용해야한다.(MemoryMapped File)32bit 에서는 2.5GB 짜리 DB파일만 생성 가능
2. 많은 메모리를 사용하라.Working Set이 메모리에 모두 들어가 있어야 빠른 속도를 보장한다.
3. ReplSet, Journaling안전성을 위해서 Replica Set과Journaling을 기본으로 사용한다.
4. 최신 버전을 사용하자.1.8.x 보다는 2.0.x 버전을…같은 버전에서도 최신 버전을…Global Write Lock이 2.0.x에서좀 더 개선됨.
4. Scale Up > Shard샤딩 보다는 Scale UP을 먼저 하자.메모리 증가, HDD -> SDD샤드키를 잘 만드는 것보다 이게 더쉽다.
Thank You!
그 외의 이야기들…
Upcoming SlideShare
Loading in …5
×

Mongo db 잡학상식

2,555 views

Published on

Published in: Education, Technology
1 Comment
9 Likes
Statistics
Notes
No Downloads
Views
Total views
2,555
On SlideShare
0
From Embeds
0
Number of Embeds
129
Actions
Shares
0
Downloads
47
Comments
1
Likes
9
Embeds 0
No embeds

No notes for slide

Mongo db 잡학상식

  1. 1. MONGO DB 잡학상식 MongoDB 한국 사용자 그룹 charsyam@naver.com
  2. 2. NoSQL의 종류
  3. 3. NoSQL의 종류Key-Value StoreColumn-Oriented StoreDocument-Orient Store
  4. 4. NoSQL의 종류Key-Value StoreColumn-Oriented StoreDocument-Orient Store MongoDB
  5. 5. MongoDB 의 특징
  6. 6. MongoDB의 주요 특징Document-OrientedFull Index SupportQuerying
  7. 7. MongoDB의 주요 특징Document-OrientedFull Index SupportQueryingEasy To Use
  8. 8. Replication
  9. 9. Replication
  10. 10. Master/Slave장애시 Master가 자동으로 선출되지않는다.
  11. 11. Replica SetAutomated FailOverData RedundancyRead Scaling(Low Consistency)MaintenanceDisaster Recovery
  12. 12. Replica Set
  13. 13. OpLogWrite Operation 마다 증가.(insert/update/delete/index/etc)Size 가 고정되어 있다.(Collection)FailOver, Replication 의 핵심
  14. 14. OpTimeclass OpTime { unsigned i; unsigned secs;}
  15. 15. IdempotentINC A + 1  이런 형태가 아니라SET A = 2  이런 형태
  16. 16. HeartBeatPrimary - 자신을 포함한 절반 이상의 노드가응답하지 않으면 Secondary 가 된다
  17. 17. HeartBeatSecondary - Primary가 응답이 없으면,Voting을 요청한다.
  18. 18. Primary• Master• Only 1 server in a time
  19. 19. Secondary• Can be thought of as a slave in the cluster; varies over time
  20. 20. RECOVERING• getting back in sync before entering Secondary mode.
  21. 21. Standard• Primary 가 될 수 있는 노드
  22. 22. Passive• Replica Set 에는 참여하지만 Primary가 될 수 없는 노드• Priority가 0인 노드들
  23. 23. Arbiter• Replica Set에는 참여하지 않 고 투표만을 위한 노드, 데이터는 전달 받지 않는다.
  24. 24. Replication Steps Primary Secondary Call Write Operation Tailing Primary OpLog Apply Database Write OpLog Write OpLog Apply Database
  25. 25. General View
  26. 26. Strong Consistency Write Primary Driver Read Secondary Secondary
  27. 27. Eventual Consistency Write Primary Driver Read Secondary Read Secondary
  28. 28. FailOver
  29. 29. Automated Leader Election Primary Driver Write Read Primary Read Secondary
  30. 30. Recovery Read Secondary Driver Write Primary Read Secondary
  31. 31. Recovery
  32. 32. If OpLog Size can save 20H Die 1 Hour Primary Driver Write Read Primary Read Secondary
  33. 33. Start Replication Replication Read Secondary Driver Write Primary Read Secondary
  34. 34. If Downtime is 21 Hour Die 21 Hour Primary Driver Write Read Primary Read Secondary
  35. 35. Start Replication Need Full Resync Stale Driver Write Primary Read Secondary
  36. 36. Voting
  37. 37. Triggering an Election• 하나의 노드에서 Primary 가 연결이 안 될때.(단 해당노드는 Arbiter가 아니어 야 함. Heartbeat(timeout:20))• 해당 노드의 priority 가 다른 노드보다 크거나 같을 경우.
  38. 38. Picking Primary1. get maxLocalOpOrdinal from each server.2. if a majority of servers are not up (from this servers POV), remain in Secondary mode and stop.3. if the last op time seems very old, stop and await human intervention.4. else, using a consensus protocol, pick the server with the highest maxLocalOpOrdinal as the Primary.
  39. 39. Consensus Vote과반 수 이상의 득표가 있어야 선출
  40. 40. Source Flows repl.cpp repl/rs.cpp startReplication startThreads repl/manager.cpp repl/rs.cpp msgCheckNewState startRepSets repl/rs.cpp _go
  41. 41. TIPS
  42. 42. 1. 64bit OS를 사용하라.MongoDB는 메모리를 많이 사용해야한다.(MemoryMapped File)32bit 에서는 2.5GB 짜리 DB파일만 생성 가능
  43. 43. 2. 많은 메모리를 사용하라.Working Set이 메모리에 모두 들어가 있어야 빠른 속도를 보장한다.
  44. 44. 3. ReplSet, Journaling안전성을 위해서 Replica Set과Journaling을 기본으로 사용한다.
  45. 45. 4. 최신 버전을 사용하자.1.8.x 보다는 2.0.x 버전을…같은 버전에서도 최신 버전을…Global Write Lock이 2.0.x에서좀 더 개선됨.
  46. 46. 4. Scale Up > Shard샤딩 보다는 Scale UP을 먼저 하자.메모리 증가, HDD -> SDD샤드키를 잘 만드는 것보다 이게 더쉽다.
  47. 47. Thank You!
  48. 48. 그 외의 이야기들…

×