티스토리 뷰

728x90
반응형

2022년 정보처리기사 필기

(수제비 2021년 필기책 보고 공부하며 요약한 내용입니다.)

http://www.yes24.com/Product/Goods/96051171

 

2. 소프트웨어 개발

Cp1. 데이터 입출력 구현

 

 

1. 자료구조

: 자료를 효율적으로 저장하기 위해 만들어진 논리적인 구조

: 자료구조의 현명한 선택을 통해 효율적인 알고리즘을 사용할 수 있게 하여 성능향상

자료구조 분류 설명 종류
선형 구조 데이터를 연속적으로 연결 리스트, 스택, 큐, 데크
비선형 구조 데이터를 비연속적으로 구조 트리, 그래프

 

- 큐

: 데이터가 꺼내는 쪽에서 가장 가까운 데이터를 Front라고 하고, 넣는쪽에서 가장 가까운 데이러를 rear라고 함.

: ENQUEUE(데이터를 차례대로 넣는 연산), DEQUEUE(처음저장된 데이터부터 하나씩 꺼내는 연산)이 있음.

 

- 데크 (Double Ended Queue)

: 큐의 양쪽끝에서 삽입,삭제를 모두 할 수 있는 자료구조 (두개의 포인터를 사용)

: 데크를 이용한 스택과 큐의 구현이 가능

 

-트리

: 인덱스 조작하는 방법으로 가장 많이 사용하는 구조

: 배열과 달리 노드들이 포인터로 연결되어 있어 노드의 상한선이 없음

깊이(depth): 루트노드에서 특정 노드까지의 간선의 수

차수(degree): 특정노드에 연결된 자식노드의 수

- 트리 순회 방법

1) 전위순회: P->L->R순. A->B->D->G->H->E->C->F->I->J

2) 중위순회: L->P->R순. G->D->H->B->E->A->C->I->F->J

3) 후위순회: L->R->P순. G->H->D->E->B->I->J->F->C->A

 

- 이진트리 유형

1) 포화이진트리 : 모든 레벨에서 노드가 꽉 채워진 트리

2) 완전이진트리 : 마지막 레벨을 제외하고 노드가 채워진 트리

3) 편향이진트리 : 노드의 왼쪽이나 오른쪽 한 곳만 노드가 존재하는 트리

 

- 그래프 G = (V, E)

V(G) = 정점(Vertices)

E(G) = 간선(Edges)

 

 

2. 논리 데이터 저장소

: 업무를 모델링 표기법으로 형상화한 데이터의 저장소

: 물리 데이터 저장소와는 별개로 사용자가 이해하기 쉬운 논리적 구조로 추상화

개체 □ : 관리할 대상이 되는 실체

속성 ○ : 관리할 정보의 항목

관계 ◇ : 개체간 대응 관계

 

2-1. 논리 데이터 저장소 검증 절차

1) 개체 확인

: 입출력 데이터, 연계데이터, 데이터 요구사항 식별확인

2) 속성 확인

: 데이터 속성, 공통코드 파악 수준 점검, 외부연계데이터 속성 파악 수준 점검

3) 관계 확인

: 개체간 관계 적절성 확인, 중복최소화 통한 무결성 보장 여부 확인

4) 데이터베이스 요구사항 확인

: 저장데이터 볼륨, 분산구조, 제약조건에 관한 요구사항 도출/분석 확인

: DB백업, 복구정책 요구사항 확인

: 초기데이터 구축방안에 대한 요구사항 도출/분석 확인

5) 데이터 흐름 확인

: 프로세스별 입출력 데이터 정의 수준 확인

: 프로세스간 공유 및 연계 데이터 정의 수준 확인

6) 데이터 설계기준 확인

: DB설게 표준 지침 작성 여부 및 적절성 확인

: 데이터 모델 설계 지침 작성 여부 및 적절성 확인

7) 데이터 접근권한 확인

: 데이터 접근권한 및 통제분석 적정성 확인

: 데이터 암호화 대상 소프트웨어 아키텍처 설계 가이드라인 확인

 

 

3. 물리 데이터 저장소

: 논리데이터모델을 사용하고자 하는 DBMS 특성을 고려해 DB 저장구조(물리 데이터 모델)로 변환하기 위한 데이터 저장소.

