본문 바로가기
security/정보처리기사

정처기 데이터베이스 구축 - 3.2 물리 데이터베이스 설계

by aristia 2021. 2. 16.

<사전 조사 분석>


1. 물리 데이터베이스 설계
- 논리적 구조로 표현된 논리적 데이터베이스를 디스크 등의 물리적 저장장치에
  저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 저장 레코드(Stored Record) : 물리적 데이터베이스 구조의 기본적인 데이터 단위
- 물리적 설계 단계에 꼭 포함되어야 할 것
     : 저장 레코드의 양식 설계, 레코드 집중의 분석 및 설계, 접근 경로 설계 등
- 여러가지 타입의 저장 레코드 집합이라는 면에서 단순한 파일과 다름
- 데이터베이스 시스템의 성능에 중대한 영향을 미침
- 물리적 설계 시 고려 사항
     - 인덱스 구조, 레코드 크기
     - 파일에 존재하는 레코드 개수
     - 파일에 대한 트랜잭션이 갱신과 참조 성향
     - 성능 향상을 위한 개념 스키마의 변경 여부 검토
     - 빈번한 질의와 트랜잭션들의 수행속도를 높이기 위한 고려
     - 시스템 운용 시 파일 크기의 변화 가능성
- 물리적 설계 전에 기존 시스템을 분석하여 데이터 명명 규칙 시스템 자원, 데이터 베이스 관리 요소 등을 파악해야 함

2. 데이터 명영 규칙 파악
- 물리 데이터 모델에 적용해야 하는 규칙
- 조직마다 다를 수 있으므로 물리 데이터 모델의 설계 전에 파악해야 함
- 데이터 표준화 및 논리 데이터베이스 설계의 결과물 등을 통해 파악함
- 물리, 논리 데이터베이스 설계에 적용되는 명명 규칙은 서로 일관성을 유지해야 함
- 논리적 데이터 요소를 물리적 데이터 요소로 전환할 때 동일 명칭 부여의 근거로 사용됨
- 중복 구축 등을 방지할 수 있음
- 명명 규칙을 파악하려면 도메인과 데이터 사전에 대한 지식이 필요함
- 도메인
     : 객체(Entity)에 포함된 속성들이 데이터 타입, 크기 등을 표준화 규칙에 따라 일관성 있게 정의한 것을 의미
- 데이터 사전
     : 전체 프로젝트 과정에서 일관성 있는 데이터 이름과 인터페이스를 제공하기 위해
       데이터 속성의 논리명(Logical Name), 물리명(Physical Name), 용어 정의(Definition)를 기술해 놓은 것 
       프로젝트에서 사용하는 명칭 부여의 근거로 사용됨

3. 시스템 자원 파악
- 데이터베이스 설치에 영향을 미칠 수 있는 물리적인 요소들로, 사전에 미리 파악해야 함
- 하드웨어 자원
     : 중앙처리 장치, 메모리, 디스크, I/O Controller, 네트워크
- 운영체제 및 DBMS 버전
     : 데이터베이스 운영에 영향을 미칠 수 있으므로 관련 요소 등을 파악하고 적절하게 관리해야 함
- DBMS 파라미터 정보
     : 데이터베이스 관리 시스템별로 차이가 많고 관리 방법도 제각각
       --> 시스템별 DBMS 파라미터의 종류 및 관리 대상 등을 파악함
       DBMS 저장 공간, 메모리 등에 대한 파라미터, 쿼리에서 활용하는 옵티마이저(Optimizer)의 사용 방법을 파악한다.

4. 데이터베이스 관리 요소 파악
- 데이터베이스 운영과 관련된 관리 요소로, 데이터베이스 시스템의 환경에 따라 달라질 수 있으므로 미리 파악해야 함
- 데이터베이스 관리 요소를 파악한 후 이를 기반으로 데이터베이스 시스템 조사 분석서를 작성함
- 시스템 조사 분석서를 기반으로 데이터베이스 구조, 이중화 구성, 분산 데이터베이스,
  접근제어/접근통제, DB암호화 등의 범위와 특성을 파악함

 


 

<데이터베이스 저장 공간 설계>


1. 테이블(Table)
- 데이터베이스의 가장 기본적인 객체로 로우(Row, 행)와 칼럼(Column, 열)으로 구성되어 있음
- 데이터베이스의 모든 데이터는 테이블에 저장됨
- 논리 설계 단계의 개체(Entity)에 대응하는 객체
- DBMS 종류에 따라 테이블의 명칭과 기능 등은 약간씩 차이가 잇음

2. 일반 테이블
- 현재 사용되는 대부분의 DBMS에서 표준 테이블로 사용되는 테이블 형태
- 테이블에 저장되는 데이터의 로우(Row) 위치는 속성 값에 상관없이 데이터가 저장되는 순서에 따라 결정됨

3. 클러스터드 인덱스 테이블(Clustered Index Table)
- 기본키(Primary Key)나 인덱스키의 순서에 따라 데이터가 저장되는 테이블
- 일반적인 인덱스를 사용하는 테이블에 비해 접근 경로가 단축됨

