5 분 소요

2020 시나공 정보처리기사 필기책 참고

주의! 중요도가 낮은 항목(C)은 제외

1. 자료구조 – A

- 자료 구조의 정의

  • 자료의 표현과 그것과 관련된 연산
  • 자료들을 조직하고 구조화하는 것
  • 필요한 모든 연산들을 처리할 수 있음
  • 프로그램 실행시간이 달라짐

- 자료 구조의 분류

  • 선형 구조
    • 배열
    • 선형 리스트
      • 연속 리스트
      • 연결 리스트
    • 스택
    • 데크
  • 비선형 구조
    • 트리
    • 그래프

- 배열(Array)

  • 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고 있는 집합
  • 정적인 자료구조
  • 기억장소 추가가 어려움
  • 데이터 삭제 시 데이터가 저장되어 있던 기억장소가 빈 공간으로 남아있어 메모리 낭비 발생
  • 첨자를 이용하여 데이터에 접근
  • 반복적인 데이터 처리 작업에 적합한 구조
  • 동일한 이름의 변수를 사용하여 처리가 간편
  • 첨자의 개수에 따라 n차원 배열이라고 부름

- 선형 리스트(Linear List)

  • 일정한 순서에 의해 나열된 자료 구조
  • 배열을 이용하는 연속 리스트, 포인터를 이용하는 연결 리스트로 구분

@ 연속 리스트(Contiguous List)

  • 연속되는 기억장소에 저장되는 자료 구조
  • 기억장소 이용 효율은 밀도가 1로서 가장 좋음
  • 데이터 삽입, 삭제 시 자료의 이동이 필요

@ 연결 리스트(Linked List)

  • 자료들을 반드시 연속적으로 배열시키지 않고 노드의 포인터 부분을 이용해서 서로 연결
  • 노드의 삽입, 삭제 작업이 용이
  • 기억공간이 연속적으로 놓여있지 않아도 저장 가능
  • 순차 리스트에 비해 기억 공간의 이용 효율이 좋지 않음
  • 포인터를 찾는 시간이 필요해 접근 속도가 느림
  • 중간 노드 연결이 끊어지면 그 다음 노드를 찾기 힘듬

- 스택(Stack)

  • 리스트의 한쪽 끝으로만 자료의 삽입, 삭제가 이루어짐
  • 후입선출(LIFO)
  • 기억공간이 꽉 차있는 상태에서 삽입되면 Overflow 발생
  • 기억공간이 비어있는 상태에서 삭제하면 Underflow 발생
  • 삽입(PUSH), 삭제(POP), 마지막 삽입 자료(Top), 밑바닥(Bottom)

- 큐(Queue)

  • 리스트의 한쪽에서는 삽입, 다른 한쪽에서는 삭제가 이루어짐
  • 선입선출(FIFO)
  • 시작과 끝을 표시하는 두 개의 포인터가 있음
  • 프런트(F, Front) 포인터 : 가장 먼저 삽입된 자료의 기억공간을 가리킴. 삭제 작업
  • 리어(R, Rear) 포인터 : 가장 마지막에 삽입된 자료의 기억공간을 가리킴. 삽입작업
  • 운영체제의 작업 스케줄링에 사용

- 트리(Tree)

  • 정점(Node)과 선분(Branch)을 이용하여 사이클을 이루지 않도록 구성한 그래프의 형태
  • 하나의 기억공간을 노드(Node), 노드와 노드를 연결하는 선을 링크(Link)
  • 가족의 계보, 조직도 등을 표현하기 적합
  • 노드 : 자료 항목과 다른 항목에 대한 가지를 합친 것
  • 근 노드(Root Node) : 트리의 맨 위에 있는 노드
  • 차수(Degree) : 각 노드에서 뻗어 나온 가지의 수
  • 단말 노드(Terminal Node) = 잎 노드(Leaf Node) : 자식이 하나도 없는 노드
  • 자식 노드(Son Node) : 어떤 노드에 연결된 다음 레벨의 노드들
  • 부모 노드(Parent Node) : 어떤 노드에 연결된 이전 레벨의 노드들
  • 형제 노드(Brother Node, Sibling) : 동일한 부모를 갖는 노드들
  • 트리의 차수 : 노드들의 차수 중에서 가장 많은 수


2. 데이터저장소 / 데이터베이스 / DBMS – A

- 데이터저장소

  • 데이터들을 논리적인 구조로 조직화하거나, 물리적인 공간에 구축한 것
  • 논리 데이터 저장소 : 데이터 간 연관성, 제약조건을 식별하여 논리적인 구조로 조직화
  • 물리 데이터 저장소 : 물리적 특성을 고려하여 하드웨어적인 저장장치에 저장
  • 데이터베이스를 구축하는 과정과 동일

- 데이터베이스

  • 상호 관련된 데이터들의 모임
  • 통합된 데이터(Integrated Data) : 중복을 배제한 데이터의 모임
  • 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료
  • 운영 데이터(Operational Data) : 조직의 고유한 업무를 수행하는 데 없어서는 안 될 자료
  • 공용 데이터(Shared Data) : 공동으로 소유하고 유지하는 자료

