본문 바로가기
IT License/정처기-2과목

2021 #정보처리기사 필기요약 #2-1. 데이터 입출력 구현

by 시뮝 2021. 2. 26.
728x90
2021년 NCS기반 정처기 필기입니다. 이기적2020과 수제비2021 수험서를 함께 보고 공부한 기록입니다.

제 2과목 소프트웨어 개발 > 데이터 입출력 구현


(1) 논리 데이터 저장소 확인

자료 구조(Data Structure)

  • 자료 구조는 컴퓨터상 자료를 효율적으로 저장하기 위해 만들어진 논리적인 구조이다.
  • 자료 구조의 분류는 선형 구조와 비선형 구조로 크게 나뉜다.
구조 설명 종류
선형 구조 데이터를 연속적으로 연결한 자료 구조 리스트, 스택, 큐, 데크
비선형 구조 데이터를 비연속적으로 연결한 자료 구조 트리, 그래프

 

선형 구조 > 리스트(List)

개념 설명
선형 리스트
(Linear List)
배열과 같이 연속되는 기억 장소에 저장되는 리스트
연결 리스트
(Linked List)
노드의 포인터 부분으로 서로 연결시킨 리스트

 

선형 구조 > 스택

  • 스택(Stack)은 한 방향으로만 자료를 넣고 꺼낼 수 있는 LIFO(Last-In First-Out) 형식의 자료 구조이다.
  • 한 방향으로만 PUSH와 POP을 이용하여 자료를 넣고 꺼낸다.
  • TOP은 스택에서 가장 위에 있는 데이터로, 스택 포인터(Stack Pointer)라고도 불린다.
  • 스택 연산
    • PUSH: 데이터를 차례대로 스택에 넣는 연산
    • POP: 스택에서 가장 위에 있는 데이터를 하나씩 꺼내는 연산

 

선형 구조 > 큐

  • 큐(Queue)는 한쪽 끝에서는 삽입 작업이 이뤄지고, 반대쪽 끝에서는 삭제 작업이 이루어지는 FIFO(First-In First-Out) 형식의 자료 구조이다.
  • 한쪽에서는 ENQUEUE 연산을 이용하여 데이터를 넣고, 한쪽에서는 DEQUEUE 연산을 이용하여 데이터를 꺼낸다.
  • 데이터가 꺼내는 쪽에서 가장 가까운 데이터를 Front라고 하고, 데이터를 넣는 쪽에서 가장 가까운 데이터를 Rear라고 한다.
  • 큐 연산
    • ENQUEUE: 데이터를 차례대로 넣는 연산
    • DEQUEUE: 처음 저장된 데이터부터 하나씩 꺼내는 연산

 

선형 구조 > 데크

  • 데크(Deque; Double Ended Queue)는 큐의 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료 구조이다.
  • 두 개의 포인터를 사용하여, 양쪽의 삭제/삽입이 가능하다.
  • 데크를 이용한 스택과 큐의 구현이 가능하다.
  • 데크연산
    • PUSH: 데이터를 차례대로 데크에 넣는 연산
    • POP: 데크에서 Front와 Rear에 있는 데이터를 하나씩 꺼내는 연산

 

비선형 구조 > 트리

  • 트리(Tree)는 데이터들을 계층화시킨 자료 구조이다.
  • 인덱스를 조작하는 방법으로 가장 많이 사용하는 구조이다.
  • 트리는 노드(Node)와 노드를 연결하는(Link)로 구성된다.
  • 배열과 달리 노드들이 포인터로 연결되어 노드의 상한선이 없다.

 

트리(Tree) 용어

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

 

트리 순회방법

구분 개념도 순회방법
전위 순회
(Pre-Order Traversal)
Root → Left → Right
최상위 → 좌 → 우
중위 순회
(In-Order Traversal)
Left → Root → Right
좌 → 최상위 →우
후위 순회
(Post-Order Traversal)
Left → Right → Root
좌 → 우 최상위

 

트리 순회방법 예시 바로가기

simuing.tistory.com/entry/2021-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0%EC%9A%94%EC%95%BD-%ED%8A%B8%EB%A6%AC-%EC%88%9C%ED%9A%8C%EB%B0%A9%EB%B2%95-%EC%B0%A8%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0

 

이진 트리

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

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

 

비선형 구조 - 그래프

  • 그래프(Graph)는 노드(N; Node)와 노드를 연결하는 간선(E; Edge)을 하나로 모아 놓은 자료 구조이다.
  • 트리(Tree)는 사이클이 없는 그래프이다.
  • 그래프의 유형
    • 방향 그래프: 정점을 연결하는 선에 방향이 있는 그래프, 최대 간선 수 = n(n-1)
    • 무방향 그래프: 정점을 연결하는 선에 방향이 없는 그래프, 최대 간선 수 = n(n-1)/2
  • 그래프의 표현방법
    • 그래프 G = (V, E)
    • V(G) = 정점(Vertices)
    • E(G) = 간선(Edges)
  • 그래프 용어
    • 경로(Path) / 경로 길이(Path Length) / 단순 경로(Simple Path) / 사이클(Cycle)

논리 데이터 저장소

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

 

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

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

(2) 물리 데이터 저장소 설계

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

 

