정보처리기사 필기 - 1과목 데이터베이스


4장 데이터베이스 고급 기능


024 트랜잭션의 개념


① 트랜잭션의 정의


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

· 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위

· 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위

· 하나의 트랜잭션은 Commit되거나 Rollback됨


② 트랜잭션의 특징


데이터 무결성(Integrity)을 보장하기 위하여 DBMS의 트랜잭션이 가져야 할 특성


Atomicity(원자성)

· 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함

· 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함


Consistency(일관성)

· 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환

· 시스템이 가지고 있는 고정 요소는 트랜재션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 함


Isolation(독립성, 격리성, 순차성)

· 둘 이상의 트랜재션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음

· 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없음


Durability(영속성, 지속성)

· 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함


③ Commit, Rollback 연산

Commit 연산

· Commit 연산은 한 개의 논리적인 단위(트랜잭션)에 대한 작업이 성공적으로 끝났고, 데이터베이스가 다시 일관된 상태에 있을 때, 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산


Rollback 연산

· Rollback 연산은 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때, 이 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소(Undo)하는 연산

· Rollback 시에는 해당 트랜잭션을 재시작하거나 폐기함


④ 트랜잭션의 상태



[그림1] 트랜잭션의 상태


· 활동(Active) : 트랜잭션이 실행중인 상태

