ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [정보처리기사] 2과목 소프트웨어 개발 : 1장. 데이터 입출력 구현
    정보처리기사 2022. 2. 28. 19:04
    728x90
    반응형
    1. 자료 구조 ***
    2. 데이터저장소 / 데이터베이스 / DBMS ***
    3. 데이터 입출력
    4. 절차형 SQL

     

     

    1. 자료 구조 ***

     

    자료 구조의 정의

    - 프로그램에서 사용하기 위한 자료를 기억장치의 공간 내에 저장하는 방법과 저장된 그룹 내에 존재하는 자료 간의 관계, 처리 방법 등을 연구 분석하는 것

    - 일련의 자료들을 조직하고 구조화하는 것

    - 어떠한 자료 구조에서도 필요한 모든 연산들을 처리할 수 있음

    자료 구조의 분류

    1) 배열

    - 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 가지고 있는 집합

    - 정적인 자료구조로 기억장소의 추가가 어렵고, 데이터 삭제 시 데이터가 저장되어 있던 기억장소는 빈 공간으로 남아있어 메모리의 낭비가 발생

    - 반복적인 데이터 처리 작업에 적합

    - 데이터마다 동일한 이름의 변수를 사용하여 처리가 간편

    2) 선형 리스트

    - 일정한 순서에 의해 나열된 자료 구조

    - 배열을 이용한 연속 리스트와 포인터를 이용하는 연결리스트로 구분됨

    (1) 연속 리스트

    - 배열과 같이 연속되는 기억장소에 저장되는 자료 구조

    - 기억장소를 연속적으로 배정받기 때문에 기억장소 이용 효율은 밀도가 1로서 가장 좋음

    - 중간에 데이터를 삽입하기 위해서는 연속된 빈 공간이 있어야 하며, 삽입, 삭제 시 자료의 이동 필요

    (2) 연결 리스트

    - 자료들을 반드시 연속적으로 배열시키지는 않고 임의의 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 언결시킨 자료 구조

    - 노드의 삽입, 삭제 작업이 용이

    - 기억공간이 연속적으로 놓여 있지 않아도 저장 가능

    - 연결을 위한 포인터 부분이 필요하기 때문에 순차 리스트에 비해 기억 공간의 이용 효율이 좋지 않음

    - 연결을 위한 포인터를 찾는 시간이 필요하기 때문에 접근 속도가 느림

    - 중간 노드 연결이 끊어지면 그 다음 노드를 찾기 어려움

    3) 스택

    - 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조

    - 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO) 방식으로 자료를 처리

    - 모든 기억 공간이 꽉 채워져 있는 상태에서 데이터가 삽입되면, 오버플로우가 발생하며, 더 이상 삭제할 데이터가 없는 상태에서 데이터를 삭제하면 언더플로우가 발생

    - Top, Bottom

    4) 큐

    - 리스트의 한쪽에는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조

    - 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO) 방식으로 처리

    - 시작과 끝을 표시하는 두 개의 포인터 존재

    - Front, Rear

    - 운영체제의 작업 스케줄링에 사용

    5) 트리

    - 정점과 선분을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태

    - 하나의 기억 공간을 노드라고 하며, 노드와 노드를 연결하는 선을 링크라고 함

    - 가족의 계보, 조직도 등을 표현하기에 적합

    - Node, Root Node, Degree, Leaf Node, Son Node, Parent Node, Sibling, Degree of Tree

     

     

     

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

     

    데이터저장소

    - 소프트웨어 개발 과정에서 다루어야 할 데이터들을 논리적인 구조로 조직화하거나, 물리적인 공간에 구축한 것

    1) 논리 데이터저장소

    - 데이터 및 데이터 간의 연관성, 제약조건을 식별하여 논리적인 구조로 조직화한 것

    2) 물리 데이터저장소

    - 논리 데이터저장소에 저장된 데이터와 구조들을 소프트웨어가 운용될 환경의 물리적 특성을 고려하여 하드웨어적인 저장장치에 저장한 것

    데이터베이스

    - 특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임

    1) 통합된 데이터: 자료의 중복을 배제한 데이터의 모임

    2) 저장된 데이터: 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료

    3) 운영 데이터: 조직의 고유한 업무를 수행하는 데 존재 가치가 확실하고 없어서는 안 될 반드시 필요한 자료

    4) 공용 데이터: 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료

    DBMS

    - 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해 주는 소프트웨어

    - 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템으로, 모든 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리해줌

    1) 정의 기능

    - 모든 응용 프로그램들이 요구하는 데이터 구조를 지원하기 위해 데이터베이스에 저장될 데이터의 형과 구조에 대한 정의, 이용 방식, 제약 조건 등을 명시하는 기능

    2) 조작 기능

    - 데이터 검색, 갱신, 삽입, 삭제 등을 체계적으로 처리하기 위해 사용자와 데이터베이스 사이의 인터페이스 수단을 제공하는 기능

    3) 제어 기능

    - 데이터베이스를 접근하는 갱신, 삽입, 삭제 작업이 정확하게 수행되어 데이터의 무결성이 유지되도록 제어해야 함

    - 정당한 사용자가 허가된 데이터만 접근할 수 있도록 보안을 유지하고 권한을 검사할 수 있어야 함

    - 여러 사용자가 데이터베이스를 동시에 접근하여 데이터를 처리할 때 처리 결과가 항상 정확성을 유지하도록 병행 제어를 할 수 있어야 함

    DBMS의 장단점

    장점

    - 데이터의 논리적, 물리적 독립성 보장

    - 데이터의 중복을 피할 수 있어 기억 공간 절약됨

    - 저장된 자료를 공동으로 이용할 수 있음

    - 데이터의 일관성 유지 가능

    - 데이터의 무결성 유지 가능

    - 보안 유지 가능

    - 데이터 표준화 가능

    - 데이터를 통합하여 관리 가능

    - 항상 최신의 데이터를 유지

    - 데이터의 실시간 처리 가능

    단점

    - 데이터베이스의 전문가 부족

    - 전산화의 비용 증가

    - 대용량 디스크로의 집중적인 access로 과부하 발생

    - 파일의 백업과 리커버리가 어려움

    - 시스템이 복잡함

     

     

     

    3. 데이터 입출력

     

    데이터 입출력의 개요

    - 소프트웨어의 기능 구현을 위해 데이터베이스에 데이터를 입력하거나 데이터베이스의 데이터를 출력하는 작업

    - 단순 입력과 출력 뿐만 아니라 데이터를 조작하는 모든 행위를 의미하며, 이와 같은 작업을 위해 SQL(Structured Query Language) 사용

    - 데이터 입출력을 소프트웨어에 구현하기 위해 개발 코드 내에 SQL 코드를 삽입하거나, 객체와 데이터를 연결하는 것을 데이터 접속이라고 함

    - SQL을 통한 데이터베이스의 조작을 수행할 때 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 트랜잭션이라고 함

    SQL

    - 국제표준 데이터베이스 언어로, 많은 회사에서 관계형 데이터베이스를 지원하는 언어로 채택하고 있음

    - 관계대수와 관계해석을 기초로 한 혼합 언어

    - 질의어지만 질의 기능뿐만 아니라 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 가짐

    1) 데이터 정의어(DDL)

    - SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어

    2) 데이터 조작어(DML)

    - 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용되는 언어

    3) 데이터 제어어(DCL)

    - 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용하는 언어

    데이터 접속

    - 소프트웨어의 기능 구현을 위해 프로그래밍 코드와 데이터베이스의 데이터를 연결하는 것

    1) SQL Mapping

    - 프로그래밍 코드 내에 SQL을 직접 입력하여 DBMS의 데이터에 접속하는 기술

    - JDBC, ODBC, MyBatis

    2) ORM (Object-Relational Mapping)

    - 객체지향 프로그래밍의 객체와 관계형 데이터베이스의 데이터를 연결하는 기술

    - JPA, Hibernate, Django

    트랜잭션

    - 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들

    - 트랜잭션을 제어하기 위해 사용하는 명령어를 TCL이라고 함

     

    TCL의 종류

    1) COMMIT

    - 트랜잭션 처리가 정상적으로 종료되어 트랜잭션이 수행한 변경 내용을 데이터베이스에 반영하는 명령어

    2) ROLLBACK

    - 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성이 깨졌을 때 트랜잭션이 행한 모든 변경 작업을 취소하고 이전 상태로 되돌리는 연산

    3) SAVEPOINT

    - 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정하는 명령어

     

     

     

    4. 절차형 SQL

     

    절차형 SQL의 개요

    - C, JAVA 등의 프로그래밍 언어와 같이 연속적인 실행이나 분기, 반복 등의 제어가 가능한 SQL

    - 일반적인 프로그래밍 언어에 비해 효율은 떨어지지만 단일 SQL 문장으로 처리하기 어려운 연속적인 작업들을 처리하는데 적합

    - 다양한 기능을 수행하는 저장 모듈 생성 가능

    - DBMS 엔진에서 직접 실행되기 때문에 입출력 패킷이 적은 편임

    - BEGIN ~ END 형식으로 작성되는 블록 구조로 되어 있기 때문에 기능별로 모듈화 가능

    1) 프로시저

    - 특정 기능을 수행하는 일종의 트랜잭션 언어로, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행

    2) 트리거

    - 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행됨

    3) 사용자 정의 함수

    - 프로시저와 유사하게 SQL을 사용하여 일련의 작업을 연속적으로 처리하며, 종료 시 예약어 Return을 사용하여 처리 결과를 단일값으로 반환

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

    - 테스트 전에 생성을 통해 구문 오류나 참조 오류의 존재 여부를 확인

    - 오류 및 경고 메시지가 상세히 출력되지 않으므로 SHOW 명령어를 통해 내용을 확인하고 문제를 수정

    - 디버깅은 실제로 데이터베이스에 변화를 줄 수 있는 삽입 및 변경 관련 SQL문을 주석으로 처리하고, 출력문을 이용하여 화면에 출력하여 확인

    쿼리 성능 최적화

    - 데이터 입출력 애플리케이션의 성능 향상을 위해 SQL로 코드를 최적화하는 것

    - 성능 측정 도구인 APM을 사용하여 최적화할 쿼리를 선정

    - 최적화할 쿼리에 대해 옵티마이저가 수립한 실행 계획을 검토하고 SQL 코드와 인덱스를 재구성

    LIST
Designed by Tistory.