SQLD (2)
▶정규화 절차
-제 1 정규화
-속성 (Attribute)의 원자성을 확보
-기본 키 (primary)를 설정
-제 2 정규화
-기본키가 2개 ↑ 으로 이루어진 경우, 부분 함수 종속성을 제게
-제 3 정규화
-기본키를 제외한 칼럼 간에 종속성 제거
-이행 함수 종속성 제거
-BCNF
-기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면서 분해
-제 4 정규화
-여러 칼럼들이 하나의 칼럼을 종속시키는 경우,
분해하여 다중값 종속성ㅇ르 제거
-제 5 정규화
-조인에 의해 종속성이 발생되는 경우 분해
▶정규화의 문제점
-데이터 조회시 Join 유발
∴CPU와 메모리를 ↑ 사용
-중첩 루프로 인해 Join의 부하 유발
▶반정규화 (De-Normalization)
-정규화의 문제점 해결
-데이터베이스 성능 ↑ 위해, 데이터 중복 o, 조인을 ↓
-데이터 조회 속도 ↑
-문제점
└ 데이터 모델의 유연성 ↓
└ 블록 크기를 넘어설 수도 o
└ 여러 개의 블록을 읽어야 할 경우 디스크 입출력이 ↑ 성능 ↓
▶반정규화를 수행하는 경우
-정규화에 충실하면 종속성, 활용성을 ↑ but 수행 속도가 느린 경우
-다량의 범위를 자주 처리해야 하는 경우
-특정 범위의 데이터만 자주 처리하는 경우
-요약/집계 정보가 자주 요구되는 경우
▶반정규화 절차
-대상 조사 및 검토
-데이터 처리 범위, 통계성 ... 을 확인해서 반정규화 대상을 조사
-다른 방법 검토
-반정규화를 수행하기 전에 다른 방법이 있는지 검토
ex) 클러스터링, 뷰, 인덱스 튜닝, 응용프로그램, 파티션 ...
-반정규화 수행
-테이블, 속성, 관계 ... 을 반정규화 함
*클러스터링 (Clustering)
-물리적으로 정렬해서 저장하는 방법
-조회 시 인접 블록을 연속적으로 읽기 때문에 성능 ↑
▶반정규화 기법
-계산된 컬럼 추가
-테이블 수직 분할
-칼럼을 분할하여 새로운 테이블 만듬
-테이블 수평 분할
-값을 기준으로 테이블 분할
-테이블 병합
└ 1:1 관계 테이블을 하나로 병합, 성능 ↑
└ 1:N 관계 테이블을 하나로 병합, 성능 ↑ (데이터 중복 발생)
└ 슈퍼 타입과 서브 타입 관계 테이블을 통합, 성능 ↑
▶슈퍼 타입 및 서브 타입 변환 방법
-One To One Type
-슈퍼 타입과 서브 타입을 개별로 테이블 도출
-테이블 수 ↑, 조인 발생, 관리 어렵
-Plus Type
-슈퍼 타입, 서브 타입 테이블로 도출
-조인이 발생하고 관리 어렵
-Single Type
-슈퍼 타입과 서브 타입을 하나의 테이블 도출
-조인 성능이 좋고, 관리 편함 but 입출력 성능 ↓
One To One | Plus | Single | |
특징 | 개별 테이블 유지 | 슈퍼 + 서브타입 테이블 |
하나의 테이블 |
확장성 | 우수 | 보통 | 나쁨 |
조인성능 | 나쁨 | 나쁨 | 우수 |
I/O량 성능 | 좋음 | 좋음 | 나쁨 |
관리용이성 | 좋지 x | 좋지 x | 좋음 |
트랜잭션 유형에 따른 선택 방법 |
개별 테이블로 접근이 ↑ 경우 선택 |
슈퍼 + 서브 형식으로 데이터를 처리하는 경우 선택 |
전체를 일괄적으로 처리하는 경우 선택 |
▶파티션 (Partition) 기법
-DB에서 파티션을 사용하여 테이블 분할 o
-파티션을 사용하면 논리적으로 하나의 테이블 but 여러 개의 데이터 파일에 분산되어 저장
-Range Partition
-데이터 값의 범위를 기준으로 파티션 수행
-List Partition
-특정한 값을 지정하여 파티션 수행
-Hash Partition
-해시 함수를 적용하여 파티션 수행
-Composite Partition
-범위와 해시를 복합적으로 사용하여 파티션 수행
▶파티션 테이블의 장점
-데이터 조회 시 액세스 (Access) 범위가 ↓ 때문에 성능이 ↑
-데이터가 분할되어 있기 때문에 I/O (Input / Output)의 성능이 ↑
-각 파티션을 독립적으로 백업 및 복구가 o
▶분산 데이터베이스
-중앙 집중형 데이터베이스
-시스템 구축 시 ... 한 대의 물리적 시스템에 접속하여 데이터베이스를 사용
-분산 데이터베스
-물리적으로 떨어진 데이터베이스를 네트워크로 연결하여 작업 처리
▶분산 데이터베이스의 투명성 종류
-분할 투명성
-하나의 논리적 릴레이션이 분할되어 여러 시스템에 저장되어 있음을 인식할 필요 x
-위치 투명성
-데이터의 저장 장소를 명시할 필요 x
-데이터가 어느 위치에 있던 동일한 명령을 사용하여 데이터 접근 가능해야 o
-지역 사상 투명성
-지역 DBMS와 물적 DB 사이의 사상이 보장됨에 따라 각 지여 시스템 이름과 무관한 이름 사용 o
-중복 투명성
-DB 객체가 여러 시스템에 중복되어 존재에 무관하게 데이터의 일관성이 유지
-장애 투명성
-DB가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도 데이터 무결성 보장
-병행 투명성
-여러 응용 프로그램이 동시에 분산 DB에 대한 트랜잭션을 수행한 경우도 결과에 이상 x
▶분산 데이터베이스 설계 방식
-상향식 설계 방식
-지역 스키마 작성 후 전역 스키마 작성하여 분산 DB 구축
-하향식 설계 방식
-전역 스키마 작성 후 지역 사상 스키마 작성하여 분산 DB 구축
▶분산 데이터베이스 장단점
-장점
-DB 신뢰성과 가용상이 ↑
-병렬 처리 수행하기 때문에 빠른 응답 o
-분산 DB를 추가하여 시스템 용량 확장 쉬움
-단점
-관리와 통제 어렵
-보안관리 어렵
-데이터 무결성 관리 어렵
-DB 설계가 복잡
▶DB와 DBMS
DBMS : 계층형, 네트워크, 관계형 DB를 관리하기 위한 소프트웨어
▶관계형 데이터베이스 집합 연산
▶관계형 데이터베이스 관계 연산
-선택연산 (Selection)
-릴레이션 조건에 맞는 행 조회
-투영연산 (Projection)
-릴레이션에서 조건에 맞는 속성 조회
-결합연산 (Join)
-여러 릴레이션의 공통 속성을 사용해 새로운 릴레이션 만듬
-나누기 연산 (Division)
-나누는 릴레이션이 가진 속성과 동일한 값을 가지는 행 추출
나누는 릴레이션 속성 삭제 후, 중복 제거
▶테이블 구조
-기본키 : 유일성, 최소성, not null 만족
-외래키 : 다른 테이블의 기본키를 참조 (Join) 관계 연산 中 결합 연산에 사용
-행 : 테이블에 저장되는 값 (=Tupe)
-칼럼 : 테이블에 저장하기 위한 Field (=Attribute, 속성)