2020 정보처리기사 필기 - 3.2 물리 데이터베이스 설계(2)
▶ 088 인덱스 설계
인덱스(index) √
데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
- 인덱스의 종류 : 트리 기반 인덱스, 비트맵 인덱스, 함수 기반 인덱스, 도메인 인덱스 등
* TABLE SCAN : 테이블에 있는 모든 레코드를 순차적으로 읽는 것, 인덱스가 없거나 분포도가 넓은 데이터를 검색 할 때 사용
☞ 클러스터드 인덱스(Clustered index)
- 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
- 한 개의 릴레이션에 하나의 인덱스만 생성할 수 있음
☞ 넌클러스터드 인덱스(Non-Clustered index)
- 인덱스의 키 값만 정렬되어 있을 뿐 실제 데이터는 정렬되지 않는 방식
- 한 개의 릴레이션에 여러 개의 인덱스를 만들 수 있음
1. 트리 기반 인덱스
인덱스를 저장하는 블록들이 트리 구조를 이루는 것
- B 트리 인덱스, B+ 트리 인덱스가 있음
2. 비트맵 인덱스
컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법
- 목적은 키 값을 포함하는 로우(Row)의 주소를 제공하는 것
- 분포도가 좋은 컬럼에 적합, 성능 향상
- 효율적인 논리 연산 가능, 저장공간 작음, 압축 효율 좋음.
3. 함수 기반 인덱스
컬럼의 값 대신 컬럼에 특정함수나 수식을 적용하여 산출된 값을 사용하는 것
4. 비트맵 조인 인덱스
다수의 조인된 객체로 구성된 인덱스
5. 도메인 인덱스
개발자가 필요한 인덱스를 직접 만들어서 사용, 확장형 인덱스
인덱스 설계순서
① 인덱스의 대상 테이블이나 컬럼 등을 선정
② 인덱스의 효율성을 검토하여 인덱스 최적화 수행
③ 인덱스 정의서 작성
▶ 089 뷰(View) 설계
뷰(View) / 중요★
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
- 뷰는 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주 됨
뷰(View)의 특징 / 중요★
- 기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용, 조작도 기본 테이블과 거의 같음
- 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않음
- 데이터의 논리적 독립성 제공
- 필요한 데이터만 뷰로 정의해 처리할 수 있기 때문데 관리가 용이하고 명령문 간단해짐
- 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있음
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제됨
- 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능
뷰(View)의 장 단점 / 중요★
장점 | 단점 |
- 논리적 데이터 독립성을 제공 - 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해 줌 - 사용자의 데이터 관리를 간단하게 해줌 - 접근 제어를 통한 자동 보안이 제공됨 | - 독립적인 인덱스를 가질 수 없음 - 뷰의 정의를 변경할 수 없음 - 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름 |
뷰 설계 순서
① 대상 테이블 선정
② 대상 컬럼 선정
③ 정의서 작성
▶ 090 클러스터 설계
클러스터(Cluster)
데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
클러스터(Cluster)의 특징
- 클러스터링 된 테이블은 데이터 조회 속도는 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킴
- 클러스터는 데이터의 분포도가 넓을 수록 유리
*분포도 : 인덱스는 분포도가 좁은 테이블이 좋지만 클러스터링은 분포도가 넓은 테이블에 유리
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 하지 안는 것이 좋음
- 파티셔닝된 테이블에는 클러스터링을 할 수 없음
*파티셔닝 : 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
- 클러스터링을 하면 비슷한 데이터가 동일한 데이터 블록에 저장되기 때문에 디스크 I/O가 줄어듬
- 클러스터링된 테이블에 클러스터드 인덱스를 생성하면 접근 성능이 향상됨
클러스터 대상 테이블
- 분포도가 넓은 테이블
- 대량의 범위를 자주 조회하는 테이블
- 입력, 수정, 삭제가 자주 발생하지 않는 테이블
- 자주 조인되어 사용되는 테이블
- ORDER BY, GROUP BY, UNION이 빈번한 테이블
▶ 091 파티션 설계
파티션(Partition)
대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
파티션의 장 단점 √
장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨 - 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상됨 - 파티션별로 백업 및 복구를 수행하므로 속도가 빠름 - 시스템 장애 시 데이터 손상 정도를 최소화할 수 있음 - 데이터 가용성이 향상됨 - 파티션 단위로 입출력을 분산시킬 수 있음 |
단점 | - 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구됨 - 테이블간 조인에 대한 비용이 증가 - 용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하됨 |
파티션의 종류 √
파티셔닝 방식에 따라 범위 분할, 해시 분할, 조합분할 등으로 나뉨
범위 분할 (Range Partitioning) | 지정한 열의 값을 기준으로 분할 |
해시 분할 (Hash Partitioning) | 해시 함수를 적용한 결과 값에 따라 분할 - 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것 - 데이터를 고르게 분산할 때 유용 - 특정 데이터가 어디에 있는지 판단할 수 없음 |
조합분할 (Composite Partitioning) | 범위 분할로 분할 한 후 해시 함수를 적용하여 다시 분할 - 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용 |
인덱스 파티션
파티션된 테이블의 데이터를 관리하기 위해 인덱스를 나눈 것
• 파티션된 테이블의 종속 여부에 따라
- Local Partitioned Index : 테이블 파티션과 인덱스 파티션이 1:1 대응되도록 파티셔닝
- Global Partitioned Index : 테이블 파티션과 인덱스 파티션이 독립적으로 구성되도록 파티셔닝
• 인덱스 파티션키 컬럼의 위치에 따라
- Prefixed Partitioned Index : 인덱스 파티션키와 인덱스 첫 번째 컬럼이 같음
- Non-Prefixed Partitioned Index : 인덱스 파티션키와 인덱스 첫 번째 컬럼이 다름
▶ 092 데이터베이스 용량 설계
데이터베이스 용량 설계
데이터가 저장될 공간을 정의하는 것
데이터베이스 용량 설계의 목적
- 데이터베이스의 용량을 정확히 산정하여 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성 높임
- 디스크의 특성을 고려하여 설계함으로써 디스크의 입 출력 부하를 분산시키고 채널의 병목 현상 최소화함
- 디스크에 대한 입 출력 경합이 최소화되도록 설계함으로써 데이터 접근성이 향상됨
데이터베이스 용량 분석 절차
① 데이터 예상 건수, 로우, 길이, 보존 기간, 증가율 등 기초 자료를 수집해 용량 분석
② 분석된 자료를 바탕으로 DBMS에 이용될 테이블, 인덱스 등 오브젝트 용량을 산정
③ 테이블과 인덱스의 테이블스페이스 용량 산정
④ 데이터베이스에 저장될 모든 데이터 용량과 데이터베이스 설치 및 관리를 위한 시스템 용량을 합해 디스크 용량 산정
▶ 093 분산 데이터베이스 설계
분산 데이터베이스 정의
논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 컴퓨터 사이트에 분산되어 있는 데이터베이스
분산 데이터베이스의 구성 요소
분산 처리기 | 자체적으로 처리 능력을 가지며, 지리적으로 분산되어 있는 컴퓨터 시스템을 말함 |
분산 데이터베이스 | 지리적으로 분산되어 있는 데이터베이스로서 해당 지역의 특성에 맞게 데이터베이스가 구성됨 |
통신 네트워크 | 분산 처리기들을 통신망으로 연결하여 논리적으로 하나의 시스템처럼 작동할 수 있도록 하는 통신 네트워크 |
분산 데이터베이스 설계 시 고려 사항 √
- 작업부하의 노드별 분산 정책
- 지역의 자치성 보장 정책
- 데이터의 일관성 정책
- 사이트나 회선의 고장으로부터의 회복 기능
- 통신 네트워크를 통한 원격 접근 기능
분산 데이터베이스의 목표 √
- 위치 투명성(Location Transparency) : 액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 액세스 할 수 있음
- 중복 투명성(Replication Transparency) : 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행 함
- 병행 투명성(Concurrency Transparency) : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음
- 장애 투명성(Failure Transparency) : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리함
*투명성 : 어떠한 사실이 존재함에도 마치 투명하여 보이지 않는 것처럼, 사실의 존재 여부를 염두에 두지 않아도 되는 성질
분산 데이터베이스의 장 단점 √
장점 | 단점 |
- 지역 자치성이 높음 - 자료의 공유성이 향상됨 - 분산 제어가 가능 - 시스템 성능이 향상됨 - 중앙 컴퓨터의 장애가 전체 시스템에 영향을 끼치지 않음 - 효율성과 융통성이 높음 - 신뢰성 및 가용성이 높음 - 점진적 시스템 용량 확장이 용이함 | - DBMS가 수행할 기능이 복잡함 - 데이터베이스 설계가 어려움 - 소프트웨어 개발 비용이 증함 - 처리 비용이 증가함 - 잠재적오류가 증가함 |
분산 데이터베이스 설계
분산 데이터베이스 설계는 애플리케이션이나 사용자가 분산되어 저장된 데이터에 접근하게 하는 것을 목적으로 함
- 분산 설계 방법에는 테이블 위치 분산, 분할, 할당이 있음