DB/sql

SQL전문가 가이드(데이터 모델과 성능)2-1

혀끄니 2023. 9. 20. 09:00
728x90

정규화란?

-정규화란 하나의 릴레이션에 하나의 의미만 존재할 수 있도록 릴레이션을 분해해 나가는 과정이라고 할 수 있다.

-정규화의 목적은 구성되는 모든 릴레이션이 중복되지 않게 효과적으로 데이터베이스 내에 표현이 가능하도록 하는 것이며, 삽입,삭제,갱신 시 Anomaly현상이 발생하지 않도록 하는것입니다.

-정규화를 함으로써 얻게 되는 효과는 자료의 저장 공간을 최소화하고 자료 불일치를 최소화하며 자료구조를 안정화 시킴은 물론 이상현상을 방지하는 효과를 볼 수 있다.

반정규화란?

-정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다.

4가지 경우를 고려하여 반정규화를 고려

1.자주 사용되는 테이블에 접근하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우에 반정규화

2.테이블에 대량의 데이터가 있고, 대량의 데이터 범위를 자주 처리하는 경우에 처리범위를 일정하게 줄이지 않으면, 성능을 보장할 수 없을 경우에 반정규화

3.통계성 프로세스에 의해 통계 정보를 필요로 할 때 별도의 통계테이블을 생성한다.

4.테이블에 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 반정규화를 검토한다.

반정규화를 결정하기 이전에 성능을 향상 시킬 수 있는 방법

1.지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 뷰를 사용하면 이를 해결

2.대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우에 클러스터링을 적용하거나 인덱스를 조정함으로써 성능을 향상 시킬 수 있다.

3.대량의 데이터는 PrimaryKey의 성격에 따라 부분적인 테이블로 분리할 수 있다.

4.응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상시킬 수 있다.

슈퍼타입/서브타입 모델

-공통 부분을 슈퍼타입으로 모델링하고 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성에 대해서는 별도의 서브엔터티로 구분하여 업무의 모습을 정확하게 표현하면서 물리적인 데이터 모델을 변환을 할 때 선택의 폭을 넓힐 수 있는 장점이 있다.

분산 데이터베이스의 개요

-여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스

-논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임, 물리적 Site 분산, 논리적으로 사용자 통합/공유

-분산 데이터베이스는 데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러지역 여러 노드로 위치시켜 사용성/성능 등을 극대화 시킨 데이터베이스라고 정의할 수 있다.

분산 데이터베이스의 투명성

-분산데이터베이스가 되기 위해서는 6가지 투명성을 만족해야한다.

1.분할 투명성(단편화): 하나의 논리적 릴레이션이 여러 단편으로 분할되어 각 단편의 사본이 여러 site에 저장

2.위치 투명성: 사용하려는 데이터의 저장 장소 명시 불필요, 위치정보가 시스템 카테로그에 유지되어야 함.

3.지역사상 투명성: 지역DBMS와 물리적 DB사이의 Mapping 보장, 각 지역 시스템 이름과 무관한 이름 사용 가능

4.중복 투명성: DB 객체가 여러 site에 중복 되어 있는지 알 필요가 없는 성질

5.장애 투명성: 구성요소(DBMS,Computer)의 장애에 무관한 트랜섹션의 원자성 유지

6.병행 투명성: 다수 트랜섹션 동시 수행시 결과의 일관성 유지, Time Stamp, 분산 2단계 Locking을 이용 구현

728x90