[DATABASE] 성능 데이터 모델링, 분산데이터베이스 란?
성능 데이터 모델링이란?
데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 조인구조 등 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것을 의미합니다.
성능 데이터 모델링 고려사항
1. 정규화를 정확하게 수행한다.
2. 데이터베이스 용량산정을 수행한다.
3. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
5. PK/FK 조정 등을 수행한다.
6. 성능관점에서 데이터 모델을 검증한다.
정규화를 통한 성능향상 전략
기본적으로 데이터에 대한 중복성을 제거하여 주고 데이터가 관심사별로 처리되는 경우가 많기 때문에 성능이 향상되는 특징을 지닙니다.
엔터티가 늘어나므로 조인이 많이 발생하여 성능저하가 나타나는 경우도 있으므로 이런경우는 반정규화를 적용하는 전략이 필요합니다.
함수적 종속성에 근거한 정규화 수앵이 필요합니다.
반정규화를 통한 성능향상 전략
정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상, 개발과 운영의 단순화를 위해 통합 등을 수행하는 데이터 모델링의 기법을 의미합니다.
데이터를 조회할 때 디스크 I/O 량이 많거나 조인으로 인한 성능저하가 예상되는 경우 수행합니다.
정규화와, 반정규화의 방법에 대해서는 나중 포스팅에서 다루도록 하겠습니다.
대량 데이터에 따른 성능
하나의 테이블에 데이터가 대량으로 존재하는 경우
인덱스의 Tree 구조가 너무 커져 효율성이 떨어져 데이터를 처리할 때 디스크 I/O 를 많이 유발하게 되어 성능이 저하됩니다.
파티셔닝 ( RANGE, LIST, HASH ) 을 적용하거나 PK 에 의해 테이블을 분할하는 방법을 적용하여 성능을 개선시킬 수 있습니다.
한 테이블에 많은 수의 컬럼을 가지고 있는 경우
데이터가 디스크의 여러 블록에 존재하므로 인해 디스크에서 데이터를 읽는 I/O 량이 많아지게 되어 성능이 저하됩니다.
또한 로우체이닝이나 로우마이그레이션이 많아지게 되어 성능이 저하됩니다.
로우체이닝 : 로우 길이가 너무 길어서 데이터 블록 하나에 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태
로우마이그레이션 : 데이터블록에서 수정이 발생되면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식
트랜잭션이 발생될 때 어떤 컬럼에 대해 집중적으로 발생되는지 분석하여 테이블을 나눠 주면 디스크 I/O 가 감소하게 되어 성능을 개선시킬 수 있습니다.
데이터베이스 구조와 성능
인덱스 특성을 고혀나 PK/FK 데이터베이스 성능향상
PK 순서를 인덱스 특징에 맞게 고려하지 않고 생성하면, 테이블에 접근하는 트랜잭션의 특징에 효율적이지 않은 인덱스가 생성되어 있으므로
인덱스의 범위를 넓게 이용하거나 풀스캔을 유발하게 되어 성능이 저하되게 됩니다.
따라서 좁은 범위조회로 구성될 수 있도록 인덱스를 정렬 구조를 파악하여 생성합니다.
FK 속성에 인덱스를 생성하여 성능 향상
데이터 모델 관계에 의해 상속받은 FK 속성들은 인덱스를 생성하여 성능을 좋게 개선합니다.
분산 데이터베이스와 성능
분산 데이터베이스란
1. 여러곳으로 분산되어 있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
2. 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임
분산 데이터베이스의 투명성
1. 분할투명성 : 하나의 논리적 관계가 여러 단편으로 분할되어 각 단편의 사본이 여러 장소에 저장
2. 위치투명성 : 사용하려는 데이터의 저장 장소 명시 불필요. 위치정보가 카탈로그에 유지되어야 함
3. 지역사상투명성 : 지역 DBMS 와 물리적 DB 사이의 매핑 보장. 각 지역시스템 이름과 무관한 이름 사용가능
4. 중복투명성 : DB 객체가 여러 위치에 중복되어 있는지 알 필요가 없는 상황
5. 장애투명성 : 구성요소의 장애에 무관한 트랜잭션의 원자성 유지
6. 병행투명성 : 다수 트랜잭션 동시 수행시 결과의 일관성 유지
분산 데이터베이스의 장단점
장점 |
단점 |
지역 자치성, 점증적 시스템 용량 확정 신뢰성과 가용성 효용성과 융통성 빠른 응답 속도와 통신비용 절감 데이터의 가용성과 신뢰성 증가 시스템 규모의 적절한 조절 각 지역 사용자의 요구 수용 증대 |
소프트웨어 개발 비용 오류의 잠재성 증대 처리 비용의 증대 설계, 관리의 복잡성과 비용 불규칙한 응답 속도 통제의 어려움 데이터 무결성에 대한 위협 |
분산 데이터베이스의 적용 기법
1. 테이블 위치 분산 : 설계된 테이블의 위치를 각각 다르게 위치시키는 방법
2. 테이블 분할 분산 : 각각의 테이블을 쪼개어 분산하는 방법. 로우단위 분할의 수평분할과, 칼럼 단위 분할의 수직분할이 있음
3. 테이블 복제 분산 : 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하는 방법. 테이블의 일부만 복제하는 부분복제와, 전체 내용을 복제하는 광역복제가 있음
4. 테이블 요약 분산 : 지역 혹은 서버간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 방법. 각 지사별 존재하는 요약정보를 본사에 통합하여 요약정보를 산출하는 분석요약과 각 지사별로 존재하는 다른 내용의 정보를 본사에 통합하여 요약정보를 산출하는 통합요약이 있음
이 내용은 'SQL 전문가 가이드, 한국데이터베이스 진흥원' 에서 공부한 내용입니다.