[SQL] 04. 데이터베이스 구조와 성능
데이터 모델과 성능: 대량 데이터, 데이터베이스 구조, 분산 데이터베이스와 성능
1. 대량 데이터에 따른 성능¶
1-1. 대량 데이터 발생에 따른 테이블 분할¶
중요한 업무에 해당되는 데이터가 특정 테이블에 있는 경우에 병목 현상이 발생하는데 이런 경우 트랜잭션이 분산 처리될 수 있도록 테이블 단위에서 분할의 방법을 적용할 필요가 있다.
로우 체이닝과 로우 마이그레이션¶
테이블의 데이터 저장 단위를 블록(Block)이라고 하는데, 행(Row)의 길이가 너무 길어서 데이터(하나의 행이)가 하나의 데이터 블록에 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 저장되어 있는 것을 로우 체이닝(Row Chaining) 현상이라고 한다.
데이터 블록에서 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 것을 로우 마이그레이션(Row Migration)이라고 한다.
Warning
로우 체이닝과 로우 마이그레이션이 발생하여 많은 블록에 데이터가 저장되면 데이터베이스 메모리에서 디스크와 I/O(입력/출력)가 발생할 때 불필요하게 I/O가 많이 발생하여 성능이 저하된다.
1-2. 파티셔닝¶
파티셔닝(Partitioning)은 논리적으로는 하나의 테이블로 보이는 데이터베이스를 물리적으로는 여러 개의 테이블에 쪼개어 저장하는 것을 말한다.
파티셔닝의 종류는 아래와 같다.
- Range Partitioning
- 범위에 따라 테이블을 분할하는 것으로, 가장 많이 사용됨
- List Partitioning
- 핵심적인 코드값 등으로 PK가 구성되어 있을 때 특정값을 지정하여 테이블 분할
- Hash Partitioning
- 지정된 해시 조건에 따라 해싱 알고리즘이 적용되어 테이블이 분리되며, 테이블에 데이터가 정확하게 어떻게 들어갔는지 알 수 없음
1-3. 수평 분할/수직 분할¶
테이블에 대한 수평 분할/수직 분할은 다음의 네 가지 원칙에 따라 결정된다.
- 데이터 모델링 완성
- 데이터베이스 용량 산정
- 대량 데이터가 처리되는 테이블에 대한 트랜잭션 처리 패턴 분석
- 칼럼/로우 단위로 집중화된 처리가 발생하는지 분석하여 집중화된 단위로 테이블 분리 검토
2. 데이터베이스 구조와 성능¶
2-1. 슈퍼/서브타입 모델¶
슈퍼타입/서브타입 데이터 모델(Extended E-R Model)은 업무를 구성하는 데이터의 특징을 공통과 차이점의 특징을 고려하여 효과적으로 표현할 수 있다.
슈퍼/서브 타입 데이터 모델의 장점은 아래와 같다.
슈퍼타입/서브타입 데이터 모델은 공통의 부분을 슈퍼타입으로 모델링하고 공통으로부터 상속받아 다른 엔티티와 차이가 있는 속성에 대해서는 별도의 서브 엔티티로 구분하기 때문에 다음과 같은 장점이 있다.
- 업무의 모습을 정확하게 표현 가능
- 물리적인 데이터 모델로 변환 시 선택의 폭 증가
그러나 트랜잭션 특성을 고려하지 않고 테이블을 설계할 경우 오히려 슈퍼타입/서브타입 모델이 성능 저하의 원인이 될 수 있다.
슈퍼/서브타입 데이터 모델 변환기술은 아래와 같다.
- OneToOne Type(1:1 Type)
- 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성
- 슈퍼타입과 서브타입 각각 필요한 속성 및 유형에 맞는 데이터만 가지게 하기 위해서 모두 분리하여 1:1 관계를 갖도록 함
- Plus Type
- 슈퍼타입과 서브타입을 공통으로 처리하는 트랜잭션에 대해 슈퍼타입과 각 서브타입을 하나로 묶어 별도의 테이블 구성
- Single Type(All in One Type)
- 일괄 처리하는 트랜잭션에 대해 단일 테이블 구성
- 위 세 가지가 혼합된 트랜잭션 유형이 있는 경우는 많이 발생하는 트랜잭션 유형에 따라 구성
OneToOne Type | Plus Type | Single Type | |
---|---|---|---|
특징 | 개별 테이블 | 슈퍼 + 서브 타입 데이블 | 단일 테이블 |
확장성 | 1 우수함 | 3 보통 | 3 나쁨 |
조인 성능 | 4 나쁨 | 4 나쁨 | 1 우수함 |
I/O 성능 | 2 좋음 | 1 좋음 | 3 나쁨 |
관리 용이성 | 3 좋지 않음 | 2 좋지 않음 | 2 좋음 |
트랜잭션 유형 | 개별 테이블로 접근이 많은 경우 | 슈퍼/서브 공통 처리가 많은 경우 | 전체 일괄 처리하는 경우 |
2-2. 인덱스 특성을 고려한 PK/FK¶
PK/FK 설계는 데이터를 접근할 때 경로를 제공하는 측면에서 성능에 영향이 크기 때문에 데이터베이스 설계 단계에서 성능을 고려하여 칼럼의 순서를 조정할 필요가 있다.
등호 조건(=
)이나 BETWEEN 조건(<>
)의 칼럼이 앞으로 와야 인덱스를 효율적으로 이용할 수 있다.
2-3. 물리적인 테이블에 FK 인덱스 생성¶
물리적인 테이블에 FK를 사용하지 않아도 데이터 모델 관계에 의해 상속받은 FK 속성들은 SQL WHERE
절에서 조인을 위해 이용되는 경우가 많다. 이 경우 FK 인덱스를 생성하면 성능이 향상 된다.
3. 분산 데이터베이스와 성능¶
3-1. 분산 데이터베이스의 개념 및 가치¶
분산 데이터베이스의 정의는 다음과 같다.
- 여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
- 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임
Tip
데이터를 분산 환경으로 구성하면, 원거리 또는 다른 서버에 접속하여 처리할 때 발생하는 네트워크 부하, 트랜잭션 집중에 따른 성능 저하를 분산된 데이터베이스 환경을 통해 해결하여 빠른 성능을 제공하는 것이 가능해진다.
3-2. 분산 데이터베이스의 투명성¶
분산 데이터베이스가 되기 위해서는 여섯 가지 투명성(Transparency)을 만족해야 한다.
- 분할 투명성(단편화)
- 하나의 논리적 관계가 분할되어 각 단편의 사본이 여러 site에 저장
- 위치 투명성
- 위치 정보가 System Catalog에 유지되어 사용하려는 데이터의 저장 장소 명시 불필요
- 지역사상 투명성
- 지역 DBMS와 물리적 DB 사이의 사상 보장
- 중복 투명성
- 사용자는 DB 객체의 중복 여부를 알 필요가 없어야 함
- 장애 투명성
- 구성요소(DBMS, Computer, 네트워크 등)의 장애에도 트랜잭션의 원자성 유지
- 병행 투명성
- 다수 트랜잭션이 동시 수행 되더라도 결과의 일관성 유지
3-3. 분산 데이터베이스의 장단점¶
장점 | 단점 |
---|---|
지역 자치성, 점증적 시스템 용량 확장 | 소프트웨어 개발 비용 증가 |
데이터의 가용성 증가 | 데이터 무결성에 대한 위협 증가 |
데이터의 신뢰성 증가 | 오류의 잠재성 증가 |
효용성, 융통성 증가 | 설계 복잡성 증가 |
응답 속도 상승 | 불규칙한 응답 속도 |
통신 비용 절감 | 처리 비용 증가 |
각 지역 사용자의 요구 수용 증대 | 관리 및 통제의 어려움 |
3-4. 분산 데이터베이스의 적용 기법¶
분산 데이터베이스 설계 방식은 아래와 같다.
- 상향식
- 각 지역 스키마 작성 후 전역 스키마를 작성하여 분산 데이터베이스 구축
- 하향식
- 전역 스키마 작성 후 각 지역 스키마를 작성하여 분산 데이터베이스 구축
테이블 위치 분산은 아래와 같다.
테이블 위치 분산은 테이블의 구조의 변화 없이 설계된 테이블의 위치를 각각 다르게 위치시키는 방법이다. 테이블 위치 분산은 정보를 이용하는 형태가 각 위치별로 차이가 있을 경우에 이용한다.
테이블 분할 분산은 아래와 같다.
테이블 분할(Fragmentation) 분산은 각각의 테이블을 쪼개어 분산시키는 방법이다.
- 수평 분할(Horizontal Fragmentation)
- 테이블을 로우(Row) 단위로 분리
- 수직 분할(Vertical Fragmentation)
- 테이블을 칼럼(Column) 단위로 분리
테이블 복제 분산은 아래와 같다.
테이블 복제(Replication) 분산은 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하여 관리한다.
- 부분 복제(Segment Replication)
- 마스터 데이터베이스에서 테이블의 일부의 내용만 다른 지역이나 서버에 위치시킴
- 광역 복제(Broadcast Replication)
- 마스터 데이터베이스의 테이블의 내용을 각 지역이나 서버에 존재시킴
테이블 요약 분산은 아래와 같다.
테이블 요약(Summarization) 분산은 지역 간 또는 서버 간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 방식이다.
- 분석 요약(Rollup Summarization)
- 동일한 구조의 분산되어 있는 데이터를 이용하여 통합된 데이터를 산출
- 각 사이트별 요약정보를 본사에서 통합하여 전체에 대한 요약 정보 산출
- 통합 요약(Consolidation Summarization)
- 분산되어 있는 다른 내용의 데이터를 이용하여 통합된 데이터를 산출
- 각 사이트별 정보를 본사에서 통합하여 전체에 대한 요약 정보 산출