Backend-RoadMap_Scaling Databases

2023. 3. 23. 19:17CS/Backend-RoadMap

728x90

Scaling Databases

  • 데이터 베이스 확장성
  • 응용 프로그램의 변화하는 사용을 지원하기 위해 시스템 리소스의 용량을 확장하거나 축소하는 기능
  • 수평확장
    • 로드를 공유하기 위해 추가 노드를 가져오는 것
    • 관계형 데이터베이스에서는 어려움
    • 쿼리가 노드 간에 함께 조인 할 필요가 없어 노드 간에 보다 간단하게 배포 가능

  • 수직확장
    • 단일 서버 또는 클러스터의 처리 능력을 높이는 것
    • 최대 처리 능력 및 처리량 측면에서 제한
    • 비용이 선형적으로 확장되지 않음
      • 고성능 하드웨어의 경우 비용 증가
    • 장점
      • 데이터베이스를 실행하는 시스템의 하드웨어 사양 외에는 데이터베이스 인프라에 대한 변경 사항이 없다는 것
      • 대규모 저장 및 처리가 필요하지 않은 경우 추천
    • 단점
      • 더 많은 스토리지와 처리 능력을 갖춘 서버가 훨씬 더 비쌀 수 있음
      • 수직 확장에 하드웨어 간 마이그레이션이 필요한 경우 다운타임 또는 서비스 중단이 발생 가능

데이터 복제

  • 데이터베이스의 복사본을 만드는것
  • 노드 중 하나가 다운되어도 클러스터의 다른 노드가 요청에 응답 가능하여 클라이언트의 요청을 처리할 수 있음
  • 스토리지 용량이나 쓰기 요청 처리 능력을 향상시키지는 않음

파티셔닝(sharding)

  • 데이터를 여러 데이터베이스 인스턴스 또는 샤드로 분할하여 성능을 개선하고 단일 데이터베이스에 대한 대량 데이터의 영향을 줄이는 데이터베이스의 수평적 확장을 위한 기술
  • 스토리지 용량 확장 가능
  • 각 노드는 저장된 데이터 처리만 담당
    • 읽기 및 쓰기에 대한 처리 용량 증가

CAP Theorem

  • 분산 컴퓨터 시스템이 아래 3가지를 모두 만족 시킬수 없다는 이론
  • Consistency(일관성)
    • 모든 노드가 같은 순간에 데이터를 볼 수 있다.
  • Availability(가용성)
    • 모든 요청이 성공 또는 실패 결과를 반환 할 수 있다.
  • Partition tolerance(분할내성)
    • 메시지 전달이 실패하거나, 시스템 일부가 망가져도 시스템이 계속 동작할 수 있다.

데이터베이스 indexes

  • index
    • 추가적인 쓰기 작업과 저장공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조

  • 장점
    • 테이블 조회 속도와 그에 따른 성능 향상
    • 전반적인 시스템의 부하 감소
  • 단점
    • 인덱스 관리를 위해 DB의 약 10%에 해당하는 공간 필요
    • 인덱스 관리를 위한 추가 작업 필요
    • 인덱스 잘못 사용시 성능 저하
  • 인덱스를 사용하면 좋은 경우
    • 규모가 큰 테이블
    • Insert, Update, Delete가 자주 발생하지 않는 컬럼
    • JOIN, Where, Order by에 자주 사용되는 컬럼
    • 데이터 중복도가 낮은 컬럼

참고자료

https://www.mongodb.com/databases/scaling

https://mangkyu.tistory.com/96

'CS > Backend-RoadMap' 카테고리의 다른 글

Backend-RoadMap_Web Security Knowlege  (0) 2023.04.11
Backend-RoadMap_APIs  (0) 2023.03.27
Backend-RoadMap_About Database  (0) 2023.03.23
Backend_Roadmap_OS(+파일시스템)  (0) 2023.03.22
Backend-RoadMap_인터넷 개념 정리  (0) 2023.03.21