- 논리데이터 저장소에서의 물리데이터 저장소로의  모델로 변환하는 절차

1) 단위 개체를 테이블로 변환

2) 속성을 컬럼으로 변환

3) UID를 기본키로 변환

4) 관계를 외래키로 변환

5) 컬럼 유형과 길이 정의

6) 반정규화 수행

* 반정규화 수행 방법

수행방법 설명
테이블 통합 1:1, 1:M관계를 토압해 조인횟수를 줄여 성능향상
슈퍼/서브타입 테이블 통합 통해 성능향상
테이블 분할 테이블 수직,수평 분할하는 것을 파티셔닝이라고 함
1) 수평분할: 테이블 분할에 레코드를 기준으로 활용
2) 수직분할: 테이블이 가지는 컬럼개수가 증가하는 경우 활용. 
                 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 보안속성 분할
중복테이블 추가 빅데이터 집계함수로 실시간 통계정보 계산하는 경우 효과적수행 위해 별도 통계테이블을 두거나 중복 테이블을 추가
1) 집계 테이블 추가
: 집계데이터 테이블 생성, 원본테이블에 트리거 설정해 사용. 트리거 오버헤드 유의 필요
2) 진행 테이블 추가
: 이력관리 등의 목적으로 추가하는 테이블. 적절한 데이터양 유지와 활용도를 높이기 위해 기본키 설정
3) 특정 부분만을 포함하는 테이블 추가
: 빅데이터 테이블의 특정 부분만을 사용하는 경우 해당 부분만 새로운 테이블을 생성
컬럼 중복화 조인 성능 향상을 위한 중복 허용

 

3-1. 물리 데이터 저장소 구성

: DBMS 선정 후 물리 데이터 저장소 구성을 위한 활동

1) 데이터 제약조건 설계

테이블 제약조건 옵션 설명
삭제 제약조건 연쇄(cascade) 참조테이블에 있는 외부키와 일치하는 모든 row 삭제
제한(restricted) 참조테이블에 있는 외부키에 없는 것만 삭제 가능
무효(nullify) 참조테이블에 정의된 외부키와 일치하는 것을 null로 수정
갱신 제약 조건 연쇄(cascade) 참조테이블에 있는 외부키와 일치하는 모든 row 수정
제한(restricted) 참조테이블에 있는 외부키에 없는 것만 수정가능
무효(nullify) 참조테이블에 정의된 외부키와 일치하는 것을 null로 수정

2) 인덱스 설계

: 인덱스 분포도가 10~15% 이내인 경우 아래 수식을 참고

분포도 = 1/(컬럼값종류) * 100 (단위: %)

분포도 = 컬럼값의 평균row수 / 테이블 총 row수 * 100

: 분포도가 범위 이상이여도 부분처리를 목적으로 하는 경우 적용함.

: 분포도가 좋은 컬럼은 단독적으로 생성

: 지나치게 많은 인덱스는 오버헤드로 작용함

: 넓은 범위를 인덱스 처리 시 오히려 전체처리보다 많은 오버헤드를 발생시킬 수 있음.

 

3) 뷰 설계

대표적인 뷰의 속성 설명
replace 뷰가 이미 존재하는 경우 재생성
force 기본 테이블의 존재여부 관계 없이 뷰생성
noforce 기본 테이블이 존재할 때만 뷰생성
with check option 서브쿼리 내 조건을 만족하는 행만 변경
with read only 데이터 조작어 작업 불가

: 뷰 사용에 따라 수행속도에 문제가 발생할 수 있음

 

4) 클러스터 설계

: 인덱스의 단점을 해결한 기법. 분포도가 넓을수록 오히려 유리함

: 액세스기법이 아닌, 엑세스 효율 향상을 위한 물리적 저장방법임.

: 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약이 가능함.

: 대량의 범위를 자주 액세스 하는 경우 적용

: 인덱스를 사용한 처리 부담이 되는 넓은 분포도에 활용

: 여러 테이블이 빈번하게 조인을 일으킬 때 활용

: 검색 효율은 높여주나, 입력,수정,삭제 시 부하가 증가함

: union, distinct, order by, group by가 빈번한, 수정이 자주 발생하지 않는 컬럼이면 검토 대상임.

