본문 바로가기
IT 자격증/정보처리기사

정보처리기사 필기 2주차 Day-1 정리

by 펭귄스토리 2021. 7. 15.

 

Chapter 01. 데이터 입출력 구현

1. 논리 데이터 저장소 확인

(1) 자료 구조

자료 구조(Data Structure)의 개념

자료 구조는 컴퓨터상 자료를 효율적으로 저장하기 위해 만들어진 논리적인 구조이다.

 

자료 구조의 분류

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

 

선형 구조

① 리스트(List)

개념 설명
선형 리스트
(Linear List)
배열과 같이 연속되는 기억 장소에 저장되는 리스트
선형 리스트의 대표적인 구조로는 배열(Array) 등이 있음
자료의 삽입, 삭제 시 기존 자료의 이동이 필요하며 접근 구조가 빠름
연결 리스트
(Linked List)
노드의 포인터 부분으로 서로 연결시킨 리스트
노드의 삽입, 삭제가 선형 리스트와 달리 편리
포인터를 통해 찾는 시간이 추가되어 선형 리스트에 비해 느림

 

② 스택(Stack)

스택은 한 방향으로만 자료를 넣고 꺼낼 수 있는 LIFO(Last-In First-Out) 형식의 자료 구조이다.

 

스택 연산

연산 설명
PUSH 데이터를 차례대로 스택에 넣는 연산
POP 스택에서 가장 위에 있는 데이터를 하나씩 꺼내는 연산

 

③ 큐

큐는 한쪽 끝에서는 삽입 작업이 이뤄지고, 반대쪽 끝에서는 삭제 작업이 이루어지는 FIFO(First-In First-Out) 형식의 자료 구조이다.

 

연산 설명
ENQUEUE 데이터를 차례대로 넣는 연산
DEQUEUE 처음 저장된 데이터부터 하나씩 꺼내는 연산

 

④ 데크

데크는 큐의 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료 구조이다.

 

연산 설명
PUSH 데이터를 차례대로 데크에 넣는 연산
POP 데크에서 Front와 Rear에 있는 데이터를 하나씩 꺼내는 연산

 

비선형 구조

① 트리

트리는 데이터들을 계층화시킨 자료 구조이다.

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

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

 

용어 설명
루트 노드(Root Node) 트리에서 부모가 없는 최상위 노드
{A}
단말 노드(Leaf Node) 자식이 없는 노드, 트리의 가장 말단에 위치
{F, G, H, E, C}
레벨(Level) 루트 노드를 기준으로 특정 노드까지의 경로 길이
E의 레벨 3
조상 노드(Ancestor Node) 특정 노드에서 루트에 이르는 경로상 모든 노드
D의 조상 노드는 {B, A}
자식 노드(Child Node) 특정 노드에 연결된 다음 레벨의 노드
B의 자식 노드는 {D, E}
부모 노드(Parent Node)  특정 노드에 연결된 이전 레벨의 노드
F의 부모 노드는 {D}
형제 노드(Sibling) 같은 부모를 가진 노드
F의 형제 노드는 {G, H}
깊이(Depth) 루트 노드에서 특정 노드에 도달하기 위한 간선의 수
트리의 깊이는 3
차수(Degree) 특정 노드에 연결된 자식 노드의 수
D의 차수는 3

 

② 트리 순회방법

구분 개념도 순회방법
전위 순회
(Pre-Order Traversal)

C
L        R
전위 순회
C > L > R 순으로 조회
Root > Left >Right 순으로 방문
중위 순회
(In-Order Traversal)
C
L        R
중위 순회
L > C > R 순으로 조회
Left > Root >Right 순으로 방문
후위 순회
(Post-Order Traversal)
C
L        R
후위 순회
L > R > C 순으로 조희
Left > Right > Root 순으로 방문

 

③ 이진트리

이진트리는 차수(Degree)가 2 이하인 노드로 구성되어 자식이 둘 이하로 구성된 트리이다. 

 

이진 트리 유형

구분 설명
포화 이진 트리
(Full Binary Tree)
모든 레벨에서 노드가 꽉 채워진 트리
완전 이진 트리
(Complete Binary Tree)
마지막 레벨을 제외하고 노드가 채워진 트리
편향 이진 트리
(Skewed Binary Tree)
노드의 왼쪽이나 오른쪽 한 곳만 노드가 존재하는 트리

 

④ 그래프

그래프 노드(Node)와 노드를 연결하는 간선(Edge)을 하나로 모아 놓은 자료 구조이다.

 

그래프의 유형

유형 설명
방향 그래프 정점을 연결하는 선에 방향이 있는 그래프
n개의 장점으로 구성된 방향 그래프의 최대 간선 수는 n(n-1)
무방향 그래프 정점을 연결하는 선에 방향이 없는 그래프
n개의 정점으로 구성된 무방향 그래프의 최대 간선 수는 n(n-1)/2

 

그래프의 표현방법

그래프 G = (V, E)

V(G) = 정점(Vertices)

E(G) = 간선(Edges)

 

그래프 용어 정리

