241222 CS 스터디

apple-mint·2024년 12월 22일

CS study

목록 보기
15/15

데이터베이스 분할

  • 안정적이고 확장성 높은 데이터베이스 레코드 관리를 위한 기술
  • 테이블을 물리적으로 분할해 레코드를 저장
  • 테이블 내 수많은 레코드를 효율적으로 저장해야 할 때, 데이터베이스 부하 분산을 고려할 때 유용함
  • 분할되어 저장되는 단위를 파티션이라 하며 데이터베이스 파티셔닝이라고도 함

1) 수평적 분할

  • 테이블의 행을 기준으로 테이블을 나누어 저장하는 방식
  • 테이블에 수많은 레코드가 존재하면서 테이블의 레코드 참조 시 모든 레코드를 한번에 불러들일 필요가 없는 경우 사용

수평적 분할

(1) 범위 분할

  • 레코드 데이터가 가질 수 있는 범위를 정의하고 이를 기준으로 테이블을 나누는 방식

(2) 목록 분할

  • 레코드 데이터가 특정 목록에 포함된 값을 가질 경우 해당 레코드를 별도의 테이블로 나누는 방식

(3) 해시 분할

  • 특정 열 데이터의 해시값을 기준으로 별도의 테이블로 나누는 방식

(4) 키 분할

  • 키를 기준으로 별도의 테이블로 나누는 방식
  • 분할된 테이블을 조회 시 특정 레코드가 속한 파티션의 식별은 파티셔닝 키를 통해 이루어짐

(5) 합성 분할

  • 기존에 있는 분할 방식을 결합해 나누는 방식
  • 보통 범위+해시 분할, 범위-목록 분할 방식을 사용함

수평적 분할의 종류

(6) 샤딩

  • 분할된 테이블을 별개의 데이터베이스 서버에 분산, 저장하는 방식
  • 기본적으로 수평적 분할로 만들어진 파티션들은 하나의 서버 내에 위치함
  • 하나의 서버 내에 있을 경우 부하 분산을 기대하기 어려우므로 샤딩을 사용함
  • 분할되어 저장된 단위를 샤드라고 하며, 샤드를 여러 서버에 분산, 저장하는 수평적 분할 기법이라고 할 수 있음

2) 수직적 분할

  • 테이블의 열을 기준으로 테이블을 나누어 저장하는 방식

수직적 분할

  • 테이블에 발생하는 트랜잭션 수에 비해 테이블 내 열이 과도하게 많거나,
  • 특정 열에 속하는 레코드 데이터 크기가 다른 열의 레코드에 비해 크거나,
  • 보안 상의 이유로 특정 열을 별개의 테이블로 나눠야 할 때 사용함

3) 기능적 분할

  • 테이블의 논리적, 기능적 측면을 기준으로 테이블을 나누어 저장하는 방식

기능적 분할

  • 하나의 데이터베이스에서 다양한 비즈니스 기능을 처리할 때,
  • 읽기 전용 데이터, 읽기-쓰기 데이터를 분리할 때 사용함

참고

0개의 댓글