정보처리기사/소프트웨어 개발

소프트웨어 개발 1장 데이터 입출력 구현 1)자료구조, DBMS, SQL

차간단 2022. 4. 22. 15:43
반응형

자료 구조의 정의

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

 

자료 구조의 분류

자료구조 분류

배열(Array)

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

- 정적인 자료 구조 > 데이터 추가 어려움, 데이터 삭제 시 메모리 낭비 발생

- 첨자를 이용하여 데이터에 접근(첨자의 개수에 따라 n차원 배열이라 부름)

- 반복적 데이터 처리 작업에 적합한 구조

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

 

선형 리스트 (Linear List)

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

 

연속 리스트 (Contiguous List)

- 배열을 이용한 선형 리스트

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

- 기억장소를 연속적으로 배정받아 기억장소 이용 효율이 가장 좋음(밀도1)

 

연결 리스트(Linked List)

- 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료 구조

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

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

- 노드 부분 때문에 연속 리스트에 비해 기억 공간의 효율이 좋지 않음

- 중간 노드 연결이 끊어지면 다음 노르를 찾기 힘듦

*노드 (Node) : 자료를 저장하는 데이터 부분과 다음 노드를 가리키는 포인터인 링크 부분으로 구성된 기억공간

Linked List

스택(Stack)

- 리스트의 한쪽으로 자료의 삽입, 삭제가 이루어짐

- 후입선출(LIFO : Last In First Out) 의 구조

- 오버플로우(overflow) : 기억 공간이 모두 차있는 상태에서 데이터를 삽입하면 일어나는 현상

- 언더플로우(underflow) : 기억 공간이 비어있는 상태에서 데이터를 삭제하면 일어나는 현상

- Top : 스택에서 가장 마지막으로 삽입된 자료의 위치

- Bottom : 스택의 가장 바닥

Stack

큐(Queue)

- 리스트의 한쪽에서는 삽입 다른 한쪽에서는 삭제가 이루어짐

- 선입선출(FIFO: First In Fist Out)의 구조

- 프런트(F; Front) 포인터 : 먼저 삽입된 자료의 기억 공간을 가르키는 포인터, 삭제작업시 사용

- 리어( R : Rear) 포인터 : 마지막에 삽입된 자료의 기억공간을 가르키는 포인터, 삽입 작업시 사용

트리(Tree)

- 노드와 가지를 이용하여 사이클이 없이 구성한 그래프의 특수형태

*노드 : 하나의 기억 공간

*링크 : 노드와 노드를 연결하는 선

tree

노드 : 트리의 기본 요소, 자료 항목과 다른 항목에 대한 가지(Branch)를 합친 것

ex) 1,2,3,4,5,6,7,8

-근 노드 (Root Node) : 트리의 맨 위에 있는 노드

ex) 1

- 디그리(Degree, 차수) : 각 노드에서 뻗어 나온 가지의 개수

ex) 1=3, 2=2, 4=2

- 단말(Termianl) 노드/잎(Leaf) 노드 : 자식이 없는 노드( = 디그리가 0인 노드)

ex) 3,5,6,7,8

- 자식노드, 부모 노드, 형제 노드

- 트리의 디그리 : 노드들의 디그리 중 가장 많은 수

ex) 노트 1이 가장 많은 디그리 > 3

 

데이터저장소

- 데이터 저장소 : 데이터들을 논리적인 구조로 조직화하거나, 물리적인 공간에 구현한 것

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

- 물리 데이터저장소 : 논리 데이터저장소에 저장된 데이터와 구조들을 하드웨어적인 저장장치에 저장한 것

- 논리 데이터 저장소 > 물리 데이터 저장소 구축과정 = 데이터베이스 구축과정

 

데이터베이스

- 데이터베이스 : 툭정 조직의 업무를 수행하는데 필요한 데이터들의 모임

- 통합된 데이터 : 자료의 중복을 최소화

- 저장된 데이터 : 컴퓨터가 접근할 수 있는 저장 매체에 저장

- 운영 데이터 : 조직의 고유한 업무를 수행하는데 필요

- 공용 데이터 : 여러 시스템이 공동으로 소유, 유지

 

DBMS(DataBase Management System) : 데이터베이스 관리 시스템

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

- 기존의 파일 시스템이 가지는 데이터의 종속성과 중복성 문제를 해결하기 위해 제안된 시스템

 

DBMS의 기능

- 정의 기능 : 데이터베이스에 저장될 데이터의 타입과 구조에 대해 명시하는 기능

- 조작 기능 : 데이터를 검색, 갱신, 삽입, 삭제 등 처리하기 위해 사용자와 데이터베이스 간 인터페이스 수단을 제공하는 기능

- 제어 기능 : 데이터의 무결성이 유지되도록 제어, 사용자에게 허가된 데이터만 접근하도록 보안을 유지하고 권한을 검사, 여러 사용자가 동시에 접근하여 데이터를 처리할 때 정확성을 유지하도록 병행 제어

 

DBMS의 장단점

DBMS의 장점

- 데이터 독립성, 일관성, 무결성 유지

- 보안 유지

- 데이터 실시간 처리, 통합 관리, 표준화 가능

- 최신 데이터 유지

DBMS의 단점

- 전문가 부족

- 전산화 비용 증가

- 시스템이 복잡함

 

데이터 입.출력의 개요

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

- 데이터를 조작하는 모든 행위를 의미

- 조작을 위해 SQL(Structured Query Language) 사용

 

 SQL ( Structured Query Language)

- 국제 표준 데이터베이스 언어

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

*관계대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적 언어

*관계해석 : 관계 데이터의 연산을 표현하는 방법

- 질의어 (Query Language)지만 데이터 구조의 정의, 조작, 제어 기능을 모두 갖추고 있음

> 데이터 정의어, 조작어, 제어어로 구분

데이터 정의어(DDL : Data Define Language) 스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 변경 또는 삭제
데이터 조작어(DML : Data Manipulation Language) 저장된 데이터를 실질적으로 처리하는데 사용
데이터 제어어(DCL : Data Control Language) 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의

데이터 접속(Data Mapping)

- 기능 구현을 위해 프로그래밍 코드와 데이터베이스의 데이터 연결(Mapping)하는 것(객체와 테이블을 연결)

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

ex) JDBC, ODBC, MyBatis 등

- ORM (Object-relational Mapping) : 객체(Object)와 관계형(Relational) 데이터베이스의 데이터를 연결(Mapping) 하는 기술

ex) JPA, Hibernate, Django 등

 

트랜잭션(Transaction)

-하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행돼야 할 일련의 연상

-TCL(Transaction Contro Language) : 트랜잭션을 제어하기 위해 사용되는 명령어

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

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

-SAVEPOINT(CHECKPOINT) : 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정

 

절차형 SQL의 개요

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

- 단일 SQL문장으로 처리가 어려운 연속적인 작업을 처리하는데 적함

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

- BEGIN ~ END 형식의 블록 구조로 되어있어 기능별 모듈화가 가능

 

절차형SQL 종류

- 프로시저 (PROCEDURE) : 특정 기능을 수행하는 일종의 트랜잭션 언어, 호출을 통해 실행되어 미리 저장된 SQL 작업을 수행

- 트리거 (TRIGGER) : 데이터에 이벤트가 발생할 때마다 관련 작업이 자동으로 수행

- 사용자 정의 함수 : 일련의 작업을 연속적으로 처리, 종료시 Return을 사용하여 처리 결과를 단일값으로 반환

 

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

 

쿼리성능 최적화

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

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

- 옵티마이저가 수립한 실행 계획을 검토, SQL 코드와 인덱스를 재구성

 

반응형