솜은 코튼

[정보처리기사] 3장 데이터 입출력 구현 본문

자격증/정보처리기사

[정보처리기사] 3장 데이터 입출력 구현

솜.코 2020. 7. 11. 17:56
01. 데이터 모델

     : 현실 세계의 정보들은 표현하기 위해 단순화 추상화하여 표현한 개념적 모형

 

     # 구성 요소

     개체 : 개념이나 정보 단위 같은 현실 세계의 대상체

     속성 : 가장 작은 논리적 단위로 데이터 항목 또는 필드에 해당

     관계 : 개체 간의 관계 또는 속성 간의 논리적인 연결

 

02. 데이터 모델의 종류

     개념적 데이터 모델 : 개체타입과 이 개체 타입들 간의 관계를 이용해 현실세계를 표현

     논리적 데이터 모델 : 컴퓨터 세계의 환경에 맞도록 표현

     물리적 데이터 모델 : 데이터가 저장되는 방법 정의

 

03. 이상

     : 종속으로 인한 데이터 중복 발생으로 테이블 조작 시 문제 발생하는 현상

 

     # 종류

     삽입 이상 : 원하지 않는 값들로 인해 삽입할 수 없는 현상

     삭제 이상 : 의도와는 상관없는 값들도 함께 삭제되는 현상

     갱신 이상 : 일부 튜플의 정보만 갱신되어 정보 불일치성이 생기는 현상

 

04. 함수적 종속

     : Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다는 표기는 'X->Y'

      (X는 결정자, Y는 종속자)

 

      완전 함수적 종속 : 속성 Y가 다른 집한 X 전체에 대해 함수적 종속이면서 진부분 집합Z에도 함수적 종속이 아닐 때

      부분 함수적 종속 : 속성 Y가 다른 집한 X 전체에 대해 함수적 종속이면서 진부분 집합Z에도 함수적 종속일 때

 

05. 정규화

     : 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정

      (삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것)

 

     제 2정규형

     ㅡ ㅡ V V V -> (ㅡ) ㅡ V  /  (ㅡ) V V

     제 3 정규형

     ㅡ V V -> ㅡ (V)  /  (ㅡ) V

     BCNF

     ㅡ ㅡ V -> ㅡ (ㅡ)  /  (ㅡ) V

     제 4정규형

     ㅡ ㅡ ㅡ -> (ㅡ) ㅡ  /  (ㅡ) ㅡ

     (ㅡ는 기본키 표시, ()는 연결된 속성, V는 그 외)

 

     # 정규화 과정

     비정규 릴레이션 --(도메인이 원자값)--> 1NF --(부분적 함수 종속 제거)--> 2NF --(이행적 함수 종속제거)-->

     3NF --(결정자이면서 후보키가 아닌 것 제거)--> BCNF --(다치 종속성 제거)--> 4NF --(조인 종속성 이용)--> 5NF

     # 이행적 함수적 종속 : A->B이고 B->C일 때 A->C를 만족하는 관계

 

06. 논리 데이터 모델의 물리 데이터 모델로 변환

     엔티티를 테이블로 변환 : 논리 데이터 모델에서 정의된 엔티티를 물리 데이터 모델로 변환

 

     # 변환 규칙

     엔티티 -> 테이블 / 속성 -> 컬럼 / 주 식별자 -> 기본키 / 외부 식별자 -> 외래키 / 관계 -> 관계

 

     슈퍼타입 기준 테이블 변환

     # 장점 : 데이터 액세스 용이 / 서브타입만을 액세스 및 수정가능 / 처리 용이 / 수행 속도 빠름 / SQL 문장 구성 단순

     # 단점 : 디스크 저장 공간 증가 / 서브타입에 대한 구분 필요 / 인덱스 효율 감소

 

     서브타입 기준 테이블 변환

     # 장점 : 서브타입 속성들의 선택 사양 명확 시 유리 / 서브타입 유형 구분 필요 없음 / 전체 테이블 스캔 시 유리

     # 단점 : 수행 속도 감소 / SQL의 통합 어려움 / 부분 범위 처리 곤란 / 통합한 뷰는 조회만 가능

 

     개별 타입 기준 테이블 변환

     # 장점 : 저장 공간이 작다 / 테이블에 속한 정보만 조회하는 경우 문장 작성 용이

     # 단점 : 슈퍼타입 또는 서브타입 정보 같이 처리하면 항상 조인 발생하여 성능 저하

 

     속성을 컬럼으로 변환

     # 일반 속성 변환

     # Primary UID를 기본키로 변환 : 물리 데이터 모델의 기본키로 만든다.

     # Primary UID(관계의 UID Bar)를 기본키로 변환

     # Secondary(Alternate) UID를 유니크키로 변환

 

     관계를 외래키로 변환

     (1:1 관계 변환 / 1:M 관계 변환 / N:M 관계 변환 / 1:M 순환 관계 변환)

 

07. 반정규화

     : 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로 의도적으로 정규화 원칙을 위배하는 행위

     (성능, 관리 효율성 향상 / 일관성 및 정합성이 낮고, 과도한 반정규화는 성능을 떨어지게 함)

 

     테이블 통합 : 두 개의 테이블이 많이 조인되는 경우

     (1:1 관계 테이블 통합 / 1:N 관계 테이블 통합 / 슈퍼타입·서브타입 테이블 통합)

     # 특징 : 레코드 증가로 처리량 증가 / 입력, 수정, 삭제 규칙이 복잡 / 제약조건 설계의 어려움

 

     테이블 분할

     # 수평 분할 : 레코드별로 사용빈도 차이가 큰 경우 빈도 따라 분할

     # 수직 분할 : 속성 많을 경우 갱신, 자주 조회되는, 크기가 큰, 보안을 적용해야 하는 속성 분할

 

     중복 테이블 추가 : 정규화로 속도 감소, 많은 범위 데이터 자주 처리, 특정 범위 데이터 자주 처리하는 경우

     # 집계 테이블의 추가 : 트리거 설정 / 진행 테이블 추가:기본키 설정 / 특정 부분만을 포함하는 테이블 추가

 

     중복 속성 추가 : 데이터 조회 경로 단축, 조인 자주 발생, 데이터의 무결성 확보 어려움, 디스크 공간 추가 필요

 

