1. 반정규화(De-Normalization)
-
데이터 중복 허용하고 조인을 줄여서 데이터베이스 성능을 향상하는 방법
-
반정규화는 조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아짐
2. 반정규화를 수행하는 경우
-
정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
-
다량의 범위를 자주 처리해야 하는 경우
-
특정 범위의 데이터만 자주 처리하는 경우
-
요약/집계 정보가 자주 요구되는 경우
*반정규화 절차
-
대상 조사 및 검토: 데이터 처리 범위, 통계성 등을 확인해서 반정규화 한다.
-
다른 방법 검토: 반정규화 수행 전, 다른 방법 있는지 검토함(ex: 클러스터링, 뷰, 인덱스 튜닝, 파티션, 응용프로그램 등)
-
반정규화 수행: 테이블, 속성, 관계 등을 반정규화함
*클러스터링(Clustering)
-
클러스터링 인덱스는 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법
-
조회 시에 인접 블록을 연속으로 읽기 때문에 성능이 향상됨
3. 반정규화 기법
(1) 계산된 칼럼 추가
(2) 테이블 수직분할
-
하나의 테이블을 두 개 이상의 테이블로 분할, 칼럼 분할 해 새로운 테이블 만듦
(3) 테이블 수평분할
-
하나의 테이블에 있는 값을 기준으로 테이블을 분할하는 방법
*파티션 기법
-
데이터베이스에서 파티션을 사용해 테이블 분할할 수 있음
-
파티션을 사용하면 논리적으로는 하나의 테이블이지만 여러 개의 데이터 파일에 분산되어서 저장됨
-
Range Partition: 데이터 값의 범위를 기준으로 파티션을 수행함
-
List Partition: 특정한 값을 지정해 파티션을 수행함
-
Hash Partition: 해시 함수를 적용해 파티션을 수행함
-
Composite Partition: 범위와 해시를 복합적으로 사용해 파티션을 수행함
*파티션 테이블의 장점
-
데이터 조회 시에 액세스(Access) 범위가 줄어들기 때문에 성능이 향상됨
-
데이터가 분할되어 있기 때문에 I/O의 성능이 향상됨
-
각 파티션을 독립적으로 백업 및 복구가 가능함
(4) 테이블 병합
-
1대1 관계의 테이블을 하나의 테이블로 병합해서 성능을 향상시킴
-
1대N 관계의 테이블을 병합해 성능을 향상시킴(하지만 많은 양의 데이터 중복 발생함)
-
슈퍼 타입과 서브 타입 관계가 발생하면 테이블을 통합해 성능을 향상시킴
*Super type과 Sub type
-
슈퍼 타입과 서브 타입은 부모와 자식 간의 관계가 나타남
-
슈퍼 타입과 서브 타입의 관계는 베타적 관계와 포괄적 관계가 있음
-
베타적 관계는 슈퍼 타입이 서브타입1이거나 서브타입2인 경우를 의미함
-
포괄적 관계는 슈퍼타입이 서브타입 1일수도 있고 2일 수도 있는 것임
*슈퍼 타입 및 서브 타입 변환 방법
(1) OneToOne Type
-
슈퍼 타입과 서브 타입을 개별 테이블로 도출함
-
테이블의 수가 많아서 조인이 많이 발생하고 관리가 어려움
(2) Plus Type
-
슈퍼 타입과 서브 타입 테이블로 도출함
-
조인이 발생하고 관리가 어려움
(3) Single Type
-
슈퍼 타입과 서브 타입을 하나의 테이블로 도출함
-
조인 성능이 좋고 관리가 편리하지만, 입출력 성능이 나쁨
1. 분산 데이터베이스
-
데이터베이스 시스템 구축 시에 한 대의 물리적 시스템에 데이터베이스 관리 시스템을 설치하고 여러 명의 사용자가 데이터베이스 관리 시스템에 접속해 데이터베이스를 사용하는 구조를 중앙 집중형 데이터 베이스라 함
-
물리적으로 떨어진 데이터베이스에 네트워크로 연결해 단일 데이터베이스 이미지를 보여 주고 분산된 작업 처리를 수행하는 데이터베이스를 분산 데이터베이스라 함
-
분산 데이터베이스를 사용하는 고객은 시스템이 네트워크로 분산되어 있는지 여부를 인식하지 못하면서, 자신만의 데이터베이스를 사용하는 것처럼 사용할 수 있다.
-
데이터베이스는 투명성을 제공해야 함
-
투명성은 분산 데이터베이스에서 중요한 요소이며 투명성의 종류에는 분할, 위치, 지역사상, 중복, 장애 및 병행 투명성이 있음
*분산 데이터베이스의 투명성 종류
-
분할 투명성: 하나의 논리적 릴레이션이 여러 단면으로 분할되어 각 단면의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없음
-
위치 투명성: 데이터가 어느 위치에 있더라도 동일한 명령을 사용해 데이터에 접근할 수 있어야 함
-
지역 사상 투명성: 지역 DBMS와 물적 데이터베이스 사이의 사상이 보장됨에 따라 각 지역 시스템 이름과 무관한 이름이 사용 가능함
-
중복 투명성: 데이터베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하게 데이터 일관성이 유지됨
-
장애 투명성: 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도, 데이터의 무결성은 보장됨
-
병행 투명성: 여러 고객의 응용프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없음
2. 분산 데이터베이스 설계 방식
-
분산데이터베이스를 구축하거나 운영할 때 동일한 데이터베이스 관리 시스템으로 분산 데이터베이스를 구축하는 것은 어렵지 않음
-
하지만 기업에 여러 종류의 데이터베이스 관리 시스템이 있으면 이기종 데이터베이스 관리 시스템으로 연동 해야함
-
이기종 데이터베이스 시스템으로 연동하기 위해서는 데이터베이스 미들웨어(ODBC, JDBC)를 사용해야 함
(1) 상향식 설계 방식
-
지역 스키마 작성 후 향후 전역 스키마를 작성해 분산 데이터베이스를 구축함
(2) 하향식 설계 방식
-
전역 스키마 작성 후에 해당 지역 사상 스키마를 작성해 분산 데이터베이스를 구축함
*분산 데이터베이스 장점
-
데이터베이스 신뢰성과 가용성이 높음
-
분산 데이터베이스가 병렬 처리를 수행하기 때문에 빠른 응답이 가능함
-
분산 데이터베이스를 추가해 시스템 용량 확장이 쉬움
*분산 데이터베이스 단점
-
데이터베이스가 여러 네트워크를 통해서 분리되어 있기 때문에 관리와 통제가 어려움
-
보안관리가 어려움
-
데이터 무결성 관리가 어려움
-
데이터베이스 설계가 복잡함
'SQL 공부' 카테고리의 다른 글
(SQLD)DML(Data Manipulation Language) (0) | 2020.08.07 |
---|---|
(SQLD)관계형데이터베이스(Relation Database)/SQL 종류 (0) | 2020.08.07 |
(SQLD)정규화(Normalization)/정규화와 성능 (0) | 2020.08.04 |
(SQLD)관계(Relationship)/엔터티 식별자 (0) | 2020.08.02 |
(SQLD)엔터티(Entity)/속성(Attribute) (0) | 2020.07.31 |