- DBMS(DataBase Management System)

  • 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해 주는 S/W
  • 데이터의 종속성과 중복성의 문제를 해결
  • 모든 응용 프로그램들이 DB를 공용할 수 있도록 관리
  • DB의 구성, 접근 방법, 유지관리에 대한 모든 책임을 짐
  • DBMS의 필수 기능
    • 정의 기능 : 데이터 Type과 구조에 대한 정의, 이용 방식, 제약 조건 등을 명시
    • 조작 기능 : 검색, 갱신, 삽입, 삭제 등의 인터페이스 수단을 제공
    • 제어 기능 : 데이터의 무결성이 유지되도록 제어, 보안 유지, 권한 검사, 병행 제어
  • 장점
    • 데이터의 논리적, 물리적 독립성 보장
    • 데이터의 중복을 피할 수 있어 기억 공간 절약
    • 자료를 공동으로 이용할 수 있음
    • 데이터의 일관성을 유지할 수 있음
    • 데이터의 무결성을 유지할 수 있음
    • 보안을 유지할 수 있음
    • 데이터를 표준화 할 수 있음
    • 통합 관리가 가능
    • 최신의 데이터 유지 가능
    • 실시간 처리 가능
  • 단점
    • DB 전문가 부족
    • 전산화 비용 증가
    • Overhead 발생
    • Backup과 Recovery이 어려움
    • 시스템이 복잡

- 데이터의 독립성

  • 데이터의 독립성은 DBMS의 궁극적 목표
  • 논리적 독립성 : 데이터의 논리적 구조를 변경해도 응용 프로그램은 변경되지 않음
  • 물리적 독립성 : 응용 프로그램에는 영향을 주지 않고, 데이터의 물리적 구조만을 변경


3. 데이터 입출력 – B

- 데이터 입출력 개요

  • DB에 데이터를 입력하거나 출력하는 작업
  • 데이터를 조작하는 모든 행위를 의미. SQL 사용
  • 개발 코드 내에 SQL 코드를 삽입하거나, 객체와 데이터를 연결하는 데이터 접속(Data Mapping)
  • 논리적 기능을 수행하기 위한 작업의 단위 또는 한번에 수행되야 할 연산들을 트랜잭션이라고 함

- SQL(Structured Query Language)

  • 많은 회사에서 관계형 데이터베이스(RDB)를 지원하는 언어로 채택
  • 관계대수와 관계해석을 기초로 한 혼합 데이터
  • 질의어지만 질의 기능뿐만 아니라, 데이터 구조 정의, 조작, 제어기능을 모두 갖춤
  • 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 구분
    • DDL : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의, 변경, 삭제
    • DML : 저장된 데이터를 실질적으로 처리
    • DCL : 보안, 무결성, 회복, 병행수행 제어 등을 정의하는데 사용

- 데이터 접속(Data Mapping)

  • 프로그래밍 코드와 DB의 데이터를 연결하는 것
  • SQL Mapping : 코드 내에 SQL을 직접 입력하여 DBMS 객체에 접속. JDBC, ODBC, MyBatis
  • ORM(Object-Relational Mapping) : 객체와 RDB의 데이터를 연결. JPA, Hibernate, Django

- 트랜잭션(Transaction)

  • DB 상태를 변환시키는 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행돼야 할 연산
  • TCL : 트랜잭션을 제어하기 위한 명령어. COMMIT, ROLLBACK, SAVEPOINT
    • COMMIT : 트랜잭션이 수행한 변경 내용을 DB에 저장
    • ROLLBACK : 모든 변경 작업을 취소하고 이전 상태로 되돌림
    • SAVEPOINT(=CHECKPOINT) : ROLLBACK 할 저장점을 지정


4. 절차형 SQL – B

- 절차형 SQL 개요

  • 프로그래밍 언어와 같이 연속적인 실행이나 분기, 반복 등의 제어가 가능한 SQL
  • 프로그래밍 언어에 비해 효율은 떨어지지만, 연속적인 작업들을 처리하는데 적합
  • 다양한 기능을 수행하는 저장 모듈 생성할 수 있음
  • DBMS 엔진에서 직접 실행돼 입출력 패킷이 적은 편
  • BEGIN ~ END 형식의 블록 구조로 되어 있어 기능별 모듈화 가능
  • 프로시저 : 트랜잭션 언어, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업 수행
  • 트리거 : 이벤트가 발생할 때마다 관련 작업이 자동으로 수행
  • 사용자 정의 함수 : 예약어 RETURN을 사용하여 처리 결과를 단일값으로 반환

- 절차형 SQL의 테스트와 디버깅

  • 디버깅을 통해 기능의 적합성 여부를 검증, 실행을 통해 결과를 테스트
  • 테스트 전에 생성을 통해 구문 오류나 참조 오류의 존재 여부 확인
  • SHOW 명령어를 통해 내용을 확인하고 문제를 수정
  • 디버깅을 통해 로직을 검증하고, 결과를 통해 최종적으로 확인
  • DB에 변화를 줄 수 있는 삽입 등의 SQL 문을 주석으로 처리하고, 출력문을 이용해 확인

- 쿼리 성능 최적화

  • 데이터 입출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화
  • 성능 측정 도구인 APM을 사용하여 최적화 할 쿼리 선정
  • 옵티마이저가 수립한 실행 계획을 검토하고 SQL 코드와 인덱스 재구성

태그:

카테고리:

업데이트:

댓글남기기