4. 파티셔닝 테이블(Partitioning Table)
- 대용량의 테이블을 작은 논리적 단위인 파티션(Partition)으로 나눈 테이블
- 대용량의 데이터를 효과적으로 관리할 수 있지만 파티션 키를 잘못 구성하면 성능 저하 등의 역효과를 초래할 수 있음
- 범위 분할(Range Partitioning), 해시 분할(Hash Partitioning), 조합 분할(Composite Partitioning) 등으로 나뉨

5. 외부 테이블(External Table)
- 데이터베이스에서 일반 테이블처럼 이용할 수 있는 외부 파일로, 데이터베이스 내에 객체로 존재함
- 데이터웨어하우수(Data Warehouse)에서 ETL)Extraction, Transformation, Loading) 등의 작업에 유용하게 사용됨

6. 임시 테이블(Temporary Table)
- 트랜잭션이나 세션별로 데이터를 저장하고 처리할 수 잇는 테이블
- 저장된 데이터는 트랜잭션이 종료되면 삭제됨
- 절차적인 처리를 위해 임시로 사용하는 테이블

7. 컬럼(Column)
- 테이블의 열을 구성하는 요소로 데이터 타입(Data Type), 길이(Length) 등으로 정의됨
- 데이터 타입은 데이터의 일관성 유지를 위해 사용되는 가장 기본적인 것으로,
  도메인을 정의한 경우 도메인에 따라 데이터의 타입과 길이가 정의됨
- 두 컬럼을 비교하는 연산에서 두 컬럼의 데이터 타입이나 길이가 다르면
  DBMS 내부적으로 데이터 타입을 변환한 후 비교연산을 수행함
- 참조 관계인 칼럼들은 데이터 타입과 길이가 일치해야 함
- 데이터 타입과 길이 지정 시 고려 사항
     - 가변 길이 데이터 타입
          : 예상되는 최대 길이로 정의
     - 고정 길이 데이터 타입
          : 최소 길이로 지정
     - 소수점 이하 자릿수
          : 소수점 이하 자릿수는 반올림되어 저장
- 데이터 타입에 따른 컬럼의 물리적인 순서
     - 고정 길이 컬럼이고 NOT인 Null인 칼럼
          : 앞쪽
     - 가변 길이 칼럼
          : 뒤쪽
     - Null 값이 많을 것으로 예상되는 칼럼
          : 뒤쪽

8. 테이블스페이스(Tablespace)
- 테이블이 저장되는 논리적인 영역으로, 하나의 테이블스페이스에 하나 또는 그 이상의 테이블을 저장할 수 있음
- 테이블을 저장하면 논리적으로 테이블스페이스에 저장되고,
  물리적으로는 해당 테이블스페이스와 연관된 데이터 파일에 저장됨
- 데이터베이스 테이블, 테이블스페이스, 데이터 파일로 나눠 관리하면
  논리적 구성이 물리적 구성에 종속되지 않아 투명성이 보장됨
- 테이블스페이스는 데이터베이스에 저장되는 내용에 따라 테이블, 인덱스, 임시 등의 용도로 구분하여 설꼐함
- 테이블스페이스 설계 시 고려사항
     - 테이블스페이스는 업무별로 구분하여 지정함
     - 대용량 테이블은 하나의 테이블스페이스에 독립적으로 저장함
     - 테이블과 인덱스는 분리하여 저장함
     - LOB(Large Object) 타입의 데이터는 독립적인 공간으로 지정함    




 

<트랜잭션 분석 / CRUD 분석>


1. 트랜잭션(Transaction)의 의미
- 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
- 한꺼번에 수행되어야 할 일련의 연산들
- 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의논리적 단위로 사용 
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨

2. 트랜잭션의 특성
- 데이터의 무결성(Integrity)을 보장하기 위하여 DBMS 트랜잭션이 가져야 할 특성
- Atomicity(원자성)
     - 트랜잭션 연산은 데이터베이스에 모두 반영되도록 완료(Commit), 전혀 반영되지 않도록 복구(Rollback)되어야 함
     - 트랜잭션 내의 모든 명령은 반드시 완벽하게 수행되어야 하며,
       모두 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함
- Consistency(일관성)
     - 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
     - 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 함
- Isolation(독립성, 격리성, 순차성)
     - 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에
       다른 트랜잭션의 연산이 끼어들 수 없음
     - 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없음
- Durability(영속성, 지속성)
     - 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함

3. CRUD 분석
- 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete)의 앞글자만 모아 만든 용어
- 데이터베이스 테이블에 변화를 주는 트랜잭션의 CRUD 연산에 대해 CRUD 매트릭스를 작성하여 분석하는 것
- 테이블에 발생되는 트랜잭션의 주기별 발생 횟수를 파악하고 연관된 테이블들을 분석하면
  테이블에 저장되는 데이터의 양을 유추할 수 있음
