5. 뷰(View) 설계 <중요>
1) 개요
뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블
뷰는 데이터 보정 작업, 처리 과정 시험 등 임시적인 작업을 위한 용도로 활용된다.
조인문의 사용 최소화로 사용상의 편의성을 최대화한다.
2) 뷰의 특징
기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며 조작도 기본 테이블과 거의 같다.
뷰는 가상 테이블이기 때문에 물리적 구현 X
데이터의 논리적 독립성 제공
필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해짐
뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.
기본 테이블의 기본키를 포함한 속성으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능
정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
정의된 뷰를 삭제하면 기초로 정의된 다른 뷰도 자동으로 삭제된다
3) 뷰의 장단점
장점 | 단점 |
논리적 데이터 독립성을 제공 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원 사용자의 데이터 관리를 간단하게 해줌 접근 제어를 통한 자동 보안이 제공 |
독립적인 인덱스를 가질 수 없음 뷰의 정의를 변경할 수 없음 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름 |
4) 뷰 설계 시 고려 사항
테이블 구조가 단순화 될 수 있도록 반복적으로 조인을 설정하여 사용하거나, 동일한 조건절을 사용하는 테이블을 뷰로 생성한다.
동일한 테이블이라도 업무에 따라 테이블을 이용하는 부분이 달라질 수 있으므로 사용할 데이터를 다양한 관점에서 제시해야 한다
데이터의 보안 유지를 고려해 설계한다
6. 클러스터 설계 <중요>
1) 개요
데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
2) 특징
클러스터링된 테이블은 데이터 조회 속도 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다.
클러스터는 데이터의 분포도가 넓을수록 유리
데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있다.
클러스터링된 테이블은 클러스터링키 열을 공유하므로 저장 공간이 줄어든다.
대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 많으므로 클러스터링을 하지 않는 것이 좋다.
처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우에는 다중 테이블 클러스터링을 사용한다.
파티셔닝 된 테이블에는 클러스터링 할 수 없음
클러스터링을 하면 비슷한 데이터가 동일한 데이터 블록에 저장되기 때문에 디스크 I/O가 줄어든다.
클러스터링된 테이블에 클러스터드 인덱스를 생성하면 접근 성능이 향상된다.
3) 클러스터 대상 테이블
분포도가 넓은 테이블
대량의 범위를 자주 조회하는 테이블
입력, 수정, 삭제가 자주 발생하지 않는 테이블
자주 조인되어 사용되는 테이블
ORDER BY, GROUP BY, UNION이 빈번한 테이블
* 클러스터링 테이블은 동일한 성격의 데이터를 모아서 새로 테이블을 만드는 것이기 때문에 입력, 수정, 삭제에는 어울리지 않고, 조회를 하기 위해 많이 사용되요!
* 자주 조인한다는 것은 1개 이상의 테이블을 엮어서 조회한다는 것을 뜻해요!
7. 파티션 설계 <중요>
1) 개요
대용량 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
대용량 DB의 경우 중요한 몇 개의 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워진다.
테이블이나 인덱스를 파티셔닝 하면 파티션키나 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장됨
데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션 별로 수행된다.
2) 파티션의 장단점
장점 | 데이터 접근시 액세스 범위를 줄여 쿼리 성능이 향상 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상 파티션별로 백업 및 복구를 수행하므로 속도가 빠름 시스템 장애시 데이터 손상 정도를 최소화 할 수 있음 데이터 가용성이 향상 파티션 단위로 입출력을 분산 |
단점 | 하나의 테이블을 세분화해 관리하므로 세심한 관리가 요구 테이블간 조인에 대한 비용이 증가 용량이 작은 테이블을 파티셔닝하면 오히려 성능이 저하 |
* 대용량 테이블을 파티션으로 나눠서 관리하기 때문에 쿼리 성능, 디스크의 성능 등 이로운 효과를 볼 수 있지만, 다만 테이블 간 조인에 대한 비용이 증가하는 단점이 생겨요!
3) 파티션의 종류
범위 분할 | 지정한 열의 값을 기준으로 분할 |
해시 분할 | 해시 함수를 적용한 결과 값에 따라 데이터를 분할 데이터를 고르게 분산할 때 유용 특정 데이터가 어디에 있는지 판단할 수 없음 고객번호와 같은 데이터가 고른 컬럼에 효과적 |
조합 분할 | 범위 분할로 분할한 다음 해시 함수를 적용해 다시 분할하는 방식 범위 분할한 파티션이 너무 커서 관리가 어려울 때 사용 |
4) 파티션키 선정시 고려사항
테이블 접근 유형에 따라 파티셔닝이 이뤄지도록 선정
데이터 관리의 용이성을 위해 이력성 데이터는 파티션 생성주기와 소멸주기를 일치시켜야 함
매일 생성되는 날짜 컬럼, 백업의 기준이 되는 날짜 컬럼, 파티션 간 이동이 없는 컬럼, I/O 병목을 줄일 수 있는 데이터 분포가 양호한 컬럼을 파티션 키로 선정
5) 인덱스 파티션
파티션된 테이블의 데이터를 관리하기 위해 인덱스를 나눈 것
Local Paritioned Index : 테이블 파티션과 인덱스 파티션이 1:1 대응 되도록 파티셔닝
Global Partitioned Index : 테이블 파티션과 인덱스 파티션이 독립적으로 구성되도록 파티셔닝
Prefixed Partitioned Index : 인덱스 파티션 키와 인덱스 첫 번째 컬럼이 같음
Non-Prefixed Partitioned Index : 인덱스 파티션 키와 인덱스 첫 번째 컬럼이 다르다.
'2020 정보처리기사 필기 > 3과목 - 데이터베이스 구축' 카테고리의 다른 글
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(물리 데이터베이스 설계_3) (0) | 2020.08.21 |
---|---|
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(물리 데이터베이스 설계_1) (0) | 2020.08.21 |
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(논리 데이터베이스 설계_5) (0) | 2020.08.19 |
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(논리 데이터베이스 설계_4) (0) | 2020.08.19 |
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(논리 데이터베이스 설계_3) (0) | 2020.08.01 |