제3과목 데이터베이스 구축
▷ 물리 데이터베이스 설계 A
> 사전 조사 분석
- 물리 데이터베이스 설계
논리적 데이터베이스를 디스크 등 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정(양식설계, 분석 및 설계, 접근경로설계 - 인덱스구조, 레코드크기, 레코드갯수, 개념스키마, 수행속도향상)
- 데이터 명명 규칙 파악
물리 데이터 모델이 적용해야 하는 규칙으로 물리데이터 모델의 설계 전에 파악(일관성)
데이터 표준화 및 논리 데이터베이스 설계의 결과물 등을 통해 파악
데이터 명명 규칙을 통해 중복 구축 등을 방지
명명 규칙을 파악하려면 도메인과 데이터 사전에 대한 지식 필요
- 비즈니스 도메인과 명명 규칙
도메인 : 데이터의 타입과 크기에 대한 제약 (ex. 0~255의 정수)
데이터(용어)사전 : 업무, 프로젝트 등에서 사용하는 용어를 근거로 작성, 논리적 이름, 물리적이름, 용어 정의로 구성
데이터 명명규칙 : 데이터 용어사전을 참고하여 파악, 논리에서 물리전환시 명칭 부여의근거 중복 등의 혼란 방지
- 시스템 자원 파악
데이터베이스 설치에 영향을 미칠 수 있는 물리적인 요소들로 사전에 미리 파악해야 한다
시스템 자원 : 하드웨어 자원(cpu, 메모리, 디스크, 네트워크, 입출력 컨트롤러), 운영체제 및 DBMS 버전, DBMS파라미터 정보(매개변수(Parameter, 객체 간 값을 주고 받는 역할(매개)을 하는 변수(공간)), 묵시적(기본으로 값 저장), 명시적(입력한 값으로 지정))
- 데이터베이스 관리 요소 파악
데이터베이스 운영과 관리 요소로 데이터베이스 시스템의 환경에 따라 달라질 수 있으므로 미리 파악
데이터베이스 시스템 조사 분석서 작성
데이터베이스 구조, 이중화 구성(복제), 분산 데이터베이스, 접근제어, 접근통제, DB암호화 등의 범위와 특성 파악
> 데이터베이스 저장공간 설계
- 테이블(Table)
데이터베이스의 가장 기본적인 객체로 행(기수)과 열(차수)로 구성
데이터베이스의 모든 데이터는 테이블에 저장
- 일반 테이블 : 현재 사용되는 대부분의 DBMS에서 표준 테이블로 사용되는 테이블 형태, 저장순서, 행과 열로 구성된 기본 테이블, 모든 데이터는 테이블에 저장됨
- 클러스터드 인덱스 테이블 : 기본키나 인덱스키의 순서에 따라 데이터가 저장되는 테이블, 데이터를 추가할 때마다 큰 비용(시간) 발생, 프리패치 가능(=탐색 속도 증가)
- 파티셔닝 테이블 : 대용량의 테이블을 작은 논리적 단위인 파티션으로 나눈 테이블, 키의 구성에 신중해야함
- 외부 테이블 : 데이터베이스에서 일반 테이블처럼 이용할수있는 외부파일로, 데이터베이스 내에 객체로 존재, 데이터웨어하우스에서 사용, ETL : 추출, 변환, 적재의 약자
- 임시테이블 : 트랜잭션이나 세션별로 데이터를 저장하고 처리할 수 있는 테이블, 휘발성, 공유불가
- 컬럼(열, 필드) : 테이블의 열을 구성하는 요소로 데이터 타입, 길이 등으로 정의, 참조 관계인 컬럼들은 데이터 타입과 길이가 일치, 데이터 타입과 길이로 정의, 상호참조시 호환가능해야함, 고정길이, NOT Null인 열을 앞쪽으로 배치
- 테이블스페이스 : 테이블이 저장되는 논리적인 영역으로 하나의 테이블스페이스에 하나 또는 그 이상의 테이블 저장 가능, 물리적으로는 파일에 저장, 논리적으로는 테이블 스페이스에 저장, 테이블과 인덱스는 분리하여 저장
- 용량설계 : 가용성, 접근성 향상, 사이즈와 데이터 증가량, 트랜잭션 고려
> 트랜잭션 분석 / CRUD 분석
- 트랜잭션의 정의 : 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한번에 모두 수행되어야 할 일련의 연산들을 의미, 데이터베이스에서 이루어지는 여러작업들을 구분한 논리적 단위, 데이터베이스 용량, 물리적 위치 분산, 예상 용량 산정근거
- 트랜잭션의 특성 A, C, I, D
Atomicity(원자성) : 모두 반영되도록 완료 또는 전혀 반영되지 않도록 복구
Consistency(일관성) : 트랜잭션의 수행전과 수행완료 후의 상태가 같아야 함
Isolation(독립성, 격리성, 순차성) : 하나의 트랜잭션 실행 중 다른 트랜잭션의 연산이 낄 수 없음
Durability(영속성, 지속성) : 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함
- CRUD 분석
CRUD는 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete) 의 앞글자만 모아서 만든 용어
CRUD 분석은 데이터베이스 테이블에 변화를 주는 트랜잭션의 CRUD연산에 대해 CRUD매트릭스를 작성하여 분석하는 것
- CRUD 매트릭스
2차원 형태의 표, 행: 프로세스, 열: 테이블, 행과 열이 만나는 위치의 프로세스가 테이블에 발생시키는 변화를 표시하는 업무 프로세스와 데이터 간 상관분석표
C > D > U > R
- 트랜잭션 분석
테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추, DB용량 산정, DB구조 최적화하는 것
- 트랜잭션 분석서
단위 프로세서와 CRUD 매트릭스를 이용하여 작성
구성요소 : 단위프로세스, CRUD 연산, 테이블명, 컬럼명, 테이블 참조횟수, 트랜잭션수, 발생주기
▷ 물리 데이터베이스 설계 B
> 인덱스 설계
- 인덱스(Index)의 개념 : 목차, 데이터위치
데이터 레코드를 빠르게 접근하기 위해 <키값, 포인터> 쌍으로 구성되는 데이터 구조
데이터가 저장된 물리적 구조와 밀접한 관계
인덱스를 통해서 파일의 레코드에 대한 액세스를 빠르게 수행 가능
레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는것이 효율적
레코드의 물리적 순서가 인덱스의 엔트리 순서와 일치하게 유지되도록 구성되는 인덱스를 클러스터드 인덱스라 함
- 트리기반 인덱스
인덱스를 저장하는 블록들이 트리 구조를 이루는 것
B트리 인덱스 : 일반적으로 사용되는 인덱스 방식
B+트리 인덱스 : B트리의 변형, 인덱스 세트(Index Set, 단말노드x), 순차 세트(단말노드로만 구성)
- 비트맵 인덱스 : 인덱스 컬럼의 데이터를 Bit값이 0 또는 1로 변환한여 인덱스 키로 사용하는 방법
- 함수 기반 인덱스 : 컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용하여 산출된 값을 사용하는 것, 입력, 수정시 함수를 사용하므로 부하증가, 함수의 결과에 B+/비트맵 인덱스 생성
- 비트맵 조인 인덱스 : 다수의 조인된 객체로 구성된 인덱스
- 도메인 인덱스 : 개발자가 필요한 인덱스를 직접 만들어 사용하는 것
- 인덱스 설계
분명하게 드러나 컬럼에 대해 기본적인 인덱스를 먼저 저장(지정)한 후 개발 단계에서 필요한 인덱스의 설계를 반복적으로 진행
1-1) 인덱스 대상 테이블 선정 기준
MULTI BLOCK READ 수에 따라 판단, 랜덤액세스가 빈번한 테이블, 특정순서 조회가 필요한 테이블, 순차적 조인이 필요한 테이블
1-2) 인덱스 대상 컬럼 선정 기준
인덱스 컬럼의 분포도가 10~15% 이내인 컬럼, 부분적 처리목적, 조회 출력조건
2) 인덱스 설계시 고려사항
새로 추가되는 인덱스는 기존 인덱스 경로에 영향을 미칠 수 있음, 오버헤드(많거나 넓은 범위), 인덱스와 데이터 테이블은 분리되도록 설계
3) 정의서 작성
> 뷰(View) 설계
- 뷰(View)의 개요
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 가상 테이블(물리적 존재x, 사용자에게 보여지기만 함, 임시적 작업)
- 뷰(View)의 특징, 유도된 테이블, 구조, 조작
물리적으로 구현되어 있지않음, 데이터의 논리적 독립성 제공 가능(관리용이)
- 뷰(View)의 장점
사용자의데이터 관리를 간단하게 해줌, 접근 제어를 통한 자동 보안 제공, 논리적 데이터독립 제공
- 뷰(View)의 단점
뷰로 구성된 내용에 대한 삽입, 삭제, 갱신, 연산에 제약이 있음
- 뷰(View) 설계 순서
대상 테이블 선정(조인이 빈번한 테이블, 인라인뷰방식에서 자주 언급되는 테이블) - 대상 컬럼 선정(뽀안) - 정의서 작성
- 뷰 설계시 고려사항
반복적으로 조인을 설정하여 사용하거나 동일한 조건절을 사용하는 테이블을 뷰로 생성
> 클러스터 설계
- 클러스터(Cluster)의 개요
데이터 저장시 데이터 액세스 효율 향상을 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장방법
- 클러스터(Cluster)의 특징
데이터 조회 속도는 향상시키나 데이터 입력, 수정, 삭제에 대한 성능은 저하시킴
파티셔닝된 테이블에는 클러스터링 불가, 데이터분포도가 넓은 테이블을 클러스터링하면 저장공간 절약가능
- 클러스터 대상 테이블
분포도가 넓은 테이블, 대량의 범위를 자주 조회하는 테이블, 입력,수정,삭제가 자주 발생하지 않는 테이블, 자주 조인되어 사용되는 테이블
'정보처리기사 > [inflearn] 필기 (완)' 카테고리의 다른 글
정보처리기사 - 제3과목 데이터베이스 구축 / SQL 응용, 활용 (0) | 2022.04.09 |
---|---|
정보처리기사 - 제3과목 데이터베이스 구축 / 물리 데이터베이스 설계(2) (0) | 2022.04.03 |
정보처리기사 - 제3과목 데이터베이스 구축 / 논리 데이터베이스 설계(2) (0) | 2022.04.01 |
정보처리기사 - 제3과목 데이터베이스 구축 / 논리 데이터베이스 설계(1) (0) | 2022.03.31 |
정보처리기사 - 제2과목 소프트웨어 개발 / 인터페이스 구현 (0) | 2022.03.31 |