파게로그
반정규화(de-normalization) 본문
반정규화(de-normalization)
- 데이터베이스의 성능 향상을 목적으로 함
- 데이터 중복을 허용
- join을 줄임
- 조회(SELECT) 속도를 향상시키지만, 데이터 모델의 유연성은 낮아짐
반정규화를 수행하는 경우
- 정규화 결과 종속성, 활용성은 향상되나 성능이 저하되는 경우
- 다량의 범위를 자주 처리하는 경우
- 특정 범위의 데이터만 자주 처리하는 경우
- 요약, 집계 정보 등이 자주 요구되는 경우
반정규화 절차
- 대상 조사 및 검토
- 데이터 처리 범위, 통계성 등을 확인 - 다른 방법 검토
- 반정규화 외 대안이 있는지 검토
- 예시: 클러스터링, 뷰, 인덱스 튜닝, 응용 프로그램, 파티션 - 반정규화 수행
- 테이블, 속성, 관계 등을 반정규화
반정규화 기법
- 계산된 칼럼 추가
- 배치 프로그램으로 필요한 항목을 미리 계산하여 그 결과를 특정 칼럼에 추가 - 테이블 수직분할
- 칼럼을 분할하여 하나의 테이블을 두 개 이상의 새로운 테이블로 분할 - 테이블 수평분할
- 하나의 테이블에 있는 값을 기준으로 테이블을 분할 - 테이블 병합
- 1:1 관계의 테이블을 하나의 테이블로 병합
- 1:N 관계의 테이블을 하나의 테이블로 병합 (많은 양의 데이터 중복 발생)
- 슈퍼 타입과 서브 타입 관계가 발생하면 테이블 통합을 통해 성능 향상
- dog-foot-story.tistory.com/62
* 클러스터링(clustering)
- 클러스터링 인덱스: 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법
- 조회 시에 인접 블록을 연속적으로 읽기 때문에 성능이 향상됨
* 파티션(partition) 기법
- 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 데이터 파일에 분할, 분산되어 저장됨
- 종류
· Range partition: 데이터 값의 범위를 기준으로 파티션을 수행
· List partition: 특정한 값을 지정하여 파티션을 수행
· Hash partition: 해시 함수를 적용하여 파티션을 수행
· Composite partition: 범위와 해시를 복합적으로 사용하여 파티션을 수행
- 장점
· 데이터 조회 시에 액세스 범위가 줄어들기 때문에 성능이 향상됨
· 데이터가 분할되어 있기 때문에 I/O 성능이 향상됨
· 각 파티션을 독립적으로 백업 및 복구할 수 있음
* 슈퍼 타입 및 서브 타입 변환 방법
- OneToOne Type
· 슈퍼 타입과 서브 타입을 개별 테이블로 도출
· 테이블의 수가 많아서 조인이 많이 발생하고 관리가 어려움
- Plus Type
· 슈퍼 타입과 서브 타입 테이블로 도출
· 조인이 발생하고 관리가 어려움
- Single Type
· 슈퍼 타입과 서브 타입을 하나의 테이블로 도출
· 조인 성능이 좋고 관리가 편리하지만, 입출력 성능이 나쁨
'콤퓨타 왕기초 > SQLD/JDBC/Oracle DB' 카테고리의 다른 글
관계형 데이터베이스(relational database) (0) | 2021.03.16 |
---|---|
분산 데이터베이스 (0) | 2021.03.16 |
정규화와 성능 (0) | 2021.03.16 |
정규화(normalization) (0) | 2021.03.16 |
엔티티 식별자(entity identifier) (0) | 2021.03.15 |
Comments