자료 구조의 정의
- 자료구조 : 프로그램에서 사용하기 위한 자료를 기억장치의 공간내에 저장하는 방법과 저장된 그룹 내에 존재하는 자료 간의 관계, 처리 방법 등을 연구 분석 하는 것
자료 구조의 분류
배열(Array)
- 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고 있는 집합
- 정적인 자료 구조 > 데이터 추가 어려움, 데이터 삭제 시 메모리 낭비 발생
- 첨자를 이용하여 데이터에 접근(첨자의 개수에 따라 n차원 배열이라 부름)
- 반복적 데이터 처리 작업에 적합한 구조
- 데이터마다 동일한 이름의 변수를 사용하여 처리가 간편
선형 리스트 (Linear List)
- 일정한 순서에 의해 나열된 자료구조
연속 리스트 (Contiguous List)
- 배열을 이용한 선형 리스트
- 중간에 데이터를 삽입하기 위해 연속된 빈 공간이 있어야하며 삽입, 삭제 시 자료들의 이동 필요
- 기억장소를 연속적으로 배정받아 기억장소 이용 효율이 가장 좋음(밀도1)
연결 리스트(Linked List)
- 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료 구조
- 연결을 위한 포인터를 찾는 시간이 필요해 접근 속도가 느림
- 노드의 삽입 삭제 작업이 용이
- 노드 부분 때문에 연속 리스트에 비해 기억 공간의 효율이 좋지 않음
- 중간 노드 연결이 끊어지면 다음 노르를 찾기 힘듦
*노드 (Node) : 자료를 저장하는 데이터 부분과 다음 노드를 가리키는 포인터인 링크 부분으로 구성된 기억공간
스택(Stack)
- 리스트의 한쪽으로 자료의 삽입, 삭제가 이루어짐
- 후입선출(LIFO : Last In First Out) 의 구조
- 오버플로우(overflow) : 기억 공간이 모두 차있는 상태에서 데이터를 삽입하면 일어나는 현상
- 언더플로우(underflow) : 기억 공간이 비어있는 상태에서 데이터를 삭제하면 일어나는 현상
- Top : 스택에서 가장 마지막으로 삽입된 자료의 위치
- Bottom : 스택의 가장 바닥
큐(Queue)
- 리스트의 한쪽에서는 삽입 다른 한쪽에서는 삭제가 이루어짐
- 선입선출(FIFO: First In Fist Out)의 구조
- 프런트(F; Front) 포인터 : 먼저 삽입된 자료의 기억 공간을 가르키는 포인터, 삭제작업시 사용
- 리어( R : Rear) 포인터 : 마지막에 삽입된 자료의 기억공간을 가르키는 포인터, 삽입 작업시 사용
트리(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 코드와 인덱스를 재구성
'정보처리기사 > 소프트웨어 개발' 카테고리의 다른 글
소프트웨어 개발 3장 제품 소프트웨어 패키징 요약 2)애플리케이션 테스트 (2) | 2022.06.27 |
---|---|
소프트웨어 개발 3장 제품 소프트웨어 패키징 요약 1)패키징, 릴리즈노트, 형상관리, SVN명령어 (0) | 2022.04.22 |
소프트웨어 개발 2장 통합 구현 1)단위 모듈, 통합 개발 환경(IDE) (0) | 2022.04.22 |