자격증/정보처리기사

[정처기 개념] 7. SQL 응용 ~ 8. 서버 프로그램 구현

yjhan1999 2025. 7. 3. 15:45

 

7.  SQL 응용

Chapter1. 데이터베이스 기본

1. 트랜잭션

  • 개념 : 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자, 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
  • 특성
특성 설명 주요기법
원자성
(Atomicity)
- 트랜잭션을 구성하는 연산 전체가 모두 정상적으로 실행되거나 모두 최소되어야 하는 성질 - Commit/Rollback
- 회복성 보장
일관성
(Consistency)
- 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 후의 상태가 같아야 하는 성질 - 무결성 제약조건
- 동시성 제어
격리성=고립성
(Isolation)
- 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질 - 고립화 수준
영속성
(Durability)
- 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질 - 회복 기법
  • 상태 변화
    • 활동 상태 : 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
    • 부분 완료 상태 : 마지막 명령문이 실행된 후에 가지는 상태
    • 완료 상태 : 트랜잭션이 성공적으로 완료된 후 가지는 상태
    • 실패 상태 : 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태
    • 철회 상태 : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태

  • 제어(TCL) : 트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어를 지칭
    • TCL 명령어 : 커밋(트랜잭션 확정), 롤백(트랜잭션 취소), 체크포인트(저장시기 설정)
    • 병행 제어(일관성 주요 기법) : 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호 작용을 제어하는 기법
      • 목적
        • 데이터베이스의 공유를 최대화
        • 시스템의 활용도 최대화
        • 데이터베이스의 일관성을 유지
        • 사용자에 대한 응답시간 최소화
      • 기법의 종류
        • 로킹 : 하나의 트랜잭션을 실행하는 동안 특정 데이터 항목에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 상호배제 기능을 제공하는 기법
          • 특징 : DB, 파일 레코드 등은 로킹 단위가 될 수 있음 + 로킹 단위가 작아지면 DB 공유도 증가 + 로킹 단위가 작아지면 로킹 오버헤드 증가 + 한꺼번에 로킹할 수 있는 객체의 크기를 로킹 단위라 함
        • 낙관적 검증 : 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 DB에 반영하는 기법
        • 타임 스탬프 순서 : 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
        • 다중버전 동시성 제어 : 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
        • 2PC : DB 동시성 제어 기술 중 하나로, 여러 개 분산 DB 시스템에서 트랜잭션의 일관성을 유지하기 위한 기법
      • 고립화 수준 : 다른 트랜잭션이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도
        • 종류 : Read Uncommitted, Read Committed, Repeatable Read, Serializable Read
      • 회복 기법 : 트랜잭션을 수행하는 도중 장애로 인해 손상된 DB를 손상되기 이전의 정상적인 상태로 복구시키는 작업
        • REDO : DB가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작과 완료에 대한 기록이 있는 트랜잭션들의 작업을 재작업하는 기법
          • DB의 내용 자체가 손상된 경우, 가장 최근의 복제본을 적재한 후 이후 일어난 변경만을 로그를 이용하여 재실행함으로써 DB를 복원하는 기법
        • UNDO : DB가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작은 있지만, 완료 기록이 없는 트랜잭션들이 작업한 변경 내용을 모두 취소하는 기법
          • DB 내용 자체는 손상되지 않았지만, 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우, 모든 변경 내용을 취소하여 복원하는 기법
    • DDL : 데이터 정의어
      • 대상
        • 스키마 : DB의 구조, 제약조건 등 정보를 담고 있는 기본적인 구조
          • 외부 스키마 : 사용자나 개발자 관점에서 필요로 하는 DB의 논리적 구조(사용자 뷰를 나타냄)
          • 개념 스키마 : DB의 전체적인 논리적 구조(전체적인 뷰)
          • 내부 스키마 : 물리적 저장 장치의 관점에서 보는 DB 구조
        • 테이블 : 데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체
        • 뷰 : 논리 테이블로서 사용자에게 테이블과 동일(사용 관점에서)
          • 장점 : 논리적 독립성 제공, 데이터 조작 연산 간소화, 보안 기능
          • 단점 : 뷰 자체 인덱스 불가, 뷰 변경 불가, 데이터 변경 제약 존재
        • 인덱스 : 검색 연산의 최적화를 위해 DB 내 값에 대한 주소 정보로 구성된 데이터 구조
      • 명령어 : CREATE, ALTER, DROP, TRUNCATE
      • 테이블 관련 DDL : CREATE TABLE~, ALTER TABLE~, DROP TABLE~, TRUNCATE TABLE~
      • VIEW 관련 DDL : CREATE VIEW 뷰 이름 AS 조회쿼리, REPLACE VIEW 뷰 이름 AS 조회쿼리, DROP VIEW 뷰 이름
    • DML : 데이터 조작어
      • 명령어 : SELECT, INSERT, UPDATE, DELETE
      • SELECT 명령어
        • SELECT절, WHERE 절, GROUP BY 절, HAVING 절
        • 조인(Join) : 두 개 이상의 테이블을 연결하여 데이터를 검색하는 방법
          • 내부 조인 : 공통 존재 컬럼의 값이 같은 경우를 추출하는 기법
          • 외부 조인 : Left Outer Join, Right Outer Join, Full Outer Join
          • 교차 조인 : 조인 조건이 없는 모든 데이터 조합을 추출하는 기법
          • 셀프 조인 : 자기 자신에게 별칭을 지정한 후 다시 조인하는 기법
        • 서브 쿼리 : SQL 문안에 포함된 또 다른 SQL문
          • Ex) SELECT MAX(가격) AS 가격 FROM 도서가격 A, (SELECT 책번호 FROM 도서 WHERE 책명='자료구조') B WHERE A.책번호 = B.책번호
        • 집합 연산자 : 테이블을 집합 개념으로 보고, 두 테이블 연산에 집합 연산자를 사용하는 방식
          • 유형 : UNION, UNION ALL, INTERSECT, MINUS
    • DCL : 데이터 제어어
      • GRANT(권한 부여) 명령어 : GRANT 권한 ON 테이블 TO 사용자
      • REVOKE(권한 회수) 명령어 : REVOKE 권한 ON 테이블 FROM 사용자

 