· 실패(Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태

· 철회(Aborted) : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태

· 부분완료(Partially Comitted) : 트랜잭션의 마지막 연산까지 실행했지만, Commit 연산이 실행되기 직전의 상태

· 완료(Committed) : 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태



025 회복(Recovery)


① 회복의 개념


- 회복의 정의

회복은 트랜잭션들을 수행하는 도중 장애기 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작엄


장애의 유형

· 트랜잭션 장애 : 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 트랜잭션 내부의 비정상적인 상황으로 인하여 프로그램 실행이 중지되는 현상

· 시스템 장애: 데이터베이스에 손상을 입히지는 않으나 하드웨어 오동작, 소프트웨어의 손상, 교착상태 등에 의해 모든 트랜잭션의 연속적인 수행에 장애를 주는 현상

· 미디어 장애 : 저장장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스의 일부 또는 전부가 물리적으로 손상된 상태


회복 관리기(Recovery Management)

· 회복 관리기는 DBMS의 구성 요소

· 회복관리기는 트랜잭션 실행이 성공적으로 완료되지 못하면 트랜재션이 데이터베이스에 생성했던 모든 변화를 취소(Undo)시키고, 트랜잭션 수행 이전의 원래 상태로 복구하는 역할 담당

· 메모리 덤프, 로그(Log)를 이용하여 회복 수행


 ※ 취소(Undo) : Log에 보관한 정보를 이용하여 가장 최근에 변경된 내용부터 거슬러 올라가면서 트랜잭션 작업을 취소하여 원래의 DB로 복구

 ※ 덤프(Dump) : 주기적으로 데이터베이스 전체를 복사해 두는 것

 ※ 로그(Log) : 갱신되기 전후의 내용을 기록하는 별도의 파일로, 저널이라고도 함  


② 회복 기법


연기 갱신 기법(Deferred Update)

· 연기 갱신 기법은 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 방법

· 트랜잭션이 수행되는 동안 갱신된 내용은 일단 Log에 보관

· 트래잭션의 부분 완료(성공적인 완료 직전) 시점에 Log에 보관한 갱신 내용을 실제 데이터베이스에 기록

· 트랜잭션이 부분 완료되기 전에 장애가 발생하여 트랜잭션이 Rollback되면 트랜잭션이 실제 데이터베이스에 영향을 미치지 않았기 때문에 어떠한 갱신 내용도 취소(Undo)시킬 필요 없이 무시하면 됨

· 재시도(Redo) 작업만 가능(Redo : 덤프와 로그를 이용하여 가장 최근의 정상적인 데이터베이스로 회복시킨 후 트랜잭션을 재실행)


즉각 갱신 기법(Immediate Update)

· 즉각 갱신 기법은 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료 되기 전이라도 즉시 실제 데이터베이스에 반영하는 방법

· 장애가 발생하여 회복 작업할 경우를 대비하여 갱신된 내용들은 Log에 보관

· 회복 작업을 할 경우에는 Redo와 Undo 모두 사용 가능


그림자 페이지 대체 기법(Shadow Paging)

· 그림자 페이지 대체 기법은 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지로 별도 보관해 놓고, 실제 페이지를 대상으로 트랜잭션에 의한 갱신 작업을 하다가 장애가 발생하여 트랜잭션 작업을 Rollback시킬 때, 갱신된 이후의 실제 페이지 부분에 그림자 페이지를 대체하여 회복시키는 기법

· 로그, Undo 및 Redo 알고리즘 필요 없음


검사점 기법(Check Point)

· 검사점 기법은 트랜잭션 실행 중 특정 단계에서 재실행할 수 있도록 갱신 내용이나 시스템에 대한 상황 등에 관한 정보와 함께 검사점을 로그에 보관해두고, 장애 발생 시 트랜잭션 전체를 철회하지 않고 검사점부터 회복 작업을 하여 회복시간을 절약하도록 하는 기법



026 병행제어(Concurrency Control)


① 병행제어의 정의


병행제어(Concurrency Control)란 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것


※ 다중 프로그램의 이점 : 프로세서의 이용률 증가 / 전체 트랜잭션의 작업 처리율 향상


② 병행제어의 목적


· 데이터베이스의 공유 최대화

· 시스템의 활용도 최대화

· 데이터베이스의 일관성 유지

· 사용자에 대한 응답시간 최소화


※ 병행수행과 직렬성

· 다중 프로그램 환경에서 여러 개의 트랜잭션을 병행수행한다는 것은 같은 시간에 여러 개의 명령을 동시에 실행한다는 것이 아니라, 시분할이나 입·출력 인터럽트 기법 등을 이용하여 일정한 시간 내에 각 트랜잭션에 있는 명령들이 시간적으로 번갈아 실행되는 것

· 병행수행된 각각의 트랜잭션 결과는 각 트랜잭션을 독자적으로 수행시켰을 때의 결과와 같아야 하는데, 이를 직렬성(Serializability) 또는 직렬화 가능성이라고 함


③ 병행수행의 문제점


병행제어 기법에 의한 제어 없이 트랜잭션들이 데이터베이스에 동시에 접근하도록 허용할 경우 다음과 같은 문제점 발생

문제점

의미

 갱신 분실

 (Lost Update)

 두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상

 비완료 의존성

 (Uncommitted Dependency)

 · 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상

 · 임시 갱신

 모순성

 (Inconsistency)

 · 두 개의 트랜잭션이 병행수행될 때 원치 않는 자료를 이용함으로써 발생하는 문

 · 불일치 분석(Inconsistent Analysis)

 연쇄 복귀

 (Cascading Rollback)

 병행수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback하는 경우 다른 트랜잭션도 함께 Rollback되는 현상


④ 병행제어 기법의 종류

로킹(Locking)
· 로킹은 주요 데이터의 액세스를 상호 배타적으로 하는 것
· 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock(잠금)을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법

※ 로킹 단위(Locking Granularity)
· 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기
· 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있음
· 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아짐
※ 병행성 수준 : 병행성 수준이 낮다는 것은 데이터베이스 공유도가 감소한다는 의미이고, 병행성 수준이 높다는 것은 데이터베이스 공유도가 증가한다는 의미

· 로킹의 종류
- 공유 로크
- 배타 로그
- 의도 로크
- 의도 공유 로크
- 배타 의도 로크
- 공유 의도 독점 로크

· 2단계 로킹(Two-Phase Locking) 규약
- 각 트랜잭션의 로크 요청과 해제(Unlock) 요청을 2단계로 실시
- 직렬성을 보장하는 대표적인 로킹 규약
- 직렬성을 보장하는 장점이 있지만, 교착상태를 예방할 수 없다는 단점이 있음

※ 로킹 규약(Locking Protocol)
· 병행제어에서 각 트랜잭션이 관련 자료에 대해 로크를 얻고 반납하는 데 지켜야 할 일련의 규정
· 로킹 규약에 의해 실행 가능한 스케줄의 경우의 수가 제한 받음
· 스케줄의 경우의 수가 적을수록 직렬성을 보장하는 스케줄을 찾기 쉬워짐

타임 스탬프 순서(Time Stamp Ordering)
· 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법들 중에서 가장 보편적인 방법
· 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 시간표를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
· 교착상태가 발생하지 않음

최적 병행수행(검증 기법, 확인 기법, 낙관적 기법)
병행수행하고자 하는 대부분의 트랜잭션이 판독 전용(Read Only) 트랜잭션일 경우, 트랜잭션 간의 충돌률이 매우 낮아서 병행제어 기법을 사용하지 않고 실행되어도 이 중의 많은 트랜잭션은 시스템의 상태를 일관성 있게 유지한다는 점을 이용한 기법

다중 버전 기법
· 타임 스탬프의 개념을 이용하는 기법으로, 다중 버전 타임 스탬프 기법이라고도 함
· 타임 스탬프 기법은 트랜잭션 및 데이터들이 이용될 때의 시간을 시간표로 관리하지만, 다중 버전 기법은 갱신될 때마다의 버전을 부여하여 관리


027 무결성(Integrity)


무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 저장값이 일치하는 정확성 의리

무결성 제약 조건 : 데이터베이스에 들어 있는 데이터의 정확성(일관성)을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건


① 무결성을 유지하는 방법


· 대표적으로 사용되는 방법은 중앙 통제에 의한 데이터 갱신, 이 방법은 검증 프로그램을 이용하여 모든 갱신 처리 과정에서 반드시 검증 단계를 거치도록 통제함

· 검증 프로그램이 무결성을 검증하기 위해 무결성 규정을 사용

- 규정 이름 : 무결성 규정을 참조할 때 사용하는 식별자

- 트리거(Trigger) 조건 : 트랜잭션의 접근 유형 및 데이터, 검사할 시기 명시

- 프레디킷(제약 조건) : 무결성을 위한 검사 조건

- 위반 조치 : 검사 결과 무결성 위반이 발견되었을 때 처리할 조치


② 무결성의 종류


 널 무결성

 릴레이션의 특징 속성값이 Null이 될 수 없도록 하는 규정

 고유 무결성

 릴레이션의 특정 속성에 대해서 각 튜플이 갖는 값들이 서로 달라야 한다는 규정

 참조 무결성

 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 규정.

 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정

 도메인 무결성

 특정 속성의 값이, 그 속성이 정의된 도메인에 속한 값이어야 한다는 규정

 키 무결성

 하나의 테이블에는 적어도 하나의 키가 존재해야 한다는 규정

 관계(Relationship) 무결성

 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성  여부를 지정한 규정

 개체 무결성

 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 주복값을 가질 수 없다는 규정



028 보안(Security)


① 데이터베이스 보안의 개요


· 데이터베이스 보안이란 데이터베이스의 일부분 또는 전체에 대해서 권한이 없는 사용자가 액세스하는 것을 금지하기 위해 사용되는 기술

· 보안을 위한 데이터 단위는 테이블 전체로부터 특정 테이블의 특정한 행과 열 위치에 있는 특정한 데이터 값에 이르기까지 다양

· 데이터베이스 사용자들은 일반적으로 서로 다른 객ㅊ에 대하여 다른 접근권리 또는 권한을 갖게 됨

· 데이터베이스 보안 기법 :  암호화 기법, 권한 부여 기법이 있으며, 권한 부여 기법에는 뷰(View) 기법, GRANT/REVOKE 기법


※ 무결성과 보안

 무결성

보안 

 권한이 있는 사용자로부터 데이터베이스를 보호하는 것

권한이 없는 사용자로 데이터베이스를 보호하는 것 

데이터베이스 사용자들이 데이터베이스를 사용하고자 할 때 정확하게 사용할 수 있도록 보장하는 것 

데이터베이스 사용자들이 데이터베이스를 사용하고자 할 때 언제든지 사용할 수 있도록 보장하는 것 


② 암호화 기법


암호화 과정

[그림 2] 암호화 과정

· 암호화(Encryption) 과정 : 암호화되지 않은 평문을 정보 보호를 위해 암호문으로 바꾸는 과정 

· 복호화(Decryption) 과정 : 암호문을 원래의 평문으로 바꾸는과정


개인키 암호 방식(Private Key Encryption) = 비밀키 암호 방식

·  비밀키 암호화 기법은 동일한 키로 데이터를 암호화하고 복호화함

· 데이터베이스 생성자는 평문의 정보 M을 암호화 알고리즘 E와 개인키 K를 이용하여 암호문 C로 바꾸어 저장시켜 놓고, 사용자가 그 데이터베이스에 접근하려면 복호화 알고리즘 D와 개인키 K를 이용하여 평문의 정보로 바구어 이용하는 방법

· 비밀키 암호화 기법은 대칭 암호 방식 또는 단일키 암호화 방식이라고도 함

· 비밀키는 제3자에게는 노출시키지 않고 데이터베이스 사용 권한이 있는 사용자만 나누어 가짐

· 종류 : 전위 기법, 대체 기법, 대수 기법, 합성 기법(DES, LUGIFER)

· 장점 : 암호화/복호화 속도가 빠르며, 알고리즘이 단순하고 파일 크기가 작음

· 단점 : 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아짐


※ DES 기법

DES(Data Encryption Standard)는 개인키 암호 방식의 대표적인 알고리즘으로서, 64Bit의 평문 블록을 56Bit의 16개 키를 이용하여 16회의 암호 계산 단계를 거쳐 64Bit의 암호문을 얻음


공개키 암호 방식(Public Key Encryption)

· 공개키 암호화 기법은 서로 다른 키로 데이터를 암호화하고 복호화함

· 데이터를 암호화할 때 사용하는 키(공개키, Public Key)는 데이터베이스 사용자에게 공개하고, 복호화할 때의 키(비밀키, Secret Key)는 관리자가 비밀리에 관리하는 방법

· 공개키 암호화 기법은 비대칭 암호 방식이라고도 하며, 대표적으로 RSA(Rivest Shamir Adleman)가 있음

· 장점 : 키의 분배가 용이하고, 관리해야 할 키의 개수가 적음

· 단점 : 암호화/복호화 속도가 느리며, 알고리즘의 복잡하고 파일 크기가 크다


③ 권한 부여 기법


· 권한 부여 기법은 일반적으로 사용자들이 서로 다른 객체에 대하여 서로 다른 접근 권한을 갖게 설정함

· 권한 부여 기법에서 보안을 위한 데이터 단위는 테이블 전체나 특정한 행, 열에 있는 데이터 값이 될 수 있음


뷰 기법 - 뷰(View)에 권한을 명시하는 기법


GRANT/REVOKE 기법

· DBA가 GRANT/REVOKE 명령으로 권한을 부여하고 취소시키는 방법

- GRANT : 권한 부여 명령

- REVOKE : 권한 취소 명령


· 사용자 등급 지정 및 해제

- GRANT 사용자 등급 TO 사용자 ID 리스트 [IDENTIFIED BY 암호 리스트];

- REVOKE 사용자 등급 FROM 사용자 ID 리스트;


· 사용자 등급의 종류

- DBA : 데이터베이스 관리 책임자

- RESOURCE : 데이터베이스 및 테이블 생성 가능자

- CONNECT : 단순 사용자

예) GRANT RESOURCE TO KORA; → 사용자 ID가 KORA인 사람에게 데이터베이스 및 테이블을 생성할 수 있는 권한 부여

          GRANT CONNECT TO STAR; → 사용자 ID가 STAR인 사람에게 단순히 데이터베이스에 있는 정보를 검색할 수 있는 권한만 부여


