point3 반정규화 (DE-Normalization)
- 반정규화
데이터베이스의 성능 향상을 위하여, ㄷ이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다.
반정규화는 조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다.
- 반정규화를 수행하는 경우
- 정규화에 충실하면 종속성, 활용성은 향상되지만 수행속도가 느려지는 경우
- 다량의 범위를 자주 처리해야 하는 경우
- 특정 범위의 데이터만 자주 처리하는 경우
- 요약/집계 정보가 자주 요구되는 경우
- 반정규화의 절차
반정규화 절차 | 설명 |
대상 조사 및 검토 | 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상을 조사한다. |
다른 방법 검토 | - 반정규화를 수행하기 전에 다른 방법이 있는지 검토한다. - 예를 들어 클러스터링, 뷰, 인덱스 튜닝, 응용프로그램, 파티션 등을 검토한다. |
반정규화 수행 | 테이블, 속성, 관계 등을 반정규화 한다. |
클러스터링
- 클러스터링 인덱스 라는 것은 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법이다.
- 따라서 조회 시에 인접 블록을 연속적으로 읽기 때문에 성능이 향상된다.
- 반정규화 기법
1. 계산된 칼럼 추가
배치 프로그램으로 총판매액, 평균잔고, 계좌평가 등을 미리 계산하고, 그 결과를 틍정 칼럼에 추가한다.
2. 테이블 수직분할
하나의 테이블을 두개 이상의 테이블로 분할한다. 즉, 칼럼을 분할하여 새로운 테이블을 만드는 것
key | c1 | c2 | c3 | c4 | c5 | c6 |
->
key | c1 | c2 | c3 |
key | c4 | c5 | c6 |
3. 테이블 수평분할
년도 | c1 |
2001 2002 2003 2004 . . . |
->
년도 | c1 |
2001 2002 |
년도 | c1 |
2003 2004 |
파티션(partition) 기법
데이터베이스에서 파티션을 사용하여 테이블을 분해할 수 있다.
파티션을 사용하면 논리적으로 하나의 테이블이지만 여러개의 데이터 파일에 분산되어서 저장한다.
파티션 테이블의 장점
- 데이터 조회 시에 엑세스(Access) 범위가 줄어들기 때문에 성능이 향상된다.
- 데이터가 분할되어 있기 때문에 I/O(input/output)의 성능이 향상된다.
- 각 파티션을 독립적으로 백업 및 복구가 가능하다.
4. 테이블 병합
- 1대1 관계의 테이블을 하나의 테이블로 병합해서 성능을 향상시킨다.
- 1대N 관계의 테이블을 병합하여 성능을 향상시킨다. 하지만 많은 양의 데이터 중복이 발생한다.
- 슈퍼타입과 서브타입 관계가 발생하면 테이블을 통합하여 성능을 향상시킨다.
super type 과 sub type
- 고객 엔터티는 개인고객과 법인고객으로 분류된다. 이때 고객 엔터티는 슈퍼타입이고 개인고객과 법인고객은 서브타입이 된다.
- 즉 부모와 자식 간의 관계가 나타난다
- 슈퍼타입과 서브타입의 관계는 베타적 관계와 포괄적 관계가 있는데, 베타적 관계는 고객이 개인 고객이거나 법인고객인 경우를 의미한다. 포괄적 관계는 개인고객일수도있고 법인고객일 수도 있는 것이다.
슈퍼타입 및 서브타입 변환 방법
변환 방법 | 설명 |
OneToOne Type | - 슈퍼타입과 서브타입을 개별 테이블로 도출한다. - 테이블의 수가 많아서 조인이 많이 발생하고 관리가 어렵다. |
Plus Type | - 슈퍼타입과 서브타입 테이블로 도출한다. - 조인이 발생하고 관리가 어렵다. |
Single Type | - 슈퍼타입과 서브타입을 하나의 테이블로 도출한다. - 조인 성능이 좋고 관리가 편리하지만, 입출력 성능이 나쁘다 |
point4 분산 데이터베이스
- 분산데이터베이스
- 데이터베이스 시스템 구축 시에 한대의 물리적 시스템에 데이터베이스 관리 시스템을 설치하고 여러 명의 사용자가 데이터베이스 관리 시스템에 접속하여 데이터베이스를 사용하는 구조를 중앙 집중형 데이터베이스 라고 한다.
- 또한 물리적으로 떨어진 데이터베이스에 네트워크로 연결하여 단일 데이터베이스 이미지를 부여주고 분산된 작업 처리를 수행하는 데이터베이스를 분산 데이터베이스라고 한다.
- 분산 데이터베이스를 사용하는 고객은 시스템이 네트워크로 분산되어 있는지의 여부를 인식하지 못하면서, 자신만의 데이터베이스를 사용하는 것처럼 사용할 수 있다. 이처럼 데이터베이스는 투명성을 제공해야 한다.
- 투명성은 분산 데이터베이스에서 중요한 요소이며 투명성의 종류에는 분할, 위치, 지역사상, 중복, 장애 및 병행 투명성이 있다.
분산 데이터베이스의 투명성과 종류
투명성 | 설명 |
분할 투명성 | 고객은 하나의 논리적 릴레이션이 여러 단편으로 분할되어 각 단면의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없다 |
위치 투명성 | - 고객이 사용하려는 데이터의 저장 장소를 명시할 필요가 없다. - 고객은 데이터가 어느 위치에 있더라도 동일한 명령을 사용하여 데이터에 접근할 수 있어야 한다. |
지역 사상 투명성 | 지역 DBMS와 물리적 데이터베이스 사이의 사상이 보장됨에 따라 각 지역 시스템 이름과 무관한 이름이 사용 가능하다. |
중복 투명성 | 데이터베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하게 데이터의 일관성이 유지된다. |
장애 투명성 | 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도, 데이터의 무결성은 보장된다. |
병행 투명성 | 여러 고객의 응용 프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없다. |
- 분산 데이터베이스 설계 방식
1. 상향식 설계 방식
지역 스키마 작성 후 향후 전역 스키마를 작성하여 분산 데이터베이스를 구축한다.
2. 하향식 설계 방식
전역 스키마 작성 후 해당 지역 사상 스키마를 작성하여 분산 데이터베이스를 구축한다.
- 분산 데이터베이스를 하향식 접근 방식으로 구축한다는 것은 기업 전체의 전사 데이터 모델을 수렴하여 전역 스키마를 생성하고, 그 다음 각 지역별로 지역 스키마를 생성하여 분산 데이터베이스를 구축하는것이다. 상향식 접근 방식은 지역별로 데이터베이스를 구축한 후에 전역 스키마로 통합하는 것이다.
- 분산데이터베이스를 구축하거나 운영할 때 동일한 데이터베이스 관리 시스템으로 분산 데이터베이스를 구축하는 것은 크게 어렵지 않다. 하지만 기업에 여러 종류의 dbms 가 있으면 이기종 데이터베이스 관리 시스템으로 연동해야 한다. 이기종 데이터베이스 시스템으로 연동하기 위해서는 데이터베이스 미들웨어(ODBC, JDBC) 를 사용해야 한다.
분산 데이터베이스 장점과 단점
장점
- 데이터베이스 신뢰성과 기용성이 높다
- 분산 데이터베이스가 병렬 처리를 수행하기 때문에 빠른 응답이 가능하다.
- 분산 데이터베이스를 추가하여 시스템 용량 확장이 쉽다.
단점
- 데이터베이스가 여러 네트워크를 통해서 분리되어 있기 때문에 관리와 통제가 어렵다.
- 보안관리가 어렵다.
- 데이터 무결성 관리가 어렵다.
- 데이터베이스 설계가 복잡하다.
이후 연습문제나 단원문제들이 있는데 이거는 이따가 오후에 해야겠다
'파이썬 > SQLD' 카테고리의 다른 글
[SQLD] 시험준비 2주 2일차 - SQL 기본 및 활용 - 관계형db (0) | 2022.05.07 |
---|---|
[SQLD] 시험준비 2주 1일차 - 데이터 모델과 성능 문제 + 데이터 모델링의 이해 단원 정리 문제 (0) | 2022.05.05 |
[SQLD] 시험준비 1주 4일차 - 함수적 종속성(Functional Dependency) (0) | 2022.04.30 |
[SQLD] 시험준비 1주 3일차 - 데이터 모델링 문제 풀기 + Section2.데이터모델과 성능 (0) | 2022.04.29 |
[SQLD] 시험준비 1주 2일차 - 엔터티, 속성, 관계 (0) | 2022.04.23 |