Chapter2. 응용 SQL

1. 다중 행 연산자 

  • 개념 : 다중 행 연산자는 서브 쿼리의 결과가 여러 개의 튜플을 반환하는 다중 행 서브쿼리에서 사용되는 연산자
  • 종류 : IN, ANY, ALL, EXIST

2. 집계 함수

  • 개념 : 여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수
  • GROUP BY 구문
    • NULL값을 가지는 ROW는 제외하고 산출한다
    • SELECT에서 사용하는 것과 같은 ALIAS 사용이 불가
    • WHERE 구문 안에 포함되지 X
    • WHERE 구문은 GROUP BY보다 먼저 실행되고, 대상이 되는 단일 행을 사전에 선별하는 역할을 한다
  • HAVING 구문
  • 종류 : COUNT, SUM, AVG, MAX, MIN, STDDEV(표준편차), VARIANCE(분산)

 

 

Chapter3. SQL 활용 및 최적화

1. 절차형 SQL

  • 개념 : 일반적인 개발 언어처럼 SQL 언어에서도 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어
  • 종류
    • 프로시저 : 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
    • 사용자 정의 함수 : 일련의 SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL
    • 트리거 : DB 시스템에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL

 

 

8. 서버 프로그램 구현

Chapter1. 개발환경 구축

1. 개발환경 구축 

  • 개발환경 구성 시 구현될 시스템의 요구사항의 명확한 이해가 필요

2. 개발 도구의 분류

  • 빌드 도구, 구현 도구, 테스트 도구, 형상 관리 도구

3. 개발환경 구성요소

  • 하드웨어 개발환경
    • 서버 하드웨어 개발환경
      • 웹 서버(Web Server)
        • HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트를 전송해주는 서비스 프로그램
        • 웹 상의 정적 콘텐츠(CSS) 처리
        • WEB-WAS-DB의 3계층 구조를 실무에서 활용
      • 웰 애플리케이션 서버(WAS)
        • 서버 계층에서 애플리케이션이 동작할 수 있는 환경을 제공하고 안정적인 트랜잭션 처리와 관리, 다른 이기종 시스템과 애플리케이션 연동을 지원하는 서버
        • 동적 컨텐츠(Servlet, JSP)를 처리하기 위해 사용
      • 데이터베이스 서버
        • 데이터 수집, 저장을 위한 용도로 사용하는 서버
      • 파일 서버
        • 파일을 저장하고 관리하기 위한 서버(HDD, SSD 등 장치가 존재)
    • 클라이언트 개발환경
      • 클라이언트 프로그램 : 설치를 통해 사용자와 커뮤니케이션하는 프로그램
      • 웹 브라우저 : 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
      • 모바일 앱
      • 모바일 웹
  • 소프트웨어 개발환경