: 처리범위가 넓은 경우, 조인이 많은 경우 단일 테이블 클러스터링을 고려

 

5) 파티션 설계

- 파티션의 종류

1) 범위 분할(레인지 파티셔닝) : 분할 키값이 범위 내 있는지 여부를 구분하는 분할 기법 

2) 해시 분할(해시 파티셔닝) : 해시함수 값에 따라 파티션에 포함되는지 여부를 결정하는 분할기법

3) 목록 분할(리스트 파티셔닝) : 값목록에 파티션을 할당하고 분할 키값을 그 목록에 맞게 분할하는 기법

4) 조합 분할(컴포지트 파티셔닝) : 위 분할 중 2개 이상의 분할 기법을 결정하는 기법

- 파티션의 장점

: 데이터 엑세스 범위를 줄여 성능향상

: 데이터 훼손 가능성 감소 및 데이터 가용성 향상

: 분할 영역을 독립적으로 백업하고 복구 가능

: 디스크 스트라이핑으로 입출력 성능을 향상

: 디스크 컨트롤러에 대한 경합 감소

 

6) 디스크 구성 설계

: 정확한 용량 산정으로 디스크 사용 효율 높임

: 업무량 집중된  디스크를 분리하여 설계

: 입출력 경합 최소화로 데이터 접근 성능 향상

: 디스크 구성에 따라 테이블스페이스 개수와 사이즈 등을 결정

: 파티션 수행 테이블은 별도로 분류

 

3-2. ORM 프레임워크 (object-relational mapping) 

: 관계형DB와 객체지향프로그래밍 언어 간 호환되지 않는 데이터를 변환하는 프로그래밍 기법

: 객체지향언어에서 사용하는 객체를 관계형 DB로 변환하여 테이블 구성하는데 활용

CRM 프레임워크 기술 유형 기술 설명
SQL Mapping iBatis SQL 기반한 DB와 자바, 닷넷, 루비 등 연결시켜주는 역할
MyBatis 자바의 관계형 DB 프로그래밍을 좀더 쉽게 도와줌
OR Mapping Hibernate 자바를 위한 객체 관계 매핑 프레임워크
객체지향 도메인 모델을 관계형DB로 매핑하기 위한 프레임워크 제공

 

- ORM 프레임워크 매핑 기법

객체 테이블 설명
객체(object) 테이블 객체지향 내 객체는 DB에서 테이블로 변환
속성(attribute) 컬럼 객체의 속성은 DB에서 컬럼으로 변환
오퍼레이션(operation) 프로시저/함수 객체의 행위인 오퍼레이션은 DB에서 프로시저 또는 함수로 변환

 

-ORM 프레임워크 절차

1) 클래스의 인스턴스를 테이블 레코드로 변환

2) 클래스 인스턴스의 애트리뷰트는 테이블 컬럼으로 변환

3) 클래스간 관계를 DB 테이블 제약사항으로 변환

 

-ORM 종류

구분 부분적 ORM 완전 ORM
개요 SQL을 특정 이름으로 정의하여 사용 내부 엔진에서 SQL 자동생성
매퍼 사용 SQL Mapper Object Relation Mapper
방법 iBatis, MyBatis, Embeded SQL Hibernate
장점 데이터 전송 방식의 효율성 효율적인 매핑기법

 

3-3. 트랜잭션 인터페이스

: DB 트랜잭션의 입출력과 기능 형태를 정의한 인터페이스

: ACID 원칙을 기반으로 설계

1) 원자성(Atomicity) : 트랜잭션 연산을 DB에 모두 반영 또는 반영하지 말아야 함

2) 일관성(Consistency) : 트랜잭션이 실행을 성공적으로 완료할 시 일관성있는 DB상태 유지

3) 격리성(Isolation): 둘 이상 트랜잭션 동시실행 시 한 트랜잭션만 접근가능하여 간섭불가

4) 영속성(Durability) : 성공적으로 완료된 트랜잭션 결과는 영구적으로 반영됨

 

- 트랜잭션 인터페이스 설계

: 데이터 접근 방법 및 인터페이스를 절차적으로 명세함

: 주로 프로그래밍 언어로 구현되며, 대표적인 사례로 JDBC, ODBC 등이 있음

 

728x90
반응형
댓글