정처기 소프트웨어 개발 - 2.1 데이터 입·출력 구현
<자료구조> ★★★★
(1) 자료 구조의 정의
- 저장 공간의 효율성, 실행 시간의 신속성 고려
- 프로그램에서 사용하기 위한 자료를 기억장치 공간 내에 저장하는 방법,
저장된 그룹 내에 존재하는 자료간으 관계, 처리방법 등을 연구 분석
- 자료의 표현과 그것과 관련된 연산
- 일련의 자료들을 조직하고 구조화하는 것
- 어떠한 자료구조에서도 필요한 모든 연산들을 처리할 수 있음
- 자료구조에 따라 프로그램 실행시간이 달라짐
(2) 자료 구조의 분류
- 선형 구조(Linear Structure)
- 배열(Array)
- 선형 리스트(Linear List)
- 연속 리스트(Contiguous List)
- 연결 리스트(Linked List)
- 스택(Stack)
- 큐(Queue)
- 데크(Deque)
- 비선형 구조(Non-Linear Structure)
- 트리(Tree)
- 그래프(Graph)
(3) 배열(Array)
- 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고 있는 집합
- 정적인 자료구조로 기억장소의 추가가 여려움
- 데이터 삭제 시 데이터가 저장되어 있던 기억장소는 빈 공간으로 남아있어 메모리의 낭비가 발생
- 첨자를 이용하여 데이터 접근
- 반복적인 데이터 처리 작업에 적합한 구조
- 데이터마다 동일한 이름의 변수를 사용하여 처리가 간편함
- 사용한 첨자의 개수에 따라 n차원의 배열이라고 부름
(4) 선형 리스트(Linear List)
- 일정한 순서에 의해 나열된 자료구조
- 연속 리스트(Contiguous List)
- 배열(연속되는 기억장소)을 이용
- 기억장소 이용 효율은 밀도가 1로서 가장 좋음
- 중간에 데이터를 삽입하기 위해서는 연속된 빈 공간이 있어야 하며, 삽입·삭제 시 자료의 이동이 필요
- 연결 리스트(Linked List)
- 포인터를 이용
- 자료들을 임의으 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결
- 노드의 삽입·삭제 작업이 용이
- 기억 공간이 연속적으로 놓여 있지 않아도 저장할 수 있음
- 순차 리스트에 비해 기억 공간의 이용 효율이 좋지 않음
- 접근 속도가 느림
- 중간 노드 연결이 끊어지면 그 다음 노드를 찾기 어려움
(5) 스택(Stack)
- 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료구조
- 후입선출 방식(LIFO; Last In First Out) : 가장 나중에 삽입된 자료가 가장 먼저 삭제
- 모든 기억 공간이 꽉 채워진 상태에서 데이터 삽입 --> 오버플로(Overflow) 발생
- 더 이상 삭제할 데이터가 없는 상태에서 데이터를 삭제 -->언더플로(Underflow) 발생
- TOP : 가장 마지막으로 삽입된 자료가 기억된 위치 가리킴
- Bottom : 스택의 가장 밑바닥
(6) 큐(Queue)
- 리스트의 한쪽에서 삽입 작업이 이루어지고, 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조
- 선입선출 방식(FIFO; First In First Out) : 가장 먼저 삽입된 자료가 가장 먼저 삭제
- 시작과 끝을 표시하는 두 개의 포인터가 존재
- 프런트(F, Front) : 가장 먼저 삽입된 자료의 기억 공간을 가리키는 포인터, 삭제 작업을 할 때 사용
- 리어(R, Rear) : 가장 마지막에 삽입된 자료가 위치한 기억공간 가리키는 포인터, 삽입 작업을 할 때 사용
- 운영체제의 작업 스케줄링에 사용
(7) 트리(Tree)
- 정점(Node, 노드)과 선분(Branch, 가지)을 이용하여 사이클을 이루지 않도록 구성한 그래프(Graph)의 특수 형태
- 가족의 계보(족보), 조직도 등을 표현하기 적합
- 노드(Node) : 하나의 기억 공간, 트리의 기본 요소, 자료항목과 다른 항목에 대한 가지(Branch)를 합친 것
- 링크(Link) : 노드와 노드를 연결하는 선
- 근 노드(Root Node) : 트리의 맨 위에 있는 노드
- 디그리(Degree, 차수) : 각 노드에서 뻗어 나온 가지의 수
- 단말 노드(Terminal Node) = 잎 노드(Leaf Node) : 자식이 하나도 없는 노드, 그리가 0인 노드
- 자식 노드(Son Node) : 어떤 노드에 연결된 다음 레벨의 노드들
- 부모 노드(Parent Node) : 어떤 노드에 연결된 이전 레벨의 노드들
- 형제 노드(Brother Node, Sibling) : 동일한 부모를 갖는 노드들
- 트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수
<데이터저장소 / 데이터베이스 / DBMS> ★★★★
(1) 데이터저장소
- 소프트웨어 개발 과정에서 다루어야 할 데이터들을 논리적인 구조로 조직화하거나, 물리적인 공간에 구축할 것을 의미
- 논리 데이터저장소
: 데이터 및 데이터 간의 연관성, 제약조건을 식별하여 논리적인 구조로 조직화한 것을 의미
- 물리 데이터저장소
: 논리 데이터저장소에 저장된 데이터와 구조들을 소프트웨어가 운용될 환경의 물리적 특성을 고려하여
하드웨어적인 저장장치에 저장한 것을 의미
- 논리 데이터저장소를 거쳐 물리 데이터저장소를 구축하는 과정은 데이터베이스를 구축하는 과정과 동일함
(2) 데이터베이스
- 특정 조직의 업무를 수행하는데 필요한 상호 관련된 데이터들의 모임
- 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 모임
- 저장된 데이터(Stroed Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료
- 운영 데이터(Operational Data) : 조직의 고유한 업무 수행에 존재 가치가 확실, 없어서는 안 될 반드시 필요한 자료
- 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료
(3) DBMS(DataBase Managenet System; 데이터베이스 관리 시스템)
- 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 기존의 파일 시스템이 갖는 데이터의 종속성, 중복성의 문제를 해결하기 위해 제안된 시스템
- 모든 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리해 줌
- 데이터베이스의 구성, 접근 방법, 유지관리에 대한 모든 책임을 짐
- DBMS의 필수 기능 : 정의(Definition), 조작(Manipulation), 제어(Control)
- 정의 기능
: 모든 응용 프로그램들이 요구하는 데이터 구조를 지원하기 위해 데이터베이스에 저장될
데이터의 형(Type)과 구조에 대한 정의, 이용 방식, 제약 조건 등을 명시하는 기능
- 조작 기능
: 데이터 검색, 갱신, 삽입, 삭제 등을 체계적으로 처리하기 위해
사용자와 데이터베이스 사이의 인터페이스 수단을 제공하는 기능
- 제어 기능
: 데이터베이스를 접근하는 갱신, 삽입, 삭제 작업이 정확하게 수행되어 데이터의 무결성이 유지되도록 제어해야 함
정당한 사용자가 허가된 데이터만 접근가능하게, 보안(Security) 유지, 권한(Authority) 감시할 수 있도록 해야 함
여러 사용자가 데이터베이스를 동시에 접근하여 데이터를 처리할 때 처리 결과가 항상 정확성을 유지하도록
병행 제어(Concurrency Control)를 할 수 있어야 함
(4) DBMS의 장·단점
- 장점
: 논리적, 물리적 독립성 보장
데이터의 중복을 피할 수 있어 기억 공간이 절약
저장된 자료를 공동으로 이용 가능
데이터의 일관성, 무결성 유지 가능
보안, 항상 최신의 데이터 유지
데이터를 표준화, 통합하여 관리 가능
데이터의 실시간 처리 가능
- 단점
: 데이터베이스의 전문가 부족
전산화 비용 증가
대용량 디스크로 집중적인 Access로 과부하(Overhead)가 발생
파일의 예비(Backup)와 회복(Recover)이 어려움
시스템이 복잡함
<데이터 입·출력> ☆★★★
(1) 데이터 입·출력의 개요
- 소프트웨어의 기능 구현을 위해 데이터베이스에 데이터를 입력하거나 데이터베이스의 데이터를 출력하는 작업을 의미
- 단순 입·출력 + 데이터를 조작하는 모든 행위
- 작업을 위해 SQL(Structed Query Language)을 사용함
- 데이터 접속(Data Mapping)
: 소프트웨어에 구현하기 위해 개발 코드 내에 SQL 코드를 삽입하거나, 객체와 데이터를 연결하는 것
- 트랜잭션(Transaction)
: SQL을 통한 데이터베이스 조작을 수행할 때 하나의 논리적 기능을 수행하기 위한 작업의 단위,
한꺼번에 모두 수행되어야 할 일련의 연산들
(2) SQL(Structed Query Language)
- 국제 표준 데이터베이스 언어, 많은 회사에서 관계형 데이터베이스(RDB)를 지원하는 언어로 채택
- 관계대수와 관계해석을 기초로 한 혼합 데이터 언어
- 질의어 + 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 모드 갖추고 있음
- 데이터 정의어 (DDL; Data Deline Language)
: SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의, 변경, 삭제할 때 사용하는 언어
- 데이터 조작어 (DML; Data Manipulation Language)
: 데이터베이스 사용자가 응용 프로그램, 질의어를 통해 저장된 데이터를 실질적으로 처리하는데 사용되는 언어
- 데이터 제어어 (DCL; Data Control Language)
: 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는데 사용되는 언어
(3) 데이터 접속(Data Mapping)
- 소프트웨어 기능 구현을 위해 프로그래밍 코드와 데이터베이스의 데이터를 연결(Mapping)하는 것
- SQL Mapping
: 프로그래밍 코드 내에 SQL을 직접 입력하여 DBMS의 데이터에 접속하는 기술
관련 프레임 워크에는 JDBC, ODBC, MyBatis 등이 있음
- ORM(Object-Relational Mapping)
: 객체지향 프로그래밍의 객체(Object)와 관계형(Relational) 데이터베이스의 데이터를 연결(Mapping)하는 기술
관련 프레임 워크에는 JPA, Hibernate, Django 등이 있음
(4) 트랜잭션(Transaction)
- 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위를 의미
- 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미
- TCL(Transaction Control Language)
: 트랜잭션을 제어하기 위해서 사용하는 명령어
종류에는 COMMIT, ROLLBACK, SAVEPOINT가 있음
- COMMIT
: 트랜잭션 처리가 정상적으로 종료되어 트랜잭션이 수행한 변경 내용을 데이터베이스에 반영하는 명령어
- ROLLVACK
: 하나의 트랜잭션 처리가 비정상으로 종료되어 데이터베이스의 일관성이 깨졌을 때
트랜잭션이 행한 모든 변경 작업을 취소하고 이전 상태로 되돌리는 연산
- SAVEPOINT(=CHECKPOINT)
: 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정하는 명령어
<절차형 SQL> ☆★★★
(1) 절차형 SQL의 개요
- C, JAVA 등의 프로그래밍 언어와 같이 연속적인 실행, 분기, 반복 등의 제어가 가능한 SQL을 의미함
- 일반적인 프로그래밍 언어에 비해 효율은 떨어짐
- 단일 SQL 문장으로 처리하기 어려운 연속적인 작업들을 처리하는데 적합
- 다양한 기능을 수행하는 저장 모듈을 생성할 수 있음
- DBMS 엔진에서 직접 실행되기 때문에 입·출력 패킷이 작은 편
- BEGIN~END 형식으로 저장되는 블록(BLOCK)구조로 되어 있으므로 기능별 모듈화 가능
- 프로시저(Procedure)
: 특정 기능을 수행하는 일종의 트랜잭션 언어, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행
- 트리거(Trigger)
: 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트(Event)가 발생할 때마다 관련 작업이 자동 수행됨
- 사용자 정의 함수
: 프로시저와 유사하게 SQL을 사용하여 일련의 작업을 연속적으로 처리
종료 시 예약이 Return을 사용하여 처리 결과를 단일값으로 반환
(2) 절차형 SQL의 테스트와 디버깅
- 디버깅을 통해 기능의 적합성 여부를 검증하고, 실행을 통해 결과를 확인하는 테스트 과정을 수행
- 절차형 SQL은 테스트 전에 생성을 통해 구문 오류나 참조 오류의 존재 여부를 확인
- 많은 코드로 구성된 절차형 SQL의 특성상 오류 및 경고 메시지가 상세하기 출력되지 않으므로
SHOW 명령어를 통해 내용을 확인하고 문제를 수정함
- 정상적으로 생성된 절차형 SQL은 디버깅을 통해 로직을 검증, 결과를 통해 최종적으로 확인
- 절차형 SQL 디버깅은 실제로 데이터베이스에 변화를 줄 수 있는 삽입 및 변경 관련 SQL문을 주석으로 처리,
출력문을 이용하여 화면에 출력하여 확인
(3) 쿼리 성능 최적화
- 데이터 입·출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화 하는 것
- 커리 성능을 최적화하기 전에 성능 측정 도구인 APM을 사용하여 최적화 할 쿼리를 선정해야 함
- 최적화 할 쿼리에 대해 옵티마이저가 수립한 실행 계획을 검토, SQL 코드와 인덱스를 재구성
www.yes24.com/Product/Goods/82838724?OzSrank=6
2020 시나공 정보처리기사 필기
2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중 정보통신 분야의 ‘정보기술’ 분류에 포함된 ‘정보기술개발’과 ‘정보기술운영’에 속한 125개의 학습 모듈을
www.yes24.com
* 2020 시나공 정보처리기사 필기 요약한 내용입니다.