용어 설명
경로(Path) 임의 정점에서 다른 정점으로 이르는 길
경로 길이(Path Length) 경로상 있는 간선의 수
단순 경로(Simple Path) 한 경로의 모든 간선이 다를 때의 경로
사이클(Cycle) 동일 정점에서 시작과 끝이 이어지는 경로

 

(2) 논리 데이터 저장소

논리 데이터 저장소의 개념

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

 

논리 데이터 저장소 구조 = 개속관

구조 설명 표기
체(Entity) 관리할 대상이 되는 실체
성(Attribute) 관리할 정보의 구체적 항목
계(Relationship) 개체 간의 대응 관계

 

2. 물리 데이터 저장소 설계

(1) 물리 데이터 저장소

물리 데이터 저장소의 개념

물리 데이터 저장소는 논리 데이터 모델을 사용하고자 하는 각 DBMS의 특성을 고려하여 데이터베이스 저장 구조로 변환하기 위한 데이터 저장소이다.

 

물리 데이터 저장소 모델 변환

순서 변환 단계 수행
1 단위 개체를 테이블로 변환 개체는 한글명을 사용
2 속성을 컬럼으로 변환 개발자와 사용자 간 의사소통을 위해 표준화된 약어를 사용하도록 권고
3 UID를 기본 키로 변환 개체의 UID에 해당하는 모든 속성에 대해 기본 키로 선언
4 관계를 외래 키로 변환 외래 키 명은 기본 키 이름을 그대로 사용하나 다른 의미를 가질 경우 변경 가능
5 컬럼 유형과 길이 정의 CHAR 최대 2000바이트의 고정 길이 문자열 저장 가능
VARCHAR2 최대 4000바이트의 가변 길이 문자열 저장 가능
NUMBER 38 자릿수의 숫자 저장 가능
DATE 날짜 값을 저장
BLOB, CLOB 바이너리, 텍스트 데이터 최대 4GB까지 저장
6 반 정규화 수행 1:1 관계, 1:M 관계를 통합하여 조인 횟수를 줄여 성능 향상
슈퍼타입/서브타입 테이블 통합 통해 성능 향상

 

① 물리 데이터 저장소 구성

제약조건 옵션 설명
삭제 제약 조건
(Delete Constraint)
연쇄(Cascade) 참조한 테이블에 있는 외부 키와 일치하는 모든 Row가 삭제
제한(Restricted) 참조한 테이블에 있는 외부 키에 없는 것만 삭제 가능
무효(Nullify) 참조한 테이블에 정의된 외부 키와 일치하는 것을 Null로 수정
갱신 제약 조건
(Update Constraint)
연쇄(Cascade) 참조한 테이블에 있는 외부 키와 일치하는 모든 Row가 수정
제한(Restricted) 참조한 테이블에 있는 외부 키에 없는 것만 수정가능
무효(Nullify) 참조한 테이블에 정의된 외부 키와 일치하는 것을 Null로 수정

 

② 인덱스(Index) 설계

분포도 = (1 / (컬럼 값의 종류)) * 100

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

 

③ 뷰(View) 설계

속성 설명
REPLACE 뷰가 이미 존재하는 경우 재생성
FORCE 기본 테이블의 존재 여부에 관계 없이 뷰 생성
NOFORCE 기본 테이블이 존재할 때만 뷰 생성
WITH CHECK OPTION 서브 쿼리 내의 조건을 만족하는 행만 변경
WITH READ ONLY 데이터 조작어 작업 불가

 

④ 파티션(Partition) 설계

파티션의 종류 = 레해리컴

종류 설명
범위 분할
(인지 파티셔닝 : Range Partitioning)
분할 키값이 범위 내에 있는지 여부를 구분하는 분할 기법
해시 분할
(시 파티셔닝 : Hash Partitioning)
해시 함수의 값에 따라 파티션에 포함할지 여부를 결정하는 분할 기법
목록 분할
(스트 파티셔닝 : List Partitioning)
값 목록에 파티션을 할당하고 분할 키값을 그 목록에 맞게 분할하는 기법
조합 분할
(포지트 파티셔닝 : Composite Partitioning)
범위 분할, 해시 분할, 목록 분할 중 2개 이상의 분할 기법을 결정하는 기법

 

파티션의 장점 = 성가백합

속성  설명
능 향상 데이터 액세스 범위를 줄여 성능 향상
용성 향상 전체 데이터의 훼손 가능성이 감소 및 데이터 가용성 향상
업 가능 분할 영역을 독립적으로 백업하고 복구 가능
감소 디스크 스트라이핑으로 입출력 성능을 향상
디스크 컨트롤러에 대한 경합의 감소

 

(2) ORM 프레임워크

ORM(Object-Relational Mapping) 프레임워크의 개념

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

 

ORM 프레임워크의 기술

유형 기술 설명
SQL Mapping iBatis SQL에 기반한 데이터베이스와 자바 등을 연결시켜주는 역할을 하는 개발 프레임워크
MyBatis  객체지향 언어인 자바의 관계형 DB 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크
OR Mapping Hibernate 자바 언어를 위한 객체 관계 매핑 프레임워크

 

ORM 종류

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

 

