대량 데이터 발생에 따른 테이블 분할
- 데이터 양이 많을 경우 테이블 내에서 수많은 트랜잭션 발생 ➡️ 데이터베이스 성능 저하
- 수평 분할 : 행 단위로 요소를 분할하여 디스크 입/출력 비용 감소
- 수직 분할 : 칼럼 단위로 요소를 분할하여 디스크 입/출력 비용 감소
성능 저하 현상
- 로우 체이닝
- 행 데이터가 길어서 2개 이상의 데이터 블록에 걸쳐 하나의 행이 저장된 형태
- 하나의 행을 읽을 때 2개 이상의 데이터 블록 읽음 ➡️ 읽어야 하는 데이터 증가하여 성능 저하
- 로우 마이그레이션
- 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 블록에 저장하지 못하고, 다른 블록의 빈 공간을 찾아서 저장
- 로우 체이닝과 마찬가지로 절대적으로 읽어야 하는 데이터 블록 수가 증가하여 성능 저하
테이블 수직 분할
- 한 테이블에 많은 수의 칼럼이 있는 경우의 성능 향상
- 1개의 행을 읽을 때 읽어야 하는 칼럼의 수 감소 ➡️ 필요한 데이터 블록의 수 감소
테이블 수평 분할
- 대량 데이터 저장 및 처리가 성능에 미치는 영향
- 칼럼과 다르게 테이블의 저장 건수(행)가 많은 경우, 수평 분할을 통해 성능 향상
- 범위 분할(Range Partition)
- 수평 분할은 파티셔닝이라고 하며 특정 기간을 중심으로 분할하는 것을 범위 파티셔닝이라고 함
- 데이터 보관 주기에 따른 테이블 관리 용이
- 데이터 보관 주기에 따른 테이블 별 조회 가능
- ex) 통신요금 테이블의 월 단위 파티션 테이블 생성
- 목록 분할(List Partition)
- 리스트 파티션의 경우 행의 수가 매우 많음
- ex) 지역별 테이블 분리 ➡️ 해당 지역만 조회하면 되기 때문에 SQL문 성능 향상
- 해시 분할(Hash Partition)
- 지정된 Hash 조건에 따라 해싱 알고리즘을 적용하여 테이블 분리
- 주문 번호나 주민번호와 같은 UNIQUE 칼럼을 기준으로 테이블 분할
- 데이터 관리보다는 성능 향상 목적
- 장점
- 해싱 알고리즘에 의해 분리되어 데이터 입력
➡️기존 1개 테이블에만 데이터를 입력하는 방식보다 부하 감소
- 특정 파티션에 데이터 집중 가능성이 있는 범위 분할의 단점 보완
- 데이터 처리가 많아지는 경우 경합을 막을 수 있음 - 단점
- 데이터 보관 주기에 따라 쉽게 삭제 X
- 설계자 및 데이터 입력자는 특정 데이터가 어떤 파티션에 저장되는지 예측 어려움
- 합성 분할(Composite Partitioning)
- 위의 3개 분할 방식을 섞는 방법
테이블 분할 절차
- 데이터베이스 모델링 진행
- 데이터베이스 테이블 용량 산정
- 데이터 처리 과정에서 트랜잭션 처리 패턴 분석
- 데이터 처리 과정이 칼럼과 로우 중 어디에 집중되는지 분석하고 집중된 부분의 테이블 파티셔닝
슈퍼/서브타입 모델
- 업무를 구성하는 데이터 특징을 공통점과 차이점으로 나누어 표현 가능하기 대문에 직관적 모델링 가능
- 슈퍼타입은 공통적인 속성이고, 서브타입은 자신만의 속성 의미
슈퍼/서브타입 모델 변환 방법
- 슈퍼 타입(Single / All in One)
- 슈퍼/서브타입 모델을 하나의 테이블로 변환
- 서브 타입(Plus / Super + Sub)
- 슈퍼타입과 서브타입 테이블로 변환
- 도출된 각 서브타입에는 변환 전 슈퍼 엔터티에 있던 칼럼을 공통적으로 가지고 있음
- 개별 타입(OneToOne / 1:1)
- 슈퍼/서브타입을 슈퍼 타입과 서브 타입의 각 개별 테이블로 변환
- 슈퍼/서브 테이블 모두 생성
슈퍼 타입 | 서브 타입 | 개별 타입 | |
특징 | 하나의 테이블 | 각각의 서브타입 테이블 | 슈퍼/서브 각각의 테이블 |
확장성 | 나쁨 | 보통 | 좋음👍 |
조인성능 | 우수함👍 | 나쁨 | 나쁨 |
I/O 성능 | 나쁨 | 좋음👍 | 좋음👍 |
관리 용이성 | 좋음👍 | 좋지 않음 | 좋지 않음 |
슈퍼/서브타입 모델 변환의 중요성
- 트랜잭션은 항상 일괄적으로 처리
- 테이블은 개별적으로 유지되기 때문에 UNION 연산에 의해 성능 저하 가능성
- 트랜잭션은 항상 서브타입을 개별로 처리
- 테이블이 하나로 통합되어 있어 불필요하게 많은 데이터를 처리하는 과정에서 성능 저하 가능성
- 트랜잭션은 항상 슈퍼타입과 서브타입을 공통으로 처리
- 개별로 유지되거나 하나의 테이블로 집약되면 성능 저하 가능성
PK 순서와 성능 사이의 관계
- 복합 PK의 경우 데이터 성능 향상을 위해 테이블에 발생되는 트랜잭션 조회 패턴에 따라 칼럼 순서 조정
- PK 칼럼의 위치에 따라 SQL 쿼리문의 성능이 달라질 수 있음
FK 순서와 테이블 인덱스 구성 사이의 관계
- 논리 데이터 모델 상으로 관계에 의한 외래키(FK) 제약이 걸린 경우 실제 물리 데이터베이스에 대한 적용 여부는 물리 데이터 베이스가 어떻게 설계되어 있는지에 따라 다름
- 사실 물리적인 외래키(FK)의 생성 여부와 상관없이 논리/물리 FK 제약 조건은 외래키 칼럼에 대해 인덱스를 생성하는 것이 성능 상의 우위를 가질 확률 높음
분산 데이터베이스
- 여러 곳에 분산되어 있는 데이터베이스 시스템을 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
- 물리적으로 동일한 위치에 여러 대의 컴퓨터로 구성된 경우 혹은 컴퓨터 네트워크에서 상호 연결된 컴퓨터 군에 분산되어 있는 경우 등
- 논리적으로는 동일한 시스템이지만 네트워크를 통해 물리적으로 분산되어 있는 데이터 모임
- 업무 구성에 따른 아키텍처가 어떤 형태로 구성되어 있는지 등을 충분히 고려하여 분산 데이터베이스 적용
- 투명성 : 해당 데이터베이스를 사용하는 사용자가 데이터베이스 시스템이 논리적으로 분산되어 있음을 인식하지 못하고 나만의 데이터베이스 시스템을 사용하는 것처럼 느끼게 만드는 것
- 분할 투명성
- 하나의 논리적 관계가 여러 단편으로 분할되어 각 사본이 여러 사이트에 저장
- 이때 사용자는 분할되어 저장되는게 아니라 한 곳에 모두 위치한 것처럼 느껴야함 - 위치 투명성
- 위치 정보는 System Catalog에 유지
- 사용자는 자신의 데이터가 어디에 위치하는지 신경 X
- 결과적으로 사용하려는 데이터 저장소를 명시할 필요 X - 지역 사상 투명성
- 지역 DBMS와 물리적 DB 사이의 연결됨(mapping) 보장
- 각 지역 시스템 이름과 무관한 이름 사용 가능
- 사용자는 해당 데이터가 어떤 지역에 위치하는지 알 필요 X - 중복 투명성 : DB 객체가 여러 사이트에 중복되어 있는지 알 필요 X
- 장애 투명성 : 구성요소에서 발생하는 장애와 무관한 트랜잭션의 원자성 유지
- 병행 투명성
- 다수 트랜잭션이 동시에 수행 시 결과의 일관성 유지
- 1단계는 Time stamp, 2단계는 Locking을 이용하여 구현
- 분할 투명성
- 장단점
장점 단점 지역 자치성, 점증적 시스템 용량 확장 소프트웨어 개발 비용 증가 신뢰성 & 가용성 오류의 잠재성 증대 효용성 & 융통성 처리 비용 증대 빠른 응답 속도 & 통신 비용 절감 설계 및 관리의 복잡성과 비용 데이터의 가용성 & 신뢰도 증가 불규칙한 응답 속도 시스템 규모의 적절한 조절 통제 어려움 각 지역 사용자의 요구 수용 증대 데이터 무결성에 대한 위협(전처리 필요)
분산 데이터베이스 적용 기법
- 테이블 위치(Location) 분산 : 설계된 테이블을 다르게 위치
- 테이블 분할(Fragmentation) 분산 : 테이블을 나누는 기준에 따라 수평/수직 분할로 구분
- 테이블 복제(Replication) 분산 : 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하고 관리
- 부분복제(Segment Replication) : 통합된 테이블을 마스터 데이터베이스에 가지고 있으면서 각 지사별로는 지사에 해당하는 로우를 가지고 있는 형태
- 광역복제(Broadcast Replication) : 통합된 테이블을 마스터 데이터베이스에 가지고 있으면서 각 지사별로 마스터와 동일한 데이터 가지고 있는 형태
- 부분복제(Segment Replication) : 통합된 테이블을 마스터 데이터베이스에 가지고 있으면서 각 지사별로는 지사에 해당하는 로우를 가지고 있는 형태
- 테이블 요약(Summarization) 분산 : 지역/서버 간의 데이터가 비슷하지만 서로 다른 유형으로 존재
- 분석요약(Rollup Summarization)
- 동일한 테이블 구조를 가지고 있으면서 분산되어 있는 동일한 내용의 데이터를 이용한 통합된 데이터 산출
- 유저 활동이 가장 적은 시간에 작업 - 통합요약(Consolidation Summarization)
- 분산되어 있는 다른 내용의 데이터를 이용하여 통합된 데이터 산출
- 중앙으로 모아서 다시 산출
- 분석요약(Rollup Summarization)
분산 데이터베이스를 활용한 성능 향상 사례
'스파르타 코딩클럽 > [강의] SQLD 자격증 대비반' 카테고리의 다른 글
[SQLD 자격증 대비반] 챕터 8. DML과 SELECT (0) | 2024.02.28 |
---|---|
[SQLD 자격증 대비반] 챕터 7. 관계형 데이터베이스와 DDL (0) | 2024.02.27 |
[SQLD 자격증 대비반] 챕터 4. 성능 데이터 모델링과 정규화 (0) | 2024.02.21 |
[SQLD 자격증 대비반] 챕터 3. 데이터 모델링의 요소 (0) | 2024.02.19 |
[SQLD 자격증 대비반] 챕터 2. 데이터 모델링 (0) | 2024.01.02 |