Main Subject
WebAPI ServerASP.NET CoreMain Subject
  • 과제 개요
  • 추가 학습
    • 샤딩 Sharding
    • Scale out / Scale up
    • 로드밸런싱
    • WSL
  • 구현
    • 계정생성
    • 로그인
    • 권한 확인(미들웨어)
    • 공지 등록 및 전송
    • 우편함
    • 출석부
    • 인앱 결제 아이템 지급
    • 강화
    • 던전 스테이지
  • DB 설계
    • MySQL
    • Redis
  • Coding Conventions
  • [회고]
    • 마음가짐
    • 1주차
    • 2주차
    • 3주차
    • 4주차
    • [5주차]
    • 마치며
Powered by GitBook
On this page
  • 의미
  • 장단점
  • vs 파티셔닝
  • 작동
  • 참고문헌
  1. 추가 학습

샤딩 Sharding

과제에서 "DB는 샤딩하지 않는다"라는 조건이 있음

의미

  • 동일한 스키마를 가지고 있는 여러대의 데이터베이스 서버들에 데이터를 작은 단위로 나누어 분산 저장하는 기법. 대규모 데이터베이스를 여러 머신에 저장하는 프로세스

  • 사용자가 많아져서 데이터 볼륨이 너무 커지면, 데이터베이스에서 병목 현상이 발생함. 작은 청크로 분할하여 여러 데이터베이스 서버에 저장함으로써 이 한계를 극복함

  • 쪼개진 한개의 데이터베이스를 샤드라고 표현함

장단점

  • 응답시간 개선 : 검색하는 전체 데이터 수(튜플 수)가 적어지기 때문에 특정 정보를 검색하거나 쿼리를 실행하는 데 걸리는 시간이 단축 됨

  • 전체 서비스 중단 방지 : 데이터베이스가 여러 서버로 나뉘어 있기 때문에, 하나의 서버에 문제가 생겨도 다른 서버들은 동작할 수 있음(보통 한 샤드를 두개 이상의 서버에 복제해서 운영하기 때문에, 샤드 중 하나를 사용할 수 없어도 대체 샤드에서 데이터에 엑세스 함)

  • 다루기 어려움 : 여러개의 머신의 데이터에 접근해서 데이터를 조합해야하므로 다루기 어려울 수 있음

  • 데이터 쏠림 가능 : 의도치 않게 특정 샤드에 데이터가 몰리게 될 수도 있음

vs 파티셔닝

  • 파티셔닝도 데이터베이스를 나눠서 저장하는 것이긴 한데, 동일한 서버(머신)에 정장함. 샤딩은 다른 서버(머신)에 저장흐는 구조임

작동

  1. 단일 데이터 셋을 샤드키를 기준으로 샤드로 분할함

  2. 각 샤드는 노드라고 불리는 서버(머신)에 각각 저장됨

  3. 데이터베이스에 접근하려는 어플리케이션은 샤드키를 기준으로 노드에 접근하여 샤드의 데이터를 받아옴

참고문헌

Previous추가 학습NextScale out / Scale up

Last updated 2 years ago

AWS
hudi 블로그