구분 설명
운영체제 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
미들웨어 컴퓨터와 컴퓨터 간 연결을 쉽고 안전하게 할 수 있도록 해주고, 이에 대한 관리를 도와주는 소프트웨어
DBMS 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
  • 형상 관리
    • 개념 : 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
    • 목적
      • 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성을 확보할 수 있다
      • 프로젝트 변경이 발생되었을 때 처리하는 메커니즘을 제공
    • 절차 : 형상 식별 -> 형상 통제 -> 형상 감사 -> 형상 기록
    • 소프트웨어 형상 관리 도구 유형
      • 공유 폴더 방식(RCS, SCCS) : 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
        • RCS 특징 : CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리
      • 클라이언트/서버 방식(CVS, SVN) : 중앙에 버전 관리 시스템을 항시 동작시키는 방식
        • CVS 특징 : 가장 오래된 형상 관리 도구 중 하나로서 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행하는 형상 관리 도구(변경사항 동기화, 파일 단위 관리)
        • SVN 특징 : 중앙 집중형 클라이언트-서버 방식으로 CVS의 단점을 보완해 가장 널리 사용되고 있는 형상 관리 도구
      • 분산 저장소 방식(Git) : 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
        • Git : 로컬/원격 형상 관리, 롤백 기능 지원
  • 백업
    • 개념 : 중요한 데이터나 정보를 안전하게 보관하기 위한 데이터를 복제하는 기법
    • 유형
      • 전체 백업 : 백업받고자 하는 데이터 전체에 대해 백업
      • 차등 백업 : 마지막 전체 백업 이후 변경된 모든 데이터를 백업
      • 증분 백업 : 정해진 시간을 기준으로 그 이후에 변경된 파일만 백업

 

Chapter2. 모듈 구현

1. 재사용

  • 개념 : 목표 시스템의 개발 시간 및 비용 절감을 위하여 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업
  • 종류
    • 재공학 : 기존 SW를 버리지 않고 기능을 개선시키거나 기능을 새로운 SW로 재활용하는 SW 재사용 기법
    • 재개발 : 기존 시스템 내용을 참조하여 완전히 새로운 시스템을 개발, 기존 시스템에 새로운 기능 추가, 기존 시스템의 기능을 변경하는 방법

2. 모듈 구현

  • 개념 : 하나의 완전한 기능을 수행할 수 있는 독립된 실체
  • 특징
    • 독립성이 높은 모듈일수록 모듈 수정 시에도 다른 모듈에는 영향을 거의 미치지 않고, 오류 발생 시에도 쉽게 해결 가능
    • 모듈의 독립성 측정 지표 : 결합도, 응집도(결합도 낮을수록, 응집도 높을수록, 모듈의 크기 작을수록 -> 독립성 높아짐)
  • 모듈화 개념 : SW 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법
    • 기법 : 루틴, 메인 루틴, 서브 루틴

3. 소프트웨어 모듈 응집도

  • 개념 : 모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도(하나의 모듈은 하나의 기능을 수행할수록 응집도 높다)
  • 유형 : 기능 응집도로 갈수록 응집도 높아짐
유형 설명
우연적 응집도 모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도
논리적 응집도 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
시간적 응집도 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
절차적 응집도 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
통신적 응집도 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
순차적 응집도 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
기능 응집도 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

 

4. 소프트웨어 모듈 결합도

  • 개념 : 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성
  • 유형 : 자료 결합도로 갈수록 결합도 낮아짐
유형 설명
내용 결합도 - 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
- 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의  결합도
공통 결합도 - 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고, 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도
- 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
외부 결합도 - 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도
- 외부 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도
제어 결합도 - 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
스탬프 결합도 - 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
- 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이며, 자료구조의 어떠한 변화는 모든 모듈에 영향을 미치게 됨
자료 결합도 - 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도
- 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는 상태의 가장 바람직한 결합도

 

5. 모듈 테스트

  • 화이트박스 기법을 활용
  • 대표적인 도구 xUnit 활용
  • 종류
    • jUnit : 자바 프로그래밍 언어용 단위 테스트 도구
    • CppUnit : 자바의 jUnit을 C++로 구현한 단위 테스트 도구
    • HttpUnit : 웹 브라우저 없이 웹사이트 테스트를 수행하는 단위 테스트 도구

 

 

Chapter3. 배치 프로그램 구현

배치 프로그램

  • 개념 : 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법
  • 유형 : 이벤트 배치, 온디맨드 배치, 정기 배치
  • 배치 스케줄러 : 일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
    • 종류 
      • 스프링 배치 : 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션
      • 쿼츠 스케줄러 : 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러