· 테이블 및 속성에 대한 권한 부여 및 취소

- GRANT 권한 ON 데이터 개체 TO 사용자 [WITH GRANT OPTION];

- REVOKE [GRANT OPTION FOR] 권한 ON 데이터 개체 FROM 사용자[CASCADE];


· 권한 종류 : ALL, SELECT, INSERT, DELETE, UPDATE, INDEX, ALTER 등

· WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한 부여

· GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한 취소

· CASCADE : 권한 해제 시 권한 부여받았던 사용자가 다른 사람에게 부여한 권한도 연쇄적으로 해제



029 분산 데이터베이스


① 분산 데이터베이스의 정의


· 분산 데이터베이스는 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 컴퓨터 사이트에 분산되어 있는 데이터베이스

· 분산 데이터베이스는 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 데이터의 처리가 가능한 해당 지역에서 해결될 수 있도록 함


② 분산 데이터베이스의 구성 요소


분산 처리기

· 자체적으로 처리 능력을 가지며, 지리적으로 분산되어 있는 컴퓨터 시스템을 말함

분산 데이터베이스

· 지리적으로 분산되어 있는 데이터베이스로서 해당 지역의 특성에 맞게 데이터베이스가 구성됨

통신 네트워크

· 분산 처리기들을 통신망으로 연결하여 논리적으로 하나의 시스템처럼 작동할 수 있도록 하는 통신 네트워크를 말함


