정규화된 엔티티, 속성, 관계에 대해
를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법을 의미
반정규화 정보에 대한 재현의 적시성으로 판단한다.
예를 들어, 빌링의 잔액은 다수 테이블에 대한 다량의 조인이 불가피하므로, 데이터 제공의 적시성 확보를 위한 필수 반정규화 대상이 되는 정보이다.(O)반정규화 테이블은 집계 테이블에 국한하여 적용한다.(X)
sol) 집계 테이블 외에, 다양한 유형에 대해 반정규화 테이블 적용이 필요할 수 있다.
기법분류 | 반정규화 기법 |
---|---|
테이블 병합 | 1:1 관계 테이블 병합 |
테이블 병합 | 1:M 관계 테이블 병합 |
테이블 병합 | 슈퍼/서브타입 테이블 병합 |
테이블 분할 | 수직 분할 |
테이블 분할 | 수평 분할 |
테이블 추가 | 중복테이블 추가 |
테이블 추가 | 통계테이블 추가 |
테이블 추가 | 이력테이블 추가 |
테이블 추가 | 부분테이블 추가 |
반정규화 기법 |
---|
중복칼럼 추가 |
파생칼럼 추가 |
이력테이블 칼럼 추가 |
PK에 의한 칼럼 추가 |
응용시스템 오작동을 위한 칼럼 추가 |
FK 관계에 해당하는 속성을 추가하여 JOIN 성능을 향상시키는 것도 반정규화의 기법이다.(X)
sol) FK에 대한 속성 추가는, 데이터 모델링에서 관계를 연결할 때 나타나는 자연스러운 현상일 뿐이다.
VIEW 테이블
지나치게 많은 JOIN이 걸려 데이터를 조회하는 작업이 기술적으로 힘든 경우
클러스터링
대량의 데이터 처리 또는 부분 처리에 의한 성능저하가 일어날 때
인덱스 조정
대량의 데이터 처리 또는 부분 처리에 의한 성능저하가 일어날 때
파티셔닝
대량의 데이터를 PK의 성격에 따라 부분적인 테이블로 분리하는 기법
하나의 테이블에 많은 양의 데이터가 저장되면 인덱스를 추가하고 테이블을 몇 개로 쪼개도 성능이 저하되는 경우가 있다.
이 때 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리하여 데이터 액세스 성능을 향상시키고, 데이터 관리 방법도 개선할 수 있도록 하는 기법을 파티셔닝이라고 한다.(O)
어느 한 로우의 데이터 크기가, 이를 저장하려고 하는 블록의 크기보다 큰 경우 발생한다.
데이터를 쪼개서 분산 저장한다.
트랜잭션은 항상 전체를 대상으로 일괄 처리하는데, 테이블을 서브타입별로 개별 유지하도록 변환하면 Union 연산에 의해 성능이 저하될 수 있다.
트랜잭션은 항상 서브타입을 개별로 처리하는데, 테이블을 하나로 통합하여 변환하면 불필요하게 많은 양의 데이터가 집적되어 있어, 성능이 저하될 수 있다.
트랜잭션은 항상 슈퍼+서브 타입을 함께 처리하는데, 개별로 유지학메 되면 JOIN에 의해 성능이 저하될 수 있다.
트랜잭션은 항상 전체를 통합하여 분석 및 처리하는데, 하나로 통합되어 있으면 데이터 집적으로 인해 성능이 저하될 수 있다.(X)
sol) 트랜잭션은 항상 전체를 통합하여 분석 및 처리하며 슈퍼-서브 타입이 하나의 테이블로 통합되어 있으면, 하나의 테이블에 집적된 데이터만 읽어 처리할 수 있기 때문에, 다른 형식에 비해 성능이 더 우수하다.
인덱스는 값이 범위에 따라 일정하게 정렬되어 있다.
인덱스 액세스 범위를 좁히려면 다음의 조건을 따른다.
엔티티 간에 논리적인 관계가 있을 경우 즉, 엔티티 간의 관계를 정의하여 관련 엔티티 상호 간 업무적인 연관성이 있음을 표시하는 것은, 상호 간 JOIN이 자주 발생함을 의미한다.
따라서 DMBS가 제공하는 FK Constraints를 생성했는지의 여부와 상관 없이, JOIN 성능을 향상시키기 위한 인덱스를 생성해주는 것이 옳다.
모델에서는 관계를 연결하고 데이터베이스에 FK 제약조건 생성을 생략하는 경우에도, 데이터의 JOIN 관계는 필요하므로 이에 대한 인덱스를 따로 생성해줄 필요가 있다.(O)
특정 칼럼에 대해, 부모 테이블에 이미 인덱스가 존재한다고 하여도 JOIN에 의한 성능 저하를 예방하기 위해, 상속받아 생긴 테이블에도 해당 칼럼에 대한 별도의 인덱스를 지정해야 한다.(O)
Global Single Instance(GSI)를 구성할 때 분산 데이터베이스를 활용하여 구성하는 것이 효율적이다.(x)
sol) GSI는 통합된 하나의 인스턴스 즉, 통합 데이터베이스를 의미한다. 분산 데이터베이스와는 대치되는 개념이다.