- 2 - 물리 데이터베이스 설계
1. 사전 조사 분석
1) 물리 데이터베이스 설계
논리적 구조로 표현된 논리적 데이터베이스를 디스크 등의 물리적 저장장치에 저장하는 물리적 구조의 데이터로 변환하는 과정
물리적 데이터베이스 구조의 기본적 데이터 단위는 저장 레코드(Stored Record)다
저장 레코드의 양식 설계, 레코드 집중의 분석 및 설계, 접근 경로 설계가 물리적 설계 단계에 꼭 들어가야 한다.
물리적 데이터베이스 구조는 여러 가지 타입의 저장 레코드 집합이라는 면에서 다르다.
물리적 설계 시 고려 사항
인덱스 구조
레코드 크기
파일에 존재하는 레코드 개수
파일에 대한 트랜잭션의 갱신과 참조 성향
성능 향상을 위한 개념 스키마의 변경 여부 검토
빈번한 질의와 트랜잭션들의 수행속도를 높이기 위한 고려
시스템 운용시 파일 크기의 변화 가능성
물리적 설계 전, 기존 시스템을 분석해 데이터 명명 규칙, 시스템 자원, 데이터 베이스 관리 요소를 파악해야 함
* 물리적 설계 옵션
반응 시간(Response Time) | 트랜잭션 수행을 요구한 시점부터 처리 결과를 얻을 때까지의 경과 시간 |
공간 활용도(Space Utilization) | 데이터베이스 파일과 액세스 경로 구조에 의해 사용되는 저장 공간의 양 |
트랜잭션 처리량(Transaction Throughput) | 단위 시간 동안 데이터베이스 시스템에 의해 처리될 수 있는 트랜잭션의 평균 개수 |
2) 데이터 명명 규칙 파악
물리 데이터 모델에 적용해야하는 규칙으로, 물리 데이터 모델의 설계 전에 파악해야 함
데이터 명명 규칙은 데이터 표준화 및 논리 데이터베이스 설계의 결과물 등을 통해 파악 -> 어떻게 데이터 이름을 정할 것인지?
물리 DB 설계와 논리 DB 설계에 적용되는 명명 규칙은 서로 일관성을 유지해야 함
논리적 데이터 요소 -> 물리적 데이터 요소 전환시 동일 명칭 부여의 근거로 사용
데이터 명명 규칙을 통해 중복 구축을 방지
명명 규칙을 파악하려면 도메인과 데이터 사전에 대한 지식이 필요
* 데이터 사전 : 일관성 있는 데이터 이름과 인터페이스를 제공하기 위해 데이터 속성의 논리명, 물리명, 용어 정의를 기술해놓은 것
3) 시스템 자원 파악
데이터베이스 설치에 영향을 미칠 수 있는 물리적인 요소로 사전에 미리 파악해야 함
하드웨어 자원 : 중앙처리 장치, 메모리, 디스크, I/O Controller, 네트워크
운영체제 및 DBMS 버전 : 관련 요소 파악 후 적절하게 관리
DBMS 파라미터 정보 : DBMS의 저장 공간, 메모리, 쿼리에서 활용하는 옵티마이저(Optimizer) 등에 대한 파라미터 등을 파악
4) 데이터베이스 관리 요소 파악
데이터 베이스 운영과 관련된 관리 요소로 데이터베이스 시스템의 환경에 따라 달라질 수 있으므로 미리 파악
시스템 조사 분석서를 기반으로 데이터베이스 구조, 이중화 구성, 분산 데이터베이스, 접근제어/접근통제, DB암호화 등의 범위와 특성 파악
2. 데이터베이스 저장 공간 설계
1) 테이블
데이터베이스의 가장 기본적인 객체로 로우와 컬럼으로 구성됨
데이터베이스의 모든 데이터는 테이블에 저장됨
테이블의 논리 설계 단계는 개체(Entity)에 대응하는 객체다
종류 : 일반 테이블, 클러스터 인덱스 테이블, 파티셔닝 테이블, 외부 테이블, 임시 테이블 등
2) 일반 테이블
대부분의 DBMS에서 표준 테이블로 사용하는 테이블
테이블에 저장되는 데이터의 로우 위치는 속성 값에 상관없이 데이터가 저장되는 순서에 결정됨
3) 클러스터드 인덱스 테이블
기본키나 인덱스키의 순서에 따라 데이터가 저장되는 테이블
일반적인 인덱스를 사용하는 일반 테이블에 비해 접근 경로가 단축됨
4) 파티셔닝 테이블
대용량의 테이블을 작은 논리적 단위인 파티션으로 나눈 테이블
대용량의 데이터를 효과적으로 관리할 수 있지만 파티션 키를 잘못 구성하면 성능 저하 등의 역효과를 가져올 수 있음
파티셔닝 방식 : 범위 분할, 해시 분할, 조합 분할 등
5) 외부 테이블
데이터베이스에서 일반 테이블 처럼 이용할 수 있는 외부 파일로, 데이터 베이스 내에 객체로 존재
외부 테이블은 데이터웨어 하우스, ETL 등의 작업에 사용됨
6) 임시 테이블
트랜잭션이나 세션 별로 데이터를 저장하고 처리할 수 있는 테이블
저장된 데이터는 트랜잭션이 종료되면 삭제된다.
절차적인 처리로 위해 임시로 사용하는 테이블이다.
7) 컬럼
테이블의 열을 구성하는 요소로 데이터 타입, 길이 등으로 정의 된다.
데이터 일관성 유지를 위해 사용되는 가장 기본적인 것으로, 도메인을 정의한 경우 도메인에 따라 데이터의 타입과 길이가 정의된다.
두 컬럼을 비교하는 연산에서 두 컬럼의 데이터 타입이나 길이가 다르면 DBMS 내부적으로 데이터 타입을 변환 후 비교 연산을 수행한다.
참조 관계인 컬럼들은 타입과 길이가 일치해야 함(*외래키 참조)
8) 테이블 스페이스(Tablespace)
테이블이 저장되는 논리적인 영역으로 하나의 테이블 스페이스에 하나 또는 그 이상의 테이블을 저장할 수 있음.
테이블 저장시 논리적으로는 테이블스페이스에 저장된다.
물리적으로는 데이터 파일(Data File)에 저장된다
데이터베이스를 테이블, 테이블 스페이스, 데이터 파일로 나눠 관리하면 논리적 구성이 물리적 구성에 종속되지 않아서 투명성이 보장된다.
테이블스페이스 설계시 고려사항
업무별로 구분하여 지정
대용량 테이블은 하나의 테이블 스페이스에 독립적으로 저장
테이블과 인덱스는 분리해 저장
LOB(Large Object) 타입의 데이터는 독립적인 공간으로 지정
3. 트랜잭션 분석 / CRUD 분석
1) 트랜잭션 정의
데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야 할 일련의 연산이다.
트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업시 처리되는 작업의 논리적 단위로 사용
트랜잭션은 사용자가 시스템에 대한 서비스 요구시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위 사용
2) 트랜잭션 특성
Atomicity(원자성) | 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지, 아니면 전혀 반영 되지 않도록 복구(Rollback)되어야 한다 |
Consistency(일관성) | 트랜잭션은 언제나 일관성 있는 결과를 가져와야 한다. 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료의 상태가 같아야 한다. |
Isolation(독립성) | 둘 이상의 트랜잭션이 동시에 병행 실행 되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다. 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다. |
Durability(영속성) | 성공적으로 완료된 트랜잭션 결과는 시스템에 고장나더라도 영구적으로 반영되어야 한다. |
* 제일 중요해요! 특징을 모두 기억하세요!
3) CRUD 분석
CRUD 연산에 대해 CRUD 매트릭스를 작성하여 분석하는 것
CRUD 분석으로 트랜잭션 주기별 발생횟수를 파악하고, 테이블에 저장되는 데이터의 양을 유추 할 수 있음
CRUD 분석을 통해 디스크 구성시 유용한 자료로 활용할 수 있음
CRUD 분석을 통해 부하가 집중되는 DB 채널을 파악하고 분산시킴으로 연결 지연이나 타임아웃 오류를 방지할 수 있음
4) 트랜잭션 분석
CRUD 매트릭스를 기반으로 트랜잭션 양을 분석해 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB 용량을 산정하고 DB구조를 최적화 하는 것.
트랜잭션 분석은 업무 개발 담당자가 수행
프로세스가 과도하게 접근하는 테이블을 확인해 여러 디스크에 배치함으로 디스크 입출력 분산을 통한 성능 향상을 가져올 수 있음
4. 인덱스 설계 <중요>
1) 인덱스 개념
데이터 레코드를 빠르게 접근하기 위해 키 값, 포인터 쌍으로 구성되는 데이터 구조
특징
인덱스는 데이터가 저장된 물리적 구조와 밀접한 관계
레코드가 저장된 물리적 구조에 접근하는 방법 제공
인덱스를 통해 파일 레코드에 대한 액세스를 빠르게 수행
레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적
인덱스가 없으면 TABLE SCAN(특정한 값을 찾기위해 모든 데이터 페이지를 확인)이 발생
기본 인덱스 = 기본키를 위한 인덱스
보조 인덱스 = 기본 인덱스가 아닌 인덱스
클러스터드(Clustered) 인덱스 = 레코드의 물리적 순서가 인덱스의 엔트리 순서와 일치하게 유지되도록 구성되는 인덱스
* 앞에서 클러스터드 인덱스 테이블이 있었죠? 그와 비슷한 개념입니다!
2) 트리 기반 인덱스
인덱스를 저장하는 블록들이 트리 구조를 이루는 것으로, 상용 DBMS에서는 트리 구조 기반의 B+트리 인덱스를 주로 활용
3) 비트맵 인덱스
인덱스 컬럼의 데이터를 Bit 값인 0또는 1로 변환해 인덱스 키로 사용하는 방법
비트맵 인덱스의 목적은 키 값을 포함하는 로우의 주소를 제공하는 것
분포도가 좋은 컬럼에 적합하며 성능 향상 효과를 기대할 수 있음
데이터가 Bit로 구성되어 효율적인 논리 연산이 가능하고 저장 공간이 작다
다중 조건을 만족하는 튜플의 개수 계산에 적합
동일한 값이 반복되는 경우가 많아 압축 효율이 좋음
4) 함수 기반 인덱스
컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용해 산출된 값을 사용하는 것으로, B+ 트리 인덱스나 비트맵 인덱스를 생성해 사용
데이터를 입력하거나 수정할 때 함수를 적용해야 하므로 부하가 발생할 수 있음
사용자 정의 함수가 시스템 함수보다 부하가 더 크다
5) 비트맵 조인 인덱스
다수의 조인된 객체로 구성된 인덱스로, 단일 객체로 구성된 일반적인 인덱스와 액세스 방법이 다름
6) 도메인 인덱스
개발자가 필요한 인덱스를 직접 만들어 사용하는 것
확장형 인덱스(Extensible Index)라고도 함.
7) 인덱스 설계시 고려 사항
새로 추가되는 인덱스는 기존 액세스 경로에 영향을 미칠 수 있음
인덱스를 지나치게 많이 만들면 오버헤드가 발생함
넓은 범위를 인덱스로 처리하면 많은 오버헤드가 발생함
인덱스를 만들면 추가적인 저장 공간이 필요
인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계
'2020 정보처리기사 필기 > 3과목 - 데이터베이스 구축' 카테고리의 다른 글
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(물리 데이터베이스 설계_3) (0) | 2020.08.21 |
---|---|
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(물리 데이터베이스 설계_2) (0) | 2020.08.21 |
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(논리 데이터베이스 설계_5) (0) | 2020.08.19 |
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(논리 데이터베이스 설계_4) (0) | 2020.08.19 |
[2020 정보처리기사 필기 요약] 3과목 - 데이터베이스 구축(논리 데이터베이스 설계_3) (0) | 2020.08.01 |