③ 분산 데이터베이스 설계 시 고려사항-


· 작업부하(Work Load)의 노드별 분산 정책

· 지역의 자치성 보장 정책

· 데이터의 일관성 정책

· 사이트나 회선의 고장으로부터의 회복 기능

· 통신 네트워크를 통한 원격 접근 기능


④ 분산 데이터베이스의 목표


· 위치 투명성(Location Transparency) : 액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 액세스 가능

· 중복 투명성(Replication Transparency) : 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행

· 병행 투명성(Concurrency Transparency) : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음

· 장애 투명성(Failure Transparency) : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리함


※ 투명성 : 어떠한 사실이 존재함에도 마치 투명하여 보이지 않는 것처럼, 사실의 존재 여부를 염두에 두지 않아도 되는 성질


⑤ 분산 데이터베이스의 장·단점


장점

· 지역 자치성 높음

· 자료의 공유성 향상

· 분산 제어 가능

· 시스템 성능 향상

· 중앙 컴퓨터의 장애가 전체 시스템에 영향을 끼치지 않음

· 효용성과 융통성이 높음

· 신뢰성 및 가용성이 높음

· 점진적 시스템 용량 확장이 용이


단점

· DBMS가 수행할 기능이 복잡

· 데이터베이스 설계가 어려움

· 소프트웨어 개발 비용이 증가

· 처리 비용이 증가

· 잠재적 오류가 증가


※ 미들웨어(MiddleWare)

· 분산 환경에서 구성원들을 연결하고 구성원들 간의 차이를 극복하도록 범용으로 개발된 소프트웨어

· 클라이언트와 서버 사이에 존재하면서 다중 통신, 데이터 액세스 프로토콜과 인터페이스 등을 지원

· 미들웨어의 종류

- 통신 미들웨어 : NOS(Network Operating System)

- 데이터베이스 미들웨어 : ODBC

- 분산 객체 미들웨어 : CORBA, DCOM



출처 : 2017 시나공 정보처리기사 필기

+ Recent posts