기억하자!!!!!
P2. 40번 문제
데이터 모델에 대한 반정규화를 고려할 때 판단요소에 대한 설명으로 가장 적절한 것에 대한 설명
- 다량 데이터 탐색의 경우 인덱스가 아닌 파티션 및 데이터 클러스터링 등의 다양한 물리 저장 기법을 활용하여 성능 개선을 유도할 수 있다. 다만, 하나의 결과셋을 추출하기 위해 다량의 데이터를 탐색하는 처리가 반복적으로 빈번하게 발생한다면 이때는 반정규화를 고려하는 것이 좋다.
- 이전 또는 이후 위치의 레코드(컬럼)에 대한 탐색은 window function으로 접근 가능하다.
- 집계 테이블 이외에도 다양한 유형(다수 테이블의 키 연결 테이블 등)에 대하여 반정규화 테이블 적용이 필요할 수 있다.
- 반정규화 정보에 대한 재현의 적시성으로 판단한다. 예를 들어, 빌링의 잔액은 다수 테이블에 대한 다량의 조인이 불가피하므로 데이터 제공의 적시성 확보를 위한 필수 반정규화 대상 정보이다.
반정규화란?
- 시스템 성능향상을 위해 중복,통합,분리 등을 수행하는 데이터 모델링의 기법을 의미
- 데이터를 중복 -> 성능향상
- 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행
41번 문제
다음 중 하나의 테이블의 전체 칼럼 중 자주 이용하는 집중화된 칼럼들이 있을 때 디스크 I/O를 줄이기 위해 해당 컬럼들을 별도로 모아놓은 반정규화 기법으로 가장 적절한 것은?
-> 테이블 추가 - 부분테이블 추가
- 반정규화의 기법은 테이블, 속성, 관계에 대해서 반정규화를 적용할 수 있으며. 하나의 테이블의 전체 칼럼 중 자주 이용하는 집중화된 칼럼들이 있을 때 디스크 I/O를 줄이기 위해 해당 칼럼들을 별로로 모아놓은 반정규화 기법은 테이블추가 반정규화 기법 중에서 부분테이블 추가에 해당한다.
** FK에 대한 속성 추가는 반정규화 기법이라기 보다는 데이터모델링에서 관계를 연결할 때 나타나는 자연스러운 현상
46번 문제
아래 설명에서 데이터 액세스 성능을 향상시키기 위해 적용하는 방법
설명 ) 하나의 테이블에 많은 양의 데이터가 저장되면 인덱스를 추가하고 테이블을 몇 개로 쪼개도 성능이 저하되는 경우가 있다. 이때 논리적으로 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리하여 데이터 액세스 성능도 향상시키고, 데이터 관리방법도 개선할 수 있도록 테이블에 적용하는 기법을 파티셔닝 기법이라고 한다.
반정규화의 대상에 대한 다른 방법으로 처리
- 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 뷰를 사용하면 이를 해결할 수 있다.
- 대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우에 클러스터링을 적용하거나 인덱스를 조정함으로써 성능을 향상시킬 수 있다.
- 대량의 데이터는 Primary Key의 성격에 따라 부분적인 테이블로 분리할 수 있다. 즉, 파티셔닝 기법이 적용되어 성능저하를 방지할 수 있다.
- 응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상시킬 수 있다.