Successfully reported this slideshow.
Your SlideShare is downloading. ×

Why GUID is needed

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
How to name a cache key
How to name a cache key
Loading in …3
×

Check these out next

1 of 42 Ad

More Related Content

Advertisement

Recently uploaded (20)

Why GUID is needed

  1. 1. Global Unique ID는 왜 필요할까? charsyam@naver.com
  2. 2. 트위터 같은 서비스를 만든다고 가정해 봅시다.
  3. 3. 트윗을 하나 남깁니다.
  4. 4. 해당 글을 찾을 수 있는 ID는 어떻게 만들어야 할까요?
  5. 5. 트위터는 해당 글을 다음과 같은 형태로 표현합니다. https://twitter.com/charsyam/status/586531712944840704
  6. 6. 겹치면 될까요?
  7. 7. 겹치면 될까요? 당연히 앙되용!!!
  8. 8. 가장 간단한 방법은?
  9. 9. RDBMS의 Auto Increment
  10. 10. RDBMS가 알아서 해줍니다.
  11. 11. Auto Increment(tweet table) ID(Auto Increment) User tweet Like_count Created_At Insert into tweet values (0, 0, ‘test’, 0, now()); 를 실행하면
  12. 12. Auto Increment(tweet table) ID(Auto Increment) User tweet Like_count Created_At 1 0 test 0 2019-06-07 00:50:36 Insert into tweet values (0, 0, ‘test’, 0, now()); 를 실행하면
  13. 13. Auto Increment(tweet table) ID(Auto Increment) User tweet Like_count Created_At 1 0 test 0 2019-06-07 00:50:36 또 Insert into tweet values (0, 0, ‘test’, 0, now()); 를 실행하면
  14. 14. Auto Increment(tweet table) ID(Auto Increment) User tweet Like_count Created_At 1 0 test 0 2019-06-07 00:50:36 2 0 test 0 2019-06-07 00:50:43 또 Insert into tweet values (0, 0, ‘test’, 0, now()); 를 실행하면
  15. 15. Auto Increment(tweet table) ID(Auto Increment) User tweet Like_count Created_At 1 0 test 0 2019-06-07 00:50:36 2 0 test 0 2019-06-07 00:50:43 자동으로 table 에서 유니크한 값으로 계속 증가합니다.
  16. 16. 모든게 해결?
  17. 17. 여러분의 서비스가 너무 잘되서 디비 하나에 모든 tweet이 저장이 되지 않습니다. DB가 두 대가 필요해졌어요.
  18. 18. DB서버가 꽉 찼어요. Tweet #1 Tweet #2 Tweet #3 Tweet #4 Tweet #5 DB서버 #1
  19. 19. 어떻게 해야할가요?
  20. 20. 제일 쉬운 방법
  21. 21. 현재 DB서버 #1에 1~100000 번 까지 저장되어 있다면
  22. 22. 그 뒤에 생기는 100001 부터 전부 DB 서버 #2에만 생성되게 한다. (auto increment에 시작값을 줄 수 있어요.)
  23. 23. DB 서버가 2 대… Tweet #100001Tweet #1 Tweet #2 Tweet #3 …… Tweet #100000 Tweet #100002 새로 생성은 DB 서버 #2로 DB서버 #1 DB서버 #2
  24. 24. 그러면 잘 돌까요?
  25. 25. 그런데 이러면 새로 생성되는 작업은 디비 서버 2에서만 발생합니다.
  26. 26. DB 서버 #2만 부하가 !!! Tweet #100001Tweet #1 Tweet #2 Tweet #3 …… Tweet #100000 Tweet #100002 새로 생성은 전부!!!! DB 서버 #2로 DB서버 #1 DB서버 #2
  27. 27. 심지어 DB 서버 #1에서는 데이터가 지워지기도 Tweet #100001Tweet #1 Tweet #2 Tweet #3 …… Tweet #100000 Tweet #100002 새로 생성은 전부!!!! DB 서버 #2로 DB서버 #1 DB서버 #2
  28. 28. 데이터가 더 늘어서 DB 서버 #3이 생기면 이제 3번만 일하게 됩니다.
  29. 29. DB 서버 #3만 부하가 !!! Tweet #100001Tweet #1 Tweet #2 Tweet #3 …… Tweet #100000 Tweet #100002 DB서버 #1 DB서버 #2 Tweet #200001 Tweet #200002 DB서버 #3 새로 생성은 전부!!!! DB 서버 #3로 Tweet #100003 …… Tweet #200000
  30. 30. 우리의 목표는 다들 비슷하게 일하게 하는 것
  31. 31. 데이터를 섞으면 되지 않을까요?
  32. 32. 아까 그 DB 서버 2대… Tweet #100001Tweet #1 Tweet #2 Tweet #3 …… Tweet #100000 Tweet #100002 DB서버 #1 DB서버 #2
  33. 33. 어떻게 섞어야 하나요?
  34. 34. 이러면 Auto Increment 값은? Tweet #100001Tweet #1 Tweet #2 Tweet #3 …… Tweet #100000Tweet #130002 DB서버 #1 DB서버 #2
  35. 35. 다른 경우를 한번 생각해 봅시다.
  36. 36. 게임 서버 처럼 완전 서로 독립이라면?
  37. 37. 서로 독립적이라… Tweet #1 Tweet #2 Tweet #3 티스라오 서버 카먼 서버 노센레이어 서버 Tweet #1 Tweet #2 Tweet #3 Tweet #1 Tweet #2 Tweet #3 …… …… ……
  38. 38. 서버를 줄여서 데이터를 합쳐야 한다면?
  39. 39. 어떻게 합쳐야 할까요?
  40. 40. 그냥 처음부터 절대로 유니크한 값(GUID)을 쓰면 되지 않을까?
  41. 41. GUID를 만드는 방법은 다음 슬라이드를 참고하세요. https://www.slideshare.net/charsyam2/guid-40504314
  42. 42. Thank you!

×