- 많은 트랜잭션이 몰리는 테이블을 파악 가능 --> 디스크 구성 시 유용한 자료로 활용할 수 있음
- 외부 프로세스 트랜잭션의 부하가 집중되는 데이터베이스 채널을 파악하고 분산시킴
  --> 연결 지연, 타임아웃 오류 방지 가능

4. CRUD 매트릭스
- 2차원 형태의 표, 행(Row)에슨 프로세스를, 열(Column)에는 테이블을, 행과 열이 만나는 위치에는 프로세스가
  테이블에 발생시키는 변화를 표시하는 업무 프로세스와 데이터 간 상관 분석 표
- 프로세스의 트랜잭션이 테이블에 수행하는 작업을 검증함
- 각 셀에는 Create, Read, Update, Delete의 앞글자가 들어가며,
  복수의 변화를 줄 때는 기본적으로 C > D > U > R의 우선순위를 적용하여 한가지만 적지만,
  활용 목적에 따라 모두 기록 가능
- CRUD 매트릭스가 완성되었다면, C, R, U, D 중 어느것도 적히지 않은 행이나 열,
  C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾음

5. 트랜잭션 분석
- CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여
  테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB 용량을 산정하고 DB 구조를 최적화는 것
- 업무 개발 담당자가 수행
- 프로세스가 과동하게 접근하는 테이블을 확인 --> 여러 디스크에 배치 --> 디스크 입, 출력 분산을 통한 성능 향상

6. 트랜잭션 분석서
- 단위 프로세스와 CRUD 매트릭스를 이용하여 작성
- 단위 프로세스
     : 업무를 발생시키는 가장 작은 단위의 프로세스
- CRUD 연산
     : 프로세스의 트랜잭션이 데이터베이스 테이블에 영향을 주는 C, R, U, D의 4가지 연산
- 테이블명, 컬럼명
     : 프로세스가 접근하는 데이터베이스의 테이블 명을 기록함
      필요한 경우 테이블의 컬럼명을 적는다. 
      컬럼명을 적을 떄는 마침표로 연결하여 '테이블.컬럼명'과 같이 적는다.
- 테이블 참조 횟수
     : 프로세스가 테이블을 참조하는 횟수
- 트랜잭션 수
     : 주기별로 수행되는 트랜잭션 횟수
- 발생 주기
     : 연, 분기, 월, 일, 시간 등 트랜잭션 횟수를 측정하기 위한 발생 주기

 


 

<인덱스 설계>


1. 인덱스(Index)
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
- 저장된 물리적 구조와 밀접한 관계가 있음
- 레코드가 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 대한 액세스를 빠르게 수행 가능
- 레코드이 삽입, 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적
- 인덱스가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 확인하는 TABLE SCAN이 발생함
- 기본 인덱스
     :  기본 키를 위한 인덱스
- 보조 인덱스
     : 기본 인덱스가 아닌 인덱스
- 대부분의 관계형 데이터베이스 관리 시스템에서는 모든 기본키에 대해서 자동적으로 기본 인덱스를 생성함
- 쿨러스터드(Clustered) 인덱스
     : 레코드의 물리적 순서가 인덱스의 엔트리 순서와 일치하도록 구성되는 인덱스

2. 트리 기반 인덱스
- 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것으로,
  상용 DBMS에서는 트리 구조 기반의 B+ 트리 인덱스를 주로 활용함
- B 트리 인덱스
     - 일반적으로 사용하는 인덱스 방식으로, 루트 노드에서 하위 노드로 키 값의 크기를 비교해 나가면서
       단말 노드에서 찾고자 하는 데이터를 검색함
     - 키 값과 레코드를 가리키는 포인터들이 트리 노드에 오름차순으로 저장됨
     - 모든 리프 노드는 같은 레벨에 있음
- B+ 트리 인덱스
     - B 트리의 변형으로 단말 노드가 아닌 노드로 구성된 인덱스 세트(Index Set)와
       단말 노드로만 구성된 순차 세트(Sequence Set)로 구분됨
     - 인덱스 세트에 있는 노드들은 단말 노드에 있는 키 값을 찾아갈 수 있는 경로롤만 제공되며,
        순차 세트에 있는 단말 노드가 해당 데이터 레코드의 주소를 가리킴
     - 인덱스 세트에 있는 모든 키 값이 단말 노드에 다시 나타나므로 단말 노드만을 이용한 순차 처리가 가능

3. 비트맵 인덱스
- 인덱스 컬럼의 데이터를 Bit 값이 0 또는 1로 변환하여 인덱스의 키로 사용하는 방법
- 비트맵 인덱스의 목적은 키 값을 포함하는 로우(Row)의 주소를 제공하는 것
- 비트맵 인덱스는 분포도가 좋은 컬럼에 적합하며, 성능 향상 효과를 얻을 수 있음

 

www.yes24.com/Product/Goods/82838724?OzSrank=6

 

2020 시나공 정보처리기사 필기

2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중 정보통신 분야의 ‘정보기술’ 분류에 포함된 ‘정보기술개발’과 ‘정보기술운영’에 속한 125개의 학습 모듈을

www.yes24.com

* 2020 시나공 정보처리기사 필기 요약한 내용입니다.

댓글