물리 데이터 저장소 구성

  • 테이블 제약조건(Constraint) 설계
  • 인덱스(Index) 설계
  • 뷰(View) 설계
    • 속성: REPLACE, FORCE, NOFORCE, WITH CHECK OPTION, WITH READ ONLY
  • 클러스터(Cluster) 설계
  • 파티션(Partition) 설계
    • 종류 (레해리컴)이지 파티셔닝 / 시 파티셔닝 / 스트 파티셔닝 / 포지트 파티셔닝
    • 장점 (성가백합)능 향상 / 용성 향상 / 업 가능 / 경 감소
  • 디스크(Disk) 구성 설계

 

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

  1. 단위 개체를 테이블로 변환
  2. 속성을 컬럼으로 변환
  3. UID를 기본 키로 변환
  4. 관계를 외래 키로 변환
  5. 컬럼 유형과 길이 정의
  6. 반정규화 수행

 

반 정규화 수행 방법

구분 종류 설명
테이블 통합 슈퍼타입/서브타입
테이블 통합
1:1 관계, 1:M 관계를 통합하여 조인 횟수를 줄여 성능 향상
슈퍼타입/서브타입 테이블 통합을 통해 성능 향상
테이블 분할 (파티셔닝) 수평 분할 레코드 단위 분할
수직 분할 컬럼 단위 분할
중복 테이블 추가 집계 테이블 추가 집계 데이터를 위한 테이블 생성, 각 원본 테이블에 트리거를 설정하여 사용하는 것. 트리거의 오버헤드 유의 필요
진행 테이블 추가 이력 관리 등의 목적으로 추가하는 테이블, 기본키 설정
특정 부분만을
포함하는 테이블 추가
데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
컬럼 중복화 중복 허용 조인 성능 향상을 위한 중복 허용

ORM 프레임워크

ORM(Object-Relational Mapping) 프레임워크는 관계형 데이터베이스와 객체지향 프로그래밍 언어 간 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.

 

ORM 프레임워크 기술 유형

  • SQL Mapping
  • OR Mapping

 

ORM 프레임워크 절차

  1. 클래스 → 테이블 변환
  2. 애트리뷰트 → 컬럼 변환
  3. 클래스 간 관계 → 테이블 간 관계 변환

 

ORM 프레임워크 종류

  • 부분적 ORM
  • 완전 ORM

트랜잭션 인터페이스

  • 트랜잭션 인터페이스(Transaction Interface)는 데이터베이스 트랜잭션의 입출력과 기능 형태를 정의한 인터페이스이다.
  • 트랜잭션 인터페이스는 ACID 원칙을 기반으로 설계된다.

 

트랜잭션 인터페이스 특징

원자성(Automicity) / 일관성(Consistency) / 격리성(Isolation) / 영속성(Durability)

 

트랜잭션 인터페이스 설계

  • 데이터 접근 방법 및 인터페이스를 절차적으로 명세한다.
  • 대표적 사례: JDBC, ODBC 등

(3) 데이터 조작 프로시저 작성

프로시저

  • 프로시저(Procedure)는 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다.
  • 데이터베이스 내부에 저장되고 일정한 조건이 되면 자동으로 수행된다.

 

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

  • Oracle 기반 PL/SQL
    • 개념: 표준 SQL을 기본으로 Oracle에서 개발한 데이터 조작 언어
    • 장점: 컴파일 불필요, 모듈화 가능, 절차적 언어 사용, 에러 처리
    • 구성: 선언부(Declare), 실행부(Begin/End), 예외부(Exception)
  • PL/SQL을 활용한 저장형 객체 활용 (프함패트)
    • 저장된 로시저(Stored Procedure)
    • 저장된 수(Stored Function)
    • 저장된 키지(Stored Package)
    • 리거(Trigger)

 

프로그램 디버깅

  • 프로시저가 입력 자료를 받아 출력을 올바르게 도출하는지에 관한 확인 과정

 

단위 테스트 도구

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

 

PL/SQL 테스트

  • DBMS_OUTPUT 패키지를 사용한다.

 

DBMS_OUTPUT 패키지 기능

명령어 설명
DBMS_OUTPUT.DISABLE 메시지 버퍼 내용 삭제
DBMS_OUTPUT.ENABLE 메시지 버퍼 내용 할당
DBMS_OUTPUT.PUT 하나의 라인을 여러 번에 걸쳐 저장
DBMS_OUTPUT.PUT_LINE PUT과 동일하나 버퍼에 저장되는 메시지의 마지막 라인 끝에 EOL 문자를 추가
DBMS_OUTPUT.GET_LINE 한 번 호출할 때마다 하나의 라인만을 읽어옴
DBMS_OUTPUT.GET_LINES 지정된 라인을 모두 읽어들임

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

쿼리(Query) 성능 측정

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

 

실행계획(EXPLAIN PLAN) 기반 쿼리 성능 측정

SQL 문의 성능개선을 할 수 있도록 SQL 문을 분석 및 해석하여 실행계획을 수립하고, 연관 테이블(plan-table)에 저장하도록 지원하는 도구이다.

 

SQL 성능 개선 절차

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

 

소스 코드 인스펙션

  • 소스 코드 인스펙션(Source Code Inspection)은 데이터베이스 성능 향상을 위하여 프로시저 코드를 보면서 성능 문제점을 개선해 나가는 활동이다.
  • 데이터 조작 프로시저 최적화를 위한 SQL 코드 인스펙션이 있다.

 

SQL 코드 인스펙션

  • 대상: 미사용 변수 / 미사용 서브쿼리 / Null 값 비교 / 과거의 데이터 타입 사용
  • 절차: 계획 → 개관 → 준비 → 검사 → 재작업 → 추적

 

트리 순회방법 예시 바로가기

simuing.tistory.com/entry/2021-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0%EC%9A%94%EC%95%BD-%ED%8A%B8%EB%A6%AC-%EC%88%9C%ED%9A%8C%EB%B0%A9%EB%B2%95-%EC%B0%A8%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0

 

 

728x90

댓글