분산 데이터베이스·파티션 설계와 데이터 배치
분산 데이터베이스의 분할·복제·할당과 투명성, 분산 트랜잭션을 파티션 설계와 구분해 이해합니다. 파티션 방식·프루닝·파티션 인덱스·운영 단위를 접근 패턴과 장애·복구 요구에 맞춰 선택하는 개요 단원입니다.
핵심 요약
분산 데이터베이스는 논리적으로 하나의 데이터베이스를 여러 사이트에 배치하는 설계이고, 테이블 파티션은 하나의 논리 테이블·인덱스를 DBMS 내부의 여러 저장 단위로 나누는 설계이다. 두 방식 모두 데이터를 나누지만, 분산 설계는 네트워크·복제·분산 질의·분산 트랜잭션을 추가로 다루며 파티션 설계는 파티션 키, 프루닝, 인덱스와 운영 단위가 핵심이다.
업무·데이터 분석
├─ 한 DBMS 안에서 대용량 객체를 나눌 필요 → 파티션 설계
└─ 지역·시스템·노드에 데이터를 배치할 필요 → 분산 설계
├─ 분할(Fragmentation)
├─ 복제(Replication)
└─ 할당/배치(Allocation)
학습 목표
- 수평·수직·혼합 분할, 복제, 할당과 위치·분할·중복 투명성을 구분합니다.
- 범위·목록·해시·복합 파티션의 선택 기준과 파티션 프루닝 조건을 판별합니다.
- 로컬·글로벌 인덱스의 일반적 차이와 파티션 유지보수·백업 단위의 관계를 설명합니다.
- 분산 질의와 2단계 커밋의 목적·비용·장애 위험을 사례에 적용합니다.
1. 개념 설명
1.1 분산 데이터베이스의 세 가지 설계 요소
- 분할(Fragmentation): 논리 데이터 집합을 여러 조각으로 나눈다.
- 수평 분할: 행을 조건에 따라 나눈다. 예: 고객의
지역코드별 배치. - 수직 분할: 열을 나누되 원래 행을 재구성할 식별자를 함께 둔다.
- 혼합 분할: 수평·수직 분할을 단계적으로 결합한다.
- 수평 분할: 행을 조건에 따라 나눈다. 예: 고객의
- 복제(Replication): 같은 조각의 사본을 둘 이상의 사이트에 둔다. 읽기 가용성과 지역 접근성은 좋아질 수 있지만 갱신 전파·충돌·지연을 관리해야 한다.
- 할당/배치(Allocation): 각 조각과 복제본을 어느 사이트에 둘지 결정한다. 데이터 소유 부서, 접근 빈도, 네트워크 비용, 규제, 장애 영역을 함께 본다.
1.2 분산 투명성
투명성은 사용자가 물리 배치를 지나치게 의식하지 않고 논리 데이터에 접근하도록 하는 성질이다.
| 투명성 | 사용자가 숨기고 싶은 물리적 사실 | 시험 함정 |
|---|---|---|
| 위치 투명성 | 데이터가 어느 사이트에 있는지 | 위치를 숨긴다고 네트워크 비용까지 없어지는 것은 아니다. |
| 분할 투명성 | 데이터가 어떤 조각으로 나뉘었는지 | 조각을 재구성할 규칙과 키가 필요하다. |
| 중복·복제 투명성 | 복제본의 수와 위치 | 복제 일관성 정책과 장애 시 기준 복제본이 필요하다. |
1.3 분산 질의와 분산 트랜잭션
분산 질의는 여러 사이트의 데이터를 읽거나 조인하므로 데이터 이동량, 원격 호출 횟수, 조인 수행 위치가 성능을 좌우한다. 가능하면 조건을 원격 사이트에 먼저 적용하고 필요한 데이터만 이동하는 것이 유리하지만, 최적 전략은 통계·네트워크·DBMS 기능에 따라 달라진다.
2단계 커밋(2PC)은 여러 참여 시스템의 원자적 완료를 조정한다.
1단계 Prepare: 조정자가 각 참여자에게 커밋 가능 여부 확인
2단계 Commit/Rollback: 모두 준비되면 커밋, 하나라도 실패하면 롤백
2PC는 원자성을 높이지만 준비 상태의 자원이 잠금·로그를 보유할 수 있고 조정자 장애 시 미결정(in-doubt) 상태가 생길 수 있다. 따라서 타임아웃, 복구 절차, 상태 조회와 보상 설계를 함께 둔다.
1.4 파티션 방식
| 방식 | 분배 기준 | 적합한 상황 | 주의점 |
|---|---|---|---|
| 범위(Range) | 날짜·번호의 구간 | 기간 조회, 오래된 구간 삭제·교체 | 최근 구간 집중, 경계값 누락·중첩 |
| 목록(List) | 명시한 값 집합 | 지역·업무유형처럼 값 종류가 제한됨 | 새 값이 들어올 기본/예외 처리 |
| 해시(Hash) | 해시 함수 결과 | 균등 분산, 특정 구간 의미가 약함 | 범위 삭제·기간 관리에 불리 |
| 복합(Composite) | 둘 이상의 방식 결합 | 기간 관리와 내부 균등 분산을 함께 원함 | 파티션 수와 운영 복잡도 증가 |
1.5 파티션 프루닝과 인덱스
파티션 프루닝은 조건과 파티션 키의 관계를 이용해 불필요한 파티션을 접근 대상에서 제외하는 최적화다. 파티션을 만들었다고 항상 프루닝되는 것은 아니며, 조건이 파티션 키와 연결되지 않거나 변환·함수 사용 때문에 최적화기가 경계를 추론하지 못하면 여러 파티션을 읽을 수 있다.
일부 DBMS는 다음과 같이 파티션 인덱스를 구분한다.
- 로컬 인덱스: 테이블 파티션과 대응하는 인덱스 파티션을 가진다. 파티션 단위 유지보수와 독립성이 유리한 편이다.
- 글로벌 인덱스: 여러 테이블 파티션의 행을 하나의 전역 인덱스 구조에서 다룬다. 파티션 키와 다른 조건의 전역 탐색에 유리할 수 있으나 파티션 이동·삭제 시 관리 부담이 커질 수 있다.
구체적인 명칭·제약·유지보수 동작은 DBMS 제품별로 다르므로 보편 원리와 제품 기능을 구분해야 한다.
2. 구성요소와 관계
| 설계 질문 | 확인할 정보 | 잘못 선택했을 때의 징후 |
|---|---|---|
| 무엇을 나눌 것인가 | 행·열·업무·기간·지역 경계 | 재조인이 많고 조각 간 규칙이 모호함 |
| 어떤 키를 쓸 것인가 | 분포도, 선택도, 증가 방향, 핵심 조건 | 데이터 편향, 핫 파티션, 전 노드 조회 |
| 복제할 것인가 | 읽기/쓰기 비율, 지연 허용, 장애 목표 | 오래된 값, 충돌, 쓰기 지연 |
| 어디에 배치할 것인가 | 사용자 위치, 규제, 장애 영역, 네트워크 | 원격 호출 증가, 지역 장애의 동시 영향 |
| 어떻게 운영할 것인가 | 재배치, 파티션 추가·교체, 백업·복구 | 경계값 오류, 인덱스 비정상, 복구 시간 증가 |
3. 판단 흐름
- 업무 경계와 접근 패턴 분석: 지역성, 기간성, 조인·집계, 쓰기 집중, 데이터 증가량을 수치로 확인한다.
- 단일 DB 파티션과 분산 배치의 필요를 분리: 관리 단위만 필요한지, 실제 노드·사이트 분리가 필요한지 결정한다.
- 키와 방식 후보 설계: 범위·목록·해시·복합, 수평·수직 분할, 복제 여부를 후보로 만든다.
- 정량 검증: 최대/평균 파티션 크기, 노드별 행 수, 교차 노드 트랜잭션 비율, 원격 데이터 이동량을 비교한다.
- 장애·운영 검증: 노드 장애, 네트워크 분할, 재샤딩, 파티션 교체, 백업·복구를 연습한다.
- 재측정: 실제 쿼리 계획과 분포를 확인하고 편향·프루닝 실패를 수정한다.
4. 사례·텍스트 다이어그램
사례: 지역 샤딩과 월 파티션을 함께 사용한 주문 시스템
논리 주문 데이터
├─ 수도권 노드: ORDER_2026_07, ORDER_2026_08, ...
├─ 중부권 노드: ORDER_2026_07, ORDER_2026_08, ...
└─ 남부권 노드: ORDER_2026_07, ORDER_2026_08, ...
수도권 주문이 전체의 70%이고 전국 매출 집계가 매시간 실행된다면 지역코드만으로 샤딩한 설계는 편향과 전 노드 집계를 만든다. 해결책은 단순히 노드를 추가하는 것이 아니라 다음을 비교하는 것이다.
- 지역+해시의 복합 분배 또는 고객 식별자 기반 분배
- 집계 전용 복제본·요약 테이블
- 전국 트랜잭션과 지역 트랜잭션의 분리
- 재배치 중 이중 쓰기·검증·전환 절차
월 파티션은 보관·삭제와 기간 조회를 돕지만, 전국 집계의 노드 간 데이터 이동 문제를 직접 해결하지는 않는다.
5. 비교와 구분
| 구분 | 파티션 | 샤딩/분산 배치 | 복제 |
|---|---|---|---|
| 주된 목적 | 대용량 객체의 관리·접근 범위 축소 | 저장·처리 부하를 여러 노드에 분산 | 읽기 가용성·지역 접근·장애 대응 |
| 논리 데이터 | 한 테이블로 보이는 경우가 많음 | 여러 노드의 조각을 논리적으로 통합 | 동일 데이터의 복수 사본 |
| 핵심 위험 | 경계 오류, 프루닝 실패, 파티션 과다 | 편향, 교차 노드 조인·트랜잭션 | 지연, 충돌, 기준 사본 결정 |
| 대표 판단 | 파티션 키와 조건의 정합성 | 분할·할당·투명성·2PC 비용 | 동기/비동기, 일관성·장애 정책 |
시험 판단 포인트
- 수평 분할은 행, 수직 분할은 열을 나누며 수직 분할은 원래 행을 재구성할 식별자를 보존해야 한다.
- 위치·분할·중복 투명성은 물리 배치를 숨기는 개념이지 네트워크·동기화 비용을 제거하는 개념이 아니다.
- 2PC는 분산 원자성을 위한 조정 절차이며 성능 향상 기법이 아니다.
- 파티션 프루닝의 전제는 조건이 파티션 경계와 연결되는 것이다.
- 로컬·글로벌 인덱스의 구체적 동작은 제품 종속적이지만, 운영 독립성과 전역 탐색의 trade-off는 구분해야 한다.
자주 틀리는 부분
- 파티션과 샤딩을 모두 “데이터를 나누는 것”이라는 이유로 같은 개념으로 본다.
- 해시 파티션을 사용하면 모든 업무 조건에서 프루닝이 잘 된다고 단정한다.
- 복제본을 추가하면 백업이 필요 없다고 판단한다. 논리 오류와 잘못된 삭제도 복제될 수 있다.
- 업무 의미가 있는 열을 분할 키로 바로 선택하고 실제 분포도와 교차 접근 비율을 확인하지 않는다.
- 2PC의 준비 상태가 자원을 오래 보유할 수 있다는 점과 장애 복구 절차를 누락한다.
개념 확인 문제
문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.
01[객관식] 분산 데이터베이스의 분할 방식에 대한 설명으로 가장 적절한 것은? ① 수평 분할은 열을 나누며 모든 조각에 기본키를 제거한다. ② 수직 분할은 열을 나누되 재구성을 위한 식별자를 보존한다. ③ 복제는 데이터 조각을 서로 다른 값으로 변경하는 과정이다. ④ 할당은 파티션 키의 자료형만 선택하는 작업이다.
정답: ②
- ① 수평 분할은 행을 조건에 따라 나눈다. 수직 분할에서 재구성 키를 제거하면 원래 행을 안정적으로 합치기 어렵다.
- ② 수직 분할은 열 집합을 나누며 보통 각 조각에 공통 식별자를 둔다.
- ③ 복제는 같은 데이터의 사본을 두는 것이며 임의로 서로 다른 값으로 만드는 과정이 아니다.
- ④ 할당은 조각·복제본을 어느 사이트에 둘지 정하는 작업이다.
02[객관식] 파티션 프루닝에 대한 설명으로 옳은 것은? ① 파티션 테이블이면 모든 질의가 한 파티션만 읽는다. ② 조건과 파티션 키의 관계를 최적화기가 판단할 수 있어야 불필요한 파티션을 제외할 수 있다. ③ 글로벌 인덱스가 있으면 테이블 파티션은 항상 모두 읽는다. ④ 해시 파티션은 기간별 삭제에 항상 가장 유리하다.
정답: ②
- ① 파티션이 있어도 조건이 파티션 키와 무관하면 여러 파티션을 접근할 수 있다.
- ② 프루닝은 조건으로 제외 가능한 파티션을 판단하는 최적화다.
- ③ 글로벌 인덱스의 존재만으로 테이블 접근 범위를 단정할 수 없다.
- ④ 기간 보관·삭제에는 일반적으로 범위 파티션이 더 직접적이며, 해시는 균등 분산에 초점이 있다.
03[연결형] 위치 투명성, 분할 투명성, 중복 투명성을 각각 ‘사이트 위치’, ‘조각 구성’, ‘복제본 수·위치’와 연결하세요.
정답: 위치 투명성→사이트 위치, 분할 투명성→조각 구성, 중복 투명성→복제본 수·위치.
- 투명성은 사용자가 물리 배치를 덜 의식하게 하지만, 분산 처리 비용과 일관성 통제까지 없애지는 않는다.
04[사례 판단] 지역코드 샤딩 후 한 지역에 70%의 데이터가 집중되고 전국 집계가 모든 노드를 읽는다. 우선 확인할 지표 두 가지와 개선 후보 두 가지를 제시하세요.
모범 답안:
- 우선 지표: 노드별 행 수·저장량의 최대/평균 비율, 전국 질의의 교차 노드 호출 수·데이터 이동량. 추가로 노드별 쓰기 TPS와 95/99백분위 응답시간도 유효하다.
- 개선 후보: 지역+해시 또는 다른 고카디널리티 키로 재분배, 전국 집계용 요약/복제 구조, 지역 트랜잭션과 전역 분석 경로 분리 중 두 가지 이상.
- 단순 노드 증설만으로는 기존 키의 편향과 전 노드 집계가 사라지지 않는다.
05[설계형] 여러 노드의 주문·결제 처리가 모두 성공하거나 모두 취소되어야 한다. 2단계 커밋의 두 단계와 운영상 추가해야 할 장애 통제를 설명하세요.
모범 답안:
- 1단계 Prepare에서 조정자가 모든 참여자에게 커밋 준비 가능 여부를 확인한다.
- 2단계에서 모두 준비되면 Commit, 하나라도 실패하면 Rollback을 지시한다.
- 장애 통제에는 준비 트랜잭션 상태 조회, 타임아웃·알림, 조정자 복구 로그, 미결정 트랜잭션 해결 절차, 장시간 잠금 감시가 포함되어야 한다.