물리데이터 저장소 설계
일반적인 시스템 개발절차
비지니스 요구사항 -> 개념모델링(전략수립) -> 논리데이터모델링/ 분석모델링 -> 물리데이터모델링/설계모델링 -> 데이터베이스구축/어플리케이션개발 -> 운영시스템(데이터베이스/어플리케이션)
논리데이터 저장소
- 데이터 및 데이터 간 연관성, 제약조건을 식별하여 논리적 구조로 조직화하여 모델링 표기법으로 형상화한 데이터의 저장소
물리데이터 저장소
- 논리데이터 저장소에 저장된 데이터와 구조들을 DBMS의 특성을 고려하여 저장하는 하드웨어적 저장장치
데이터모델링
데이터 모델링의 정의
기업의 정보구조를 실체(Entity:엔티티)와 관계(Relation)를 중심으로 명확하게 하고 체계적으로 표현하여 문서화하는 기법
데이터 모델링의 목적
- 연관 조직의 정보요구에 대한 정확한 이해를 할 수 있다.
- 사용자, 설계자, 개발자 간의 효율적인 의사소통 수단을 제공한다.
- 데이터 체계 구축을 통한 고품질의 소프트웨어와 유지보수 비용을 감소시키는 효과를 기대한다.
- 신규 또는 개선 시스템의 개발 기초를 제공한다.
데이터모델링의 특성
- 데이터중심의 분석을 통한 업무 흐름 파악이 용이하다.
- 데이터 무결성을 보장할 수 있다.
- 데이터의 공유를 통한 중복을 제거하고 일관성 있는 정보를 제공받을 수 있다.
데이터모델링의 절차
개념데이터모델링 -> 논리데이터모델링 -> 물리데이터모델링 -> 데이터베이스 구축
개념데이터 모델링
- 전체의 정보요건을 표현한 상위수준의 모델
- 주요 엔티티타입, 기본속성, 관계 주요업무기능
- 모든 업무영역, 주요 업무 규칙정의
- 논리데이터 모델의 기초가 된다.
논리데이터모델링
- 개념모델로부터 업무영역의 업무 데이터 및 규칙을 구체적으로 표현한 모델
- 모든 업무용 엔티티타입, 속성, 관계, 프로세스
- 모든 업무데이터를 정규화(Normalization)한다.
- 모든 업무 규칙과 관계를 완전하고 정확하게 표현
- 성능 혹은 기타 제약 사항과는 독립적인 모델로서 특정DBMS로부터 독립적
- 엔티티와 속성들의 관계를 구조적으로 정의하는 단계
- 엔티티(Entity) - 관리할 대상이 되는 실체
- 속성()Attribute) - 관리할 정보의 구체적 항목
- 관계(Relationship) - 엔티티간의 대응관계
- 논리데이터 모델링의 특성
- 논리적 데이터모델링 적용시 요구사항이 충분히 수집되지 않으면 다음 단계의 요구사항 변경에 따른 많은 비용이 발생한다.
- 모든 이해당사자들과 의사소통의 보조자료로서 E-R모델을 활용
- 논리적 모델은 하드웨어나 소프트웨어에 독립적이다.
정규화(Normalization)
- 중복성을 최소화하고 정보의 일관성을 보장하기 위한 개념
- 어떤한 구조가 가장 바람직하며 어떻게 분해하여야 하는지에 대한 구체적인 판단의 기준을 제공
- 정규화된 데이터모델은 정확성, 일치성, 단순성, 비중복성, 안정성을 보장
- 삽입이상(Insertion anomaly)
- 릴레이션에 새 데이터를 삽입하려면 불필요한 데이터도 함께 삽입해야되는 문제
- 갱신이상(Update anomaly)
- 릴레이션의 중복된 튜플들 중 일부만 수정하여 데이터가 불일치하게 되는 모순이 발생하는 문제
- 삭제이상(Deletion anomaly)
- 릴레이션에서 튜플을 삭제하면 필요한 데이터까지 손실되는 연쇄 삭제 현상이 발생하는 문제
제1정규화
- 반복되는 속성이나 그룹 속성을 제거
- 새로운 실체와 1:N관계 추가
- 모든 속성은 반드시 하나의 값을 가져야함(반복X)
제2정규화
- 주식별자에 완전하게 종속되지 않은 속성 제거
- 불완전 함수적 종족제거
- 모든 속성은 반드시 UID전부에 종속되어야 함 (일부 종속X)
제3정규화
- 비식별자에 종솓되는 속성 제거
- 주식별자에 이행종속되는 속성 제거
- UID가 아닌 모든 속성간에 서로 종속될 수 없음(속성간 종속성 배제)
제4정규화
- 실제 거의 고려되지 않는 정규화
- 주식별자에 다가종속되는 속성을 두가지 이상 두지 않음
- 2차 정규화된 테이블은 다대다관계를 가질수 없음
- 어떠한 관계구조가 바람직한 것인지 바람직하지 못한 관계를 어떻게 분해하여야하는지에 관한 구체적인 판단기준을 제공
BCNF
제5정규화
정규화 수준에 따른 장단점
- 장점
- 단점
- 물리적 접근이 복잡
- 길이가 짧은 데이터생성으로 과도한 조인(JOIN)발생
트렌잭션 인터페이스
- 트렌잭션(Transaction)
- 하나의 작업을 수행하기 위해 필요한 데이터베이스 연산들의 모임
- 작업 수행에 필요한 SQL문의 모임
- 논리적인 작업의 단위
- 장애 발생시 복구작업을 위한 중요한 단위
- COMMIT(정상종료, DB반영)
- ROLLBACK(비정상종료, 취소)
- SAVWPOINT(ROLLBACK 할 위치)
- 트렌잭션 인터페이스의 특징
물리데이터모델링
- 설계단계에서 시스템의 설계적 및 정보 요건을 정확하고 완전하게 표현한 모델
- 데이터베이스 생성을 위한 물리구조로 변환
- 설계와 성능을 고려한 조정을 수행
- 적용 DBMS에 적합한 성능조정을 수행
- 물리데이터 저장소 설계
- 반정규화/역정규화(Denormalization)
- 정규화에 충실하여 모델링을 수행하면 종속성, 활용성은 향상되나 수행속도가 증가하는 경우가 발생하여 이를 극복하기 위해 성능에 중점을 두어 정규화하는 방법
- 특징
- 데이터모델링 규칙에 얽매이지 않고 수행
- 시스템이 물리적으로 규현되었을 때 성능향상을 목적으로 한다.
- 반정규화/역정규화(Denormalization)유형
- 용도
- 다량의 범위를 자주 처리하는 경우
- 특정 범위의 데이터만 자주 처리되는 경우
- 처리범위를 줄이지 않고는 수행속도를 개선할 수 없는 경우
- 방법
- 집계테이블추가
- 활용하고자 하는 집계정보를 위한 테이블을 추가하고 각 원본테이블에 트리거를 등록시켜 생성하여 활용하는데 이때 트리거의 오버헤드에 유의해야함
- 진행테이블추가
- 이력관리등의 목적으로 사용되며 활용도가 좋아지도록 기본키를 적절히 설정하여야 한다.
- 특정부분만을 포함하는 테이블 추가
- 방대한 테이블의 특정부분만을 사용하는 경우 자주 사용되는 부분으로 새로운 데이터를 생성하여 활용
- 테이블조합
- 용도
- 대부분 처리가 두개이상의 테이블에 대해 항상 같이 일어나는 경우에 활용
- 방법
- 테이블분할
- 용도
- 칼럼의 사용빈도 차이가 많이 나는 경우
- 각각의 사용자가 각각 특정한 부분만 지속적으로 사용하는 경우
- 상황에 따라 SUPER_TYPE을 모두 내려 SUB-TYPE 별로 분할하거나 SUPER-TYPE만은 따로 테이블을 생성하는 경우
- 방법
- 테이블제거
- 용도
- 테이블 재정의나 칼럼의 중복화로 더이상 엑세스 되지 않는 테이블 발생할 경우
- 방법
- 컬럼의 중복화
- 용도
- 자주 사용되는 컬럼이나 다른 테이블에 분산되어 있어 상세한 조건에도 불구하고 엑세스 범위를 줄이지 못하는 경우
- 대량데이터에서 Row별 연산 결과를 얻고자 할 때 성능향상을 위한 파생(Derived)컬럼을 추가할 경우
- 기본키의 형태가 적절하지 않거나 너무 많은 컬럼으로 구성된 경우
- 정규화 규칙에 얽매이지 않으면서 성능향상을 목적으로 한 반정규화를 통한 중복데이터를 허용하는 경우
- 방법
- 3단계데이터 베이스구조
- 외부단계(사용자관점) - > 개념단계(조직 전체관점) -> 내부단계(저장장치관점)
- 물리데이터저장소 구성
- 물리데이터저장소 설계에 따라 데이터저장소에 실제 데이터가 저장될 물리적 공간을 구성
- 다양한 오브젝트를 설계한다.
- 테이블제약조건 설계
- 참조 무결성을 관리하기 위한 제약조건(Constraint)를 정의
- 인덱스 설계
- 부분 범위 데이터 검색시 전체 테이블을 검색하지 않고 빠른 검색을 위해 특정 컬럼들에 대해서 미리 인덱싱(정렬) 작업을 함으로써 해당 인덱스를 이용하여 빠른 검색을 할 수 있는 기법
- 뷰 설계
- 클러스터 설계
- 지정된 컬럼 값의 순서대로 데이터 행을 저장하는 방법으로 하나 혹은 그 이상의 테이블을 같은 클러스터내 저장이 가능하다.
- 파티션 설계
- 대용량DB는 몇개의 중요한 트랜잭션 테이블에서 데이터가 증가함으로 보다 작은 단위로 나눔으로써 성능저하 방지와 관리의 용이성을 위해 사용하는 기법
- 범위분할(Range Partitioning)
- 해시분할(Hash Partitioning)
- 조합분할(Composite Partitioning)
- 디스크구성 설계
- 다양한 오브젝트의 디스크 구성 설계시 고려사항을 참조하여 설계하도록 한다.
ORM(Object-Relational Mapping)프레임워크
- Object 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것
-
댓글 영역