자격증/2020 정보처리기사 필기

2020 정보처리기사 필기 - 3.2 물리 데이터베이스 설계(2)

지식냠냠 2020. 3. 5. 13:15
반응형



▶ 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가 수행할 기능이 복잡함

- 데이터베이스 설계가 어려움

- 소프트웨어 개발 비용이 증함

- 처리 비용이 증가함

- 잠재적오류가 증가함




분산 데이터베이스 설계 

분산 데이터베이스 설계는 애플리케이션이나 사용자가 분산되어 저장된 데이터에 접근하게 하는 것을 목적으로 함

- 분산 설계 방법에는 테이블 위치 분산, 분할, 할당이 있음




반응형