08. 인덱스

     : 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성

 

     # 특징 : 인덱스 없으면 모든 데이터 확인하는 TABLE SCAN 발생

                기본키를 위한 인덱스->기본 인덱스 / 기본 인덱스 아닌 인덱스 -> 보조 인덱스 /

                인덱스 키의 순서에 따라 데이터 정렬->클러스터드 인덱스 /

                키 값만 정렬되어 있을 뿐 실제 데이터는 정렬되지 않음->넌클러스터드 인덱스

 

      트리 기반 인덱스 : B 트리 인덱스, B+ 트리 인덱스

      비트맵 인덱스 : Bit값인 0 또는 1 변환

      함수 기반 인덱스 : B+ 트리 인덱스 또는 비트맵 인덱스 생성하여 사용

      비트맵 조인 인덱스 : 다수의 조인된 객체로 구성된 인덱스

      도메인 인덱스 : 직접 만들어 사용 (=확장형 인덱스)

 

      # 인덱스 설계

      대상 테이블, 컬럼 등 선정 -> 효율성 검토 최적화 수행 -> 인덱스 정의서 작성

      # 인덱스 대상 테이블 선정 기준

      MULTI BLOCK READ 수 / 랜덤 액세스 빈번 / 특정 범위나 순서로 데이터 조회 필요 시 / 순차적 조인 발생

      # 인덱스 대상 컬럼 선정 기준

      컬럼 분포도 10~15% 이내 / 기본키와 Unique키 제약 조건 사용 / 수정이 빈번하지 않은

      # 인덱스 설계 시 고려사항

      많이 만들면 오버헤드 발생 / 넓은 범위 처리 시 오버헤드 발생 / 추가적인 저장공간 필요

 

09. 뷰

     : 허용된 자료만을 제한적으로 보여주기 위한 가상 테이블

     (조인문 사용 최소화 사용상 편의성 최대화 / 논리적 독립성 제공 / 관리 용이 / 명령문 간단)

 

     # 장점 : 독립성 제공 / 데이터 관리 간단 / 자동 보안 제공

     # 단점 : 독립된 인덱스 X / 정의 변경 X / 삽입 삭제, 갱신 제약

     # 설계 순서 : 대상 테이블 선정 -> 대상 컬럼 선정 -> 정의서 작성

 

10. 트랜잭션

     : 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

 

     # 특징

     원자성 : 모두 반영 아니면 전혀 반영되지 않도록

     일관성 : 성공적으로 완료하면 언제나 일관성 있는 상태로 변환

     독립성 : 병행 실행되는 경우 다른 트랜잭션의 연산이 끼어들 수 없음

     지속성 : 완료된 결과는 영구적으로 반영

 

11. 클러스터

     : 액세스 효율 향상을 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장

 

     # 특징

     - 클러스터링키로 지정된 컬럼 값의 순서대로 저장, 여러 개의 테이블이 하나의 콜러스터에 저장

     - 조회 속도 향상 / 입력, 수정, 삭제 성능 감소

     - 분포도가 넓을수록 유리

     - 저장 공간 절약

     - 대용량 처리 트랜잭션은 클러스터링 비추

     - 처리 범위 넓은 경우->단일 테이블 클러스터링 / 조인이 많이 발생하는 경우 -> 다중 테이블 클러스터링

     

     # 대상 : 분포도 넓고 / 대량의 범위 자주 조회 / 입력,수정,삭제가 자주 발생하지 않고 /

                자주 조인 / ORDER BY,GROUP BY,UNION 빈번

 

12. 파티션

     : 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것

 

     # 장점 : 쿼리 성능, 디스크 성능, 속도, 가용성 향상 / 데이터 손상 정도 적음 / 파티션 단위로 입출력 분산

     # 단점 : 세심한 관리 요구 / 비용 증가 / 용량 작은 테이블에 파티셔닝 수행 시 성능 감소

     # 종류 : 범위 분할 / 해시 분할 / 조합 분할

 

     인덱스 파티션 : 파티션 된 테이블의 데이터를 관리하기 위해 인덱스 나눈 것

     # Local Partitioned Index : 테이블 파티션과 인덱스 파티션 1:1 대응

     # Global Partitioned Index : 테이블 파티션과 인덱스 파티션 독립적 구성

     # Prefixed Partitioned Index : 인덱스 파티션키와 인덱스 첫 컬럼 같다.

     # Non-Prefixed Partitioned Index : 인덱션 파티션키와 인덱스 첫 컬럼이 다르다.

 

13. 테이터베이스 용량 설계

     : 데이터가 저장될 공간 정의

     (저장공간 효과적 사용 / 확장성 및 가용성, 데이터 접근성 증가 / 병목 현상, 익스텐트 발생 감소)

 

     # 데이터 접근성 향상 방법

     - 데이블 스페이스와 인덱스의 테이블 스페이스 분리 구성

     - 테이블 스페이스와 임시 테이블 스페이스 분리 구성

     - 마스터 테이블과 트랜잭션 테이블로 분류

 

     # 용량 분석 절차

     기초 자료 수집, 용량 분석 -> 오브젝트별 용량 선정 -> 테이블과 테이블스페이스 용량 산정 -> 디스크 용량 산정