1. 고가용성과 확장성을 위한 필수 전략, 데이터베이스 분할의 개요
정의: 하나의 거대한 데이터베이스 테이블을 관리하기 쉬운 여러 개의 작은 단위(Partition)로 물리적으로 분리하여 저장하는 기법.
필요성: * 성능 향상: 전체 데이터를 스캔하지 않고 특정 분할 영역만 조회(Partition Pruning)하여 I/O 성능 극대화.
가용성 증대: 특정 분할 영역에 장애가 발생해도 나머지 영역의 서비스 지속 가능.
관리 용이성: 대용량 테이블의 백업, 인덱스 생성 등 유지보수 작업의 단위별 수행 가능.
2. 가. 데이터베이스 분할 단위 (Partitioning Unit)
데이터를 나누는 논리적 기준에 따라 다음과 같이 구분됩니다.
| 분할 단위 | 설명 | 주요 특징 |
| 테이블 단위 (Table) | 서로 다른 테이블을 물리적으로 다른 디스크나 서버에 배치 | 가장 기본적인 분리 방식 |
| 행 단위 (Row) | 특정 기준(날짜, ID 등)에 따라 테이블의 레코드를 분리 | **수평 분할(Horizontal)**의 기본 단위 |
| 열 단위 (Column) | 사용 빈도나 데이터 성격에 따라 특정 컬럼들을 분리 | **수직 분할(Vertical)**의 기본 단위 |
3. 나. 수평분할(Horizontal)과 수직분할(Vertical) 비교
1) 수평분할 (Horizontal Partitioning / Sharding)
개념: 테이블의 스키마는 유지하되, **행(Row)**을 기준으로 데이터를 나누어 여러 테이블이나 서버에 분산 저장하는 방식.
분할 기법: Range(범위), List(목록), Hash(해시), Composite(결합) 분할 등.
장점: 데이터 개수가 줄어들어 인덱스 크기가 작아지고 조회 성능이 빨라짐. 서버 확장이 용이함(Scale-out).
2) 수직분할 (Vertical Partitioning)
개념: 테이블의 특정 **열(Column)**들을 기준으로 나누어 별도의 테이블로 분리하는 방식. 보통 기본 키(PK)는 양쪽 테이블에 중복 배치하여 연결을 유지함.
기준: 자주 사용하는 컬럼 vs 거의 사용하지 않는 컬럼, 보안이 필요한 컬럼 등으로 분리.
장점: 한 번의 I/O로 더 많은 행을 읽을 수 있어 특정 컬럼 조회 성능 향상. 보안 강화.
3) 수평분할과 수직분할의 상세 비교
| 구분 | 수평 분할 (Horizontal) | 수직 분할 (Vertical) |
| 분리 기준 | 행 (Row) 단위 분리 | 열 (Column) 단위 분리 |
| 스키마 변화 | 동일한 스키마 유지 | 테이블 스키마가 변함 (컬럼 분산) |
| 주요 목적 | 데이터 대용량화에 따른 부하 분산 | 입출력(I/O) 효율화 및 보안성 확보 |
| 주요 기술 | Sharding, Range/Hash Partitioning | Normalization(정규화), Column-family |
| 단점 | 여러 파티션에 걸친 쿼리 시 성능 저하 | 분리된 테이블 간 Join 발생 시 성능 저하 |
4. 분산 데이터베이스 구축 시 고려사항 및 제약사항
데이터 투명성(Transparency): 분할되어 있더라도 사용자는 하나의 테이블처럼 사용할 수 있는 위치/분할/복제 투명성 보장 필요.
조인(Join) 오버헤드: 서로 다른 파티션이나 노드에 있는 데이터 간 Join 발생 시 네트워크 트래픽 및 성능 저하 발생.
일관성 관리: 분산 환경에서의 트랜잭션 원자성(Atomicity) 보장을 위해 2PC(Two-Phase Commit) 또는 Saga 패턴 검토.
5. 기술사적 제언: 'Cloud Native DB' 시대의 분할 전략
자동 샤딩(Auto-sharding) 도입: 수동 분할의 관리 부하를 줄이기 위해 클라우드 서비스(AWS Aurora, Google Spanner 등)가 제공하는 자동 확장 기능을 적극 활용해야 함.
Hotspot 방지: 특정 파티션에 부하가 쏠리는 현상을 방지하기 위해 해시(Hash) 분할 등 균등 분산 전략과 모니터링 체계 수립 필수.
결언: 데이터베이스 분할은 서비스 규모 확장에 따른 필수 관문임. 기술사는 데이터 모델링 단계에서부터 **데이터 접근 패턴(Access Pattern)**을 면밀히 분석하여 최적의 분할 전략을 설계해야 함.
댓글 없음:
댓글 쓰기