(3) 트랜잭션 인터페이스

트랜잭션 인터페이스는 데이터베이스 트랜잭션의 입출력과 기능 형태를 정의한 인터페이스이다.

 

트랜잭션 인터페이스 특징

특징 설명
원자성(Atomicity) 트랜잭션 연산을 데이터베이스 모두에 반영 또는 반영하지 말아야 함(All or Nothing)
일관성(Consistency) 트랜잭션이 실행을 성공적으로 완료할 시 일관성 있는 데이터베이스 상태를 유지
격리성(Isolation) 둘 이상 트랜잭션 동시 실행 시 한 개의 트랜잭션만 접근이 가능하여 간섭 불가
영속성(Durability) 성공적으로 완료된 트랜잭션 결과는 영구적으로 반영됨

 

3. 데이터 조작 프로시저 작성

(1) 프로시저

프로시저는 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다.

 

절차형 데이터 조작 프로시저

① Oracle 기반 PL/SQL 개념

표준 SQL을 기본으로 Oracle에서 개발한 데이터 조작 언어이다.

 

② PL/SQL 장점

장점 설명
컴파일 불필요 컴파일 없이 스크립트 생성 및 변경 후 실행 가능
모듈화 가능  블록 내에서 논리적으로 관련된 문장 그룹화 가능
절차적 언어 사용 데이터베이스의 테이블과 레코드를 기반으로 하는 동적변수 선언 가능
에러 처리 예외처리 루틴을 이용한 에러 처리 가능

 

③ PL/SQL 구성

구성 설명
선언부(Declare) 실행부에서 참조할 모든 변수, 상수, CURSOR, EXCEPTION 선언
실행부(Begin/End) BEGIN과 END 사이에 기술되는 영역
데이터를 처리할 SQL 문과 PL/SQL 블록을 기술
예외부(Exception) 실행부에서 에러가 발생했을 때 문장 기술

 

④ PL/SQL을 활용한 저장형 객체 활용 = 프함패트

 

구분 설명
저장된 로시저

일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
CREATE OR REPLACE 구문을 사용
저장된 반드시 반환할 값의 데이터 타입을 return 문에 선언
저장된 키지 프로시저나 함수를 효율적으로 관리하기 위한 집합
패키지나 선언부와 본문으로 구분
리거 특정 테이블에서 삽입, 수정, 삭제 등의 데이터 변경 이벤트가 발생 시 DBMS에서 자동적으로 실행되도록 구현된 프로그램

 

(2) 프로그램 디버깅

프로그램 디버깅은 프로시저가 입력 자료를 받아 출력을 올바르게 도출하는지에 관한 확인 과정이다.

 

(3) 단위 테스트 도구

단위 테스트 도구는 단위 테스트에서 구현된 프로시저의 적합성을 확인하기 위한 도구이다.

 

4. 데이터 조작 프로시저 최적화

(1) 쿼리 성능 측정

데이터베이스에서 프로시저에 있는 SQL 실행 계획을 분석, 수정을 통해 최소의 시간으로 원하는 결과를 얻도록 프로시저를 수정하는 사전 작업이다.

 

SQL 성능 개선 절차

순서  절차
1 문제 있는 SQL 식별
2 옵티마이저 통계 확인
3 SQL 문 재구성
4 인덱스 재구성
5 실행계획 유지관리

 

(2) 소스 코드 인스펙션

소스 코드 인스펙션의 개념

데이터베이스 성능 향상을 위하여 프로시저 코드를 보면서 성능 문제점을 개선해 나가는 활동이다.

 

SQL 코드 인스펙션 대상

인스펙션 대상 설명
미사용 변수 프로시저에서 선언은 되었지만 본문에서는 전혀 사용되지 않는 변수
미사용 서브쿼리 컬럼이 선언은 되었지만 외부 쿼리에서 참조가 되지 않음
Null 값 비교 Null 값과 비교하는 프로시저 소스가 있는 경우
과거의 데이터 타입 사용 데이터 타입이 바뀌었지만 과거의 타입을 그대로 쓰는 소스가 있는 경우

 

SQL 코드 인스펙션 절차

순서 절차 설명
1 계획 단계 문제되는 SQL 코드 식별
문제점 인식 및 인스펙션 참여자 설정
2 개관 단계 SQL 코드 문제점 공유
계획 및 방법 공유
3 준비 단계 개별 SQL 소스 코드 분석, 문제점 확인
4 검사 단계  공식적인 SQL 인스펙션 수행
문제점 토의
5 재작업 단계 SQL 소스 코드 수정 및 실행 시간 재측정
6 추적 단계 팔로우 업, 개선 효과 분석

 

https://book.naver.com/bookdb/book_detail.nhn?bid=15910265

 

수제비 정보처리기사 필기

NCS 모듈제작에 참여한 경험을 기반으로, 다양한 모듈에서 시험 출제 빈도를 분석하여 출제 비중이 높은 내용 위주로 구성했다. 출제 비중이 낮고 이해하기 어려운 개념들은 과감하게 제외함으

book.naver.com

 

Ps. 2주차 Chapter 01 끝!