SW
[2020 정보처리기사 필기] 물리 데이터베이스 설계 (2) 본문
90. 클러스터 설계 ★★★
1. 클러스터(Cluster)의 개요
- 클러스터는 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법이다.
- 클러스터링키로 지정된 컬럼 값의 순서대로 저장되고, 여러 개의 테이블이 하나의 클러스터에 저장된다.
2. 클러스터(Cluster)의 특징
- 클러스터링 된 테이블은 데이터 조회 속도는 향상시키지만 데이터 입력, 수정, 삭제에 대한 기능은 저하시킨다.
- 클러스터는 데이터의 분포도가 넓을수록 유리하다.
- 데이터 분포도가 넓은 테이블을 클러스터링하면 저장 공간 절약 가능
- 클러스터링된 테이블은 클러스터링키 열을 공유하므로 저장 공간이 줄어듦
- 대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 하지 않는 것이 좋다.
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우에는 다중 테이블 클러스터링을 사용한다.
- 파티셔닝된 테이블에는 클러스터링을 할 수 없다.
- 디스크 I/O가 줄어든다.
- 클러스터드 인덱스를 생성하면 접근 성능 향상됨.
3. 클러스터 대상 테이블
- 분포도 넓은 테이블
- 대량의 범위를 자주 조회하는 테이블
- 입력, 수정, 삭제가 자주 발생하지 않는 테이블
- 자주 조인되어 사용되는 테이블
- ORDER BY, GROUP BY, UNION이 빈번한 테이블
핵심
- 클러스터는 데이터 조회 속도는 향상시켜주지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다.
-클러스터 대상 테이블
91. 파티션 설계 ★★★
1. 파티션의 개요
- 데이터베이스에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말한다.
- 테이블이나 인덱스를 파티셔닝 하면 파티션키 또는 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장된다.
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행된다.
2. 파티션의 장단점
- 장점 : 쿼리성능 향상, 디스크 성능 향상, 속도 향상, 손상 최소화, 데이터 가용성 향상, 입출력 분산 가능
- 단점 : 세심한 관리가 요구됨, 조인에 대한 비용 증가, 용량 작은 테이블에서의 파티셔닝은 오히려 성능 저하
3. 파티션의 종류
- 범위 분할 : 지정한 열의 값을 기준으로 분할
- 해시 분할 : 해시 함수를 적용한 결과 값에 따라 데이터 분할, 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산시킬 때 유용, 특정 데이터가 어디에 있는지 판단 불가
- 조합 분할 : 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식, 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용
4. 파티션키 선정 시 고려 사항
- 파티션키는 테이블 접근 유형에 따라 파티셔닝이 이뤄지도록 선정한다.
- 데이터 관리의 용이성을 위해 이력성 데이터는 파티션 생성주기와 소멸주기를 일치시켜야 한다.
- 매일 생성되는 날짜 컬럼 백업 기존이 되는 날짜 컬럼, 파티션 간 이동이 없는 컬럼, I/O 병목을 줄일 수 있는 데이터 분포가 양호한 컬럼 등을 파티션키로 선정한다.
5. 인덱스 파티션
- 인덱스 파티션은 파티션된 테이블의 데이터를 관리하기 위해 인덱스를 나눈 것
- 인덱스 파티션은 파티션된 테이블의 종속 여부에 따라 Local Partitioned Index와 Global Partitioned Index로 나뉜다.
- Local Partitioned Index : 테이블 파티션과 인덱스 파티션이 1:1 대응되도록 파티셔닝한다.
- Global Partitioned Index : 테이블 파티션과 인덱스 파티션이 독립적으로 구성되도록 파티셔닝한다.
- Local Partitioned Index가 Gloabal Partitioned Index에 비해 데이터 관리가 쉽다.
- 인덱스 파티션은 인덱스 파티션키 컬럼의 위치에 따라 Prefixed Partitioned Index와 Non-prefixed Partitioned Index로 나뉜다.
- Prefixed Partitioned Index : 인덱스 파티션키와 인덱스 첫 번째 컬럼이 같다.
- Non-Prefixed Partitioned Index: 인덱스 파티션키와 인덱스 첫 번째 컬럼이 다르다.
- 위 4개를 조합하여 사용한다.
핵심
- 파티션은 논리적 단위로 나눈 것
- 파티션을 하면 물리적으로 별도의 공간에 저장
- Local이 Global보다 관리가 쉽다.
- Local은 1:1, Global은 독립적
92. 데이터베이스 용량 설계 ★
1. 데이터베이스 용량 설계
- 데이터베이스 용량 설계는 데이터가 저장될 공간을 정의하는 것이다.
- 테이블에 저장할 데이터양, 인덱스, 클러스터 등이 차지하는 공간 등을 예측하여 반영
2. 데이터베이스 용량 설계의 목적
- 데이터베이스의 용량을 정확히 산정하여 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높인다.
- 디스크의 입출력 부하를 분산시키고 채널의 병목 현상을 최소화
- 데이터 접근성을 향상시키는 설계 방법 : 테이블의 테이블스페이스와 인덱스의 테이블스페이스를 분리하여 구성, 테이블스페이스와 임시테이블스페이스를 분리하여 구성, 테이블을 마스터 테이블과 트랜잭션 테이블로 분류
- 데이터베이스에 생성되는 오브젝트의 익스텐트(용량이 가득 찼을 때 추가적으로 할당되는 공간)발생을 최소화하여 성능을 향상 시킨다.
- 데이터베이스 용량을 정확히 분석하여 테이블과 인덱스에 적합한 저장 옵션을 지정한다.
3. 데이터베이스 용량 분석 절차
- 데이터 예상 건수, 로우(Row) 길이, 보존 기간, 증가율 등 기초 자료를 스집하여 용량을 분석
- 분석된 자료를 바탕으로 DBMS에 이용될 테이블, 인덱스 등 오브젝트별 용량을 산정
- 테이블과 인덱스의 테이블스페이스 용량을 산정
- 저장될 모든 데이터 용량과 설치 및 관리를 위한 시스템 용량을 합해 디스크 용량을 산정
핵심
- 각 테이블스페이스를 분리하여 구성
- 익스텐트 발생을 최소화
93. 분산 데이터베이스 설계 ★★★
1. 분산 데이터베이스 정의
- 분산 데이터베이스는 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 컴퓨터 사이트(Site)에 분산되어 있는 데이터베이스를 말한다.
- 분산 데이터베이스는 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 데이터의 처리가 가능한 해당 지역에서 해결될 수 있도록 한다.
2. 분산 데이터베이스의 구성 요소
- 분산 처리기 : 자체적으로 처리 능력을 가지며, 지리적으로 분산되어 있는 컴퓨터 시스템
- 분산 데이터베이스 : 지리적으로 분산되어 있는 데이터베이스로서 해당 지역의 특성에 맞게 데이터베이스가 구성된다.
- 통신 네트워크 : 분산 처리기들을 통신망으로 연결하여 논리적으로 하나의 시스템처럼 작동할 수 있도록 하는 통신 네트워크를 말한다.
3. 분산 데이터베이스 설계 시 고려 사항
- 작업부하(Work Load)의 노드별 분산 정책
- 지역의 자치성 보장 정책
- 데이터의 일관성 정책
- 사이트나 회선의 고장으로부터의 회복 기능
- 통신 네트워크를 통한 원격 접근 기능
4. 분산 데이터베이스의 목표
- 위치 투명성(Location Transparency) : 액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 액세스할 수 있다.
- 중복 투명성(Replication Transparency) : 동일한 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행한다.
- 병행 투명성(Concurrency Transparency) : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않는다.
- 장애 투명성(Failure Transparency) : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리한다.
5. 분산 데이터베이스의 장단점
- 장점 : 지역 자치성이 높다, 자료 공유성 향상, 분산 제어 가능, 시스템 성능 향상, 중앙 컴퓨터의 장애가 전체 시스템에 영향 끼치지 않음, 효용성과 융통성 높음, 신뢰성 및 가용성 높음, 점진적 시스템 용량 확장 용이
- 단점 : DBM가 수행할 기능이 복잡, 데이터베이스 설계가 어려움, 개발 비용 증가, 처리 비용 증가, 잠재적 오류 증가
6. 분산 데이터베이스 설계
- 분산 데이터베이스 설계는 애플리케이션이나 사용자가 분산되어 저장된 데이터에 접근하게 하는 것을 목적으로 한다.
- 전역 관계망을 논리적 측면에서 소규모 단위로 분할한 후, 분할된 결과를 복수의 노드에 할당하는 과정으로 진행된다. 노드에 할당된 소규모 단위를 분할(Fragment)이라 부른다.
- 분산 설계 방법에는 테이블 위치 분산, 분할(Fragmentation), 할당(Allocation)이 있다.
7. 테이블 위치 분산
- 테이블 위치 분산은 데이터베이스의 테이블을 각기 다른 서버에 분산시켜 배치하는 방법을 의미
- 테이블의 구조를 변경하지 않으며, 다른 데이터베이스의 테이블과 중복되지 않게 배치
- 데이터베이스의 각각 다른 위치에 배치하려면 해당 테이블들이 놓일 서버들을 미리 설정해야 한다.
8. 분할(Fragment)
- 분할은 테이블의 데이터를 분할하여 분산시키는 것이다.
- 분할 규칙 : 완전성(전체 데이터를 대상으로 분할), 재구성(분할된 데이터는 관계 연산을 활용하여 본래의 데이터로 재구성할 수 있어야 함), 상호 중첩 배제(분할된 데이터는 서로 다른 분할의 항목에 속하지 않아야 함)
- 주요 분할 방법 : 수평 분할(행 단위로 분할), 수직 분할(열 단위로 분할)
9. 할당(Allocation)
- 할당은 동일한 분할을 여러 개의 서버에 생성하는 분산 방법으로, 중복이 없는 할당과 중복이 있는 할당으로 나뉜다.
- 비중복 할당 방식 : 최적의 노드를 선택하여 분산 데이터베이스의 단일 노드에서만 분할이 존재하도록 하는 방식, 성능 저하 발생 가능성
- 중복 할당 방식 : 동일한 테이블을 다른 서버에 복제하는 방식으로, 일부만 복제하는 부분 복제와 전체를 복제하는 완전 복제가 있다.
핵심
- 분산 DBMS의 4대 목표 : 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성
- 분산 데이터베이스 설계 시 고려 사항 : 작업부하(Work Load)의 노드별 분산 정책, 지역의 자치성 보장 정책, 데이터의 일관성 정책
94. 데이터베이스 이중화 / 서버 클러스터링 ★★
1. 데이터베이스 이중화(Database Replication)
- 데이터베이스 이중화는 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것이다.
- 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 데이터베이스에 문제가 발생하면 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있다.
- 데이터베이스 이중화는 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업이 데이터베이스 이중화 시스템에 연결된 다른 데이터베이스에도 동일하게 적용된다.
- 애플리케이션을 여러 개의 데이터베이스로 분산시켜 처리하므로 데이터베이스의 부하를 줄일 수 있다.
- 손쉽게 백업 서버를 운영할 수 있다.
2. 데이터베이스 이중화의 분류
- 변경 내용의 전달 방식에 따라 Eager기법과 Lazy기법으로 나뉜다.
- Eager 기법 : 트랜잭션 수행 중 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 즉시 전달하여 변경 내용이 즉시 적용되도록 하는 기법
- Lazy 기법 : 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법으로, 데이터베이스마다 새로운 트랜잭션이 수행되는 것으로 간주된다.
3. 데이터베이스 이중화 구성 방법
- 활동-대기(Active-Standby) 방법과 활동-활동(Active-Active)방법이 있다.
- 활동-대기 방법 : 한 DB가 활성 상태로 서비스하고 있으면 다른 DB는 대기하고 있다가 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행, 구성 방법과 관리가 쉬워 많은 기업에서 이용
- 활동-활동 방법 : 두 개의 DB가 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공한다, 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 구성 방법 및 설정이 복잡
4. 클러스터링(Clustering)
- 클러스터링은 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술이다.
- 클러스터링은 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공
- 고가용성 클러스터링 : 하나의 서버에 장애가 발생하면 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링 : 전체 처리율을 높이기 위해 하나의 작업을 여러 개의 서버에서 분산하여 처리하는 방식
핵심
- Eager : 즉시 전달, Lazy : 트랜잭션 수행 종료 시 전달
- 활동-대기, 활동-활동 특징
'대학교 > 자격증' 카테고리의 다른 글
[2020 정보처리기사 필기] SQL 응용 (1) (0) | 2020.08.09 |
---|---|
[2020 정보처리기사 필기] 물리 데이터베이스 설계 (3) (0) | 2020.08.09 |
[2020 정보처리기사 필기] 물리 데이터베이스 설계 (1) (0) | 2020.08.08 |
[2020 정보처리기사 필기] 논리 데이터베이스 설계 (3) (0) | 2020.08.07 |
[2020 정보처리기사 필기] 논리 데이터베이스 설계 (2) (0) | 2020.08.06 |