제1절 데이터베이스 고급기능

제1항 트랜잭션 개념

(1) 트랜잭션의 정의

1) 데이터베이스 응용 프로그램에서 하나의 논리적 기능을 수행하는 연산자들의 집합

2) 데이터베이스 시스템에서 복구 및 병행 시행 시 처리되는 작업의 논리적 단위

3) 데이터베이스의 내용에 접근 혹은 수정하려는 단일 사용자나 응용 프로그램에 의해 수행되는 일련의 과정

 

(2) 트랜잭션의 속성

1) 원자성(atomicity)

① 트랜잭션 내의 모든 명령은 완벽히 수행되던지모두 취소되어야 함 (all or nothing)

② 트랜잭션은 일부만 수행된 상태로 종료되어서는 안 됨

2) 일관성(consistency)

① 트랜잭션이 성공적으로 완료되면 언제나 일관성 있는 데이터베이스 상태 유지

② 시스템이 가지고 있는 고정요소는 트랜잭션 수행전과 트랜잭션 수행 완료 후에 같아야 한다.

3) 독립성격리성(isolation)

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

4) 영속성(durability)

① 트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 영속적이어야 함

 

(3) 트랜잭션의 특징

1) 트랜잭션은 작업의 논리적 단위

2) 하나의 트랜잭션은 commit 되거나 rollback 되어야 함

3) 트랜잭션은 일반적으로 회복의 단위가 됨

 

제2항 트랜잭션의 연산

(1) commit

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

2) SQL 명령어로 수행된 결과를 실제 물리적 디스크로 저장하는 SQL 명령

(2) Rollback

1) 개념

① 트랜잭션의 실행이 실패하였음을 알리는 연산자로 트랜잭션이 수행한 결과를 원래의 상태로 원상 복귀시키는 연산

② 트랜잭션들이 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업

 

2) 장애의 유형

① 트랜잭션 장애

ü 입력데이터 오류불명확한 데이터 등 내부의 비 정상적인 상황으로 인한 장애

② 시스템 장애

ü 하드웨어 오작동소프트웨어의 손상교착상태 등에 의한 장애

③ 미디어 장애

ü 저장장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스가 물리적으로 손상된 상태

 

(3) SAVEPOINT

1) 개념

① SAVEPOINT는 하위 트랜잭션을 실현하기 위한 데이터베이스 언어 SQL 구문중 하나이다트랜잭션의 특정 지점에 이름을 지정하고그 지점 이전에 수행한 작업에 영향을 주지 않고그 지점 이후에 수행한 작업을 롤백(rollback)할 수 있다.

② SAVEPOINT는 데이터베이스를 이용하는 응용 프로그램에서 복잡한 오류 복구 최리를 실현하는데 효과적이다여러 문이 갖춰진 트랜잭션 도중에 에러가 발생했을 경우, SAVEPOINT를 사용하면 전체 트랜잭션을 롤백하지 않고 오류에서 복귀할 수 있다.

 

2) 사용예

① SAVEPOINT name에서 해당 지점에 이름을 지정하고 ROLLBACK TO SAVEPOINT name으로 롤백하면 된다.

 BEGIN;

  INSERT INTO tbl VALUES (1);

SAVEPOINT savepoint_example;

  INSERT INTO tbl VALUES (2);

ROLLBACK TO SAVEPOINT savepoint_example;

  INSERT INTO tbl VALUES (3);

COMMIT;

 

 

제3항 트랜잭션의 상태

 



 

(1) 활동(active)

1) 트랜잭션이 실행중인 상태

(2) 실패(failed)

1) 오류가 발생하여 중단된 상태

(3) 철회(aborted)

1) 비정상 종료되어 rollback 연산을 수행한 상태

(4) 부분완료(partially committed)

1) Commit 연산이 실행되기 직전 상태

(5) 완료(committed)

1) 성공적으로 완료된 상태

 

 

 

 

제4항 데이터베이스제어(보안무결성병행제어회복기법개념

(1) 보안

1) 보안의 개요

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

② 무결성은 권한이 있는 사용자로부터 데이터베이스를 보호하는 것이고보안은 권한이 없는 사용자로부터 데이터베이스를 보호하는 것

 

2) 보안의 특성

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

② 각 사용자들은 일반적으로 서로 다른 객체에 대하여 다른 접근권리 또는 권한을 갖게 됨

③ SQL의 경우에는 보안 규정에 포함된 독립적인 기능으로 뷰 기법(view mechanism)과 권한 인가 서브시스템(authorization subsystem)이 있음

 

3) 암호화 기법

① 개인키(대칭키암호 방식(private key encryption)

ü 암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 동일한 암호 알고리즘 방식

ü 속도가 빠르지만키 배송 문제가 있다.

ü DES, 3DES, AES, SEED, ARIA

 

② 공개키(비대칭키암호 방식(public key encryption)

ü 암호화할 때 사용하는 키와 복호화 할 때 사용하는 키가 서로 다른 암호 알고리즘 방식

ü 속도는 느리지만키 배송 문제르 해결 함.

ü 전자서명 송신자의 개인키 송신자의 공개키

ü 메일수신자의 공개키 수신자의 개인키

 

③ 하이브리드 암호 시스템

ü 대칭키 암호와 공개키 암호를 조합한 암호 방식을 하이브리드 암호 시스템이라고 한다.

 

 

(2) 병행제어(concurrency control)

1) 개념

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

 

2) 병행제어의 목적

① 데이터베이스의 공유를 최대화한다.

② 시스템의 활용도 최대화한다.

③ 사용자에 대한 응답시간 최소화한다.

④ 데이터베이스 일관성 유지한다.

 

3) 병행수행의 문제점

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

 

① 갱신 분실(lost update)

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

② 모순성(inconsistency)

③ 불일치 분석문제(inconsistent analysis problem)

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

④ 연쇄복귀(cascading rollback)

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

⑤ 비완료 의존성문제임시 갱신(uncommitted dependency problem)

ü 트랜잭션이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 결과를 참조하는 현상

 

4) 병행제어 기법의 종류

① 로킹(locking)

ü 개념

• 데이터의 접근을 상호 배타적으로 만들어 병행제어를 하는 방법

• 하나의 트랜잭션이 데이터를 액세스하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스할 수 없도록 하는 방법

• 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 lock(잠금)을 요청해서 lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법이다.

 

ü 종류

• 공유 로크(S, shared lock)

• 배타 로크(X, exclusive lock)

• 의도 로크(I, intention lock)

• 의도공유 로크(IS, intention-shared lock)

• 배타의도 로크(IX, intention-exclusive lock)

• 공유의도 독점로크(SIX, shared and intention-exclusive lock)

 

ü 2단계 로킹(two-phase locking) 규약

• 각 트랜잭션의 로크 요청과 해제(unlock) 요청을 2단계로 실시한다.

• 직렬성을 보장하는 대표적인 로킹 규약이다.

• 직렬성을 보장하는 장점은 있지만교착상태를 예방할 수 없다는 단점이 있다.

    

 

교착상태(deadlock)

두개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다.

 

교착상태 필요조건

1. 상호배제

최소한 하나는 비공유 방식(한번에 하나의 프로세스 자원만 사용)으로 점유

2. 점유와 대기

 - 하나의 자원을 점유하고 있고다른 하나가 점유 자원에 접근하려고 기다림

3. 비선점

점유된 자원은 강제로 해제될 수 없다

4. 순환대기

- P0, P1, P2 순으로 프로세스의 순환이 있어야 하고, P1은 P0의 자원을 기다리고, P2는 P1의 자원을 기다린다.

 

 

ü 로킹 단위(locking granularity)

• 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기를 의미함.

• 데이터베이스파일레코드필드 등은 로킹 단위가 될수 있다.

• 로킹 단위가 크면 로크수는 작아져서 관리하기 쉽지만병행성 수준이 낮아지고로킹 단위가 작으면 로크수가 많아져서 관리하기 복잡하고 오버헤드가 증가하지만 병행성 수준이 높아진다.

• 페이지 차원(page-level)의 잠금 테이블 차원(table-level)의 잠금 행차원(row-level)의 잠금

 

② 타임스탬프 순서(time stamp ordering)

ü 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법들 중에서 가장 보편적인 방법이다.

ü 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 시간표(time stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법이다.

ü 교착상태가 발생하지 않는다.

 

(3) 회복

1) 회복의 정의

① 데이터베이스 운영 시 데이터베이스에 손상이 가해졌을 때 손상되기 이전의 상태로 되돌리는 작업

 

2) 장애의 종류

① 트랜잭션 장애(transaction failure)

② 시스템 장애(system failure)

③ 미디어 장애(media failure)

④ 네트워크 장애(network failure)

 

3) 회복기법

① 트랜잭션으로 쓰기가 수행될 때마다 데이터베이스가 변경되기 전에 로그 레코드를 생성

② Undo

ü Log에 저장된 정보를 이용하여 가장 최근의 변경(트랜잭션부터 취소하여 데이터베이스를 복구하는 것

③ redo

ü 트랜잭션의 오류시 가장 최근의 정상상태로 데이터베이스를 되돌린 후 트랜잭션을 다시 실행

 

리눅스(linux) 파일시스템

 

Minix

과거 미닉스(minix)에서 사용되었던 파일시스템으로 가장 오래되고 기본이 되는 파일 시스템

 

Ext2(second extended file system, 2차 확장 파일 시스템)

- ext2는 캐시(cache)에 저장되어 있는 데이터들을 디스크로 저장하는 도중에 만약 시스템이 다운되거나 여러 문제가 발생할 경우 파일 시스템이 손상되는 단점

- ext2는 fsck(file system check)라는 파일 시스템 복구기능을 제공하는데복구시간 동안 시스템 사용이 불가능하다는 단점

 

Ext3(extended file system 3, 확장된 파일 시스템 3)

- ext2의 단점을 보완한 ext3 파일시스템으로 시스템의 무결성은 물론 뛰어난 복구기능까지 제공

- ext3은 저널링(journaling) 이라는 기술을 제공

 

저널링(Journaling)

기존의 fsck에 걸리는 시간을 단축하기 위해 데이터를 디스크에 쓰기전에 로그(log)에 데이터를 남겨 시스템이 비정상적인 셧다운 발생시에도 로그를 사용해 fsck보다 빠르고 안정적인 복구기능을 제공하는 기술

 

 


 

제5항 분산 데이터베이스

(1) 분산 데이터베이스 정의

1) 분산 데이터베이스

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

② 동질 분산 데이터베이스 관리시스템과 이질 분산 데이터베이스 관리 시스템으로 구분할 수 있음

③ 수평 분할은 전역 테이블을 구성하는 튜플들을 부분집합으로 분할하는 방법을 말함

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

 

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

① 분산 처리기

ü 자체적 처리능력을 지닌 지리적으로 분산되어 있는 컴퓨터 시스템

② 분산 데이터베이스

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

③ 통신 네트워크

ü 분산 처리기를 통신망으로 연결하여 논리적으로 하나의 시스템이 되도록 하는 네트워크 시스템

 

(2) 분산 데이터베이스 목표

1) 위치 투명성

① 데이터가 물리적으로 저장되어 있는 곳을 알 필요 없이 논리적인 입장에서 데이터가 모두 자신의 사이트에 있는 것처럼 처리하는 특성

② 액세스하려는 데이터베이스의 실제 위치를 알 필요가 없다.

2) 중복 투명성(replication transparency)

① 트랜잭션이 데이터의 중복 개수나 중복 사실을 모르고도 데이터 처리가 가능함

② 동일 데이터가 중복되더라도 사용자는 하나의 데이터만 존재하는 것처럼 사용

3) 병행 투명성(concurrency transparency)

① 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 안 받음

4) 장애 투명성(failure transparency)

① 트랜잭션, DBMS, 네트워크컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리함

 

(3) 분산 데이터베이스 특징

1) 분산 데이터베이스의 장점

① 지역 자치성이 높음

② 효용성과 융통성이 높음

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

④ 신뢰성과 가용성이 높음

⑤ 특정한 사이트에서 장애가 발생하더라도 다른 사이트는 계속 운용할 수 있음

⑥ 데이터의 공유성 향상

⑦ 질의 처리(query processing) 시간의 단축

⑧ 분산제어가 가능하고 시스템의 성능이 향상됨

 

2) 분산 데이터베이스의 단점

① 중앙 집중 시스템보다 구현하는 복잡하고 처리 비용이 증가

② 자료의 중앙 통제시 저장된 자료의 일관성 유지가 용이함

 

3) 미들웨어 (middle-ware)

① 복잡한 이기종 환경에서 응용 프로그램과 운영환경 간에 원만한 통신을 이룰수 있게 해 주는 소프트웨어

② 서로 다른 기종간의 서버와 클라이언트들을 연결해주는 소프트웨어

③ ODBC

ü 분산 환경에서 서로 다른 데이터베이스를 연결하여 사용할 수 있게 하는 미들웨어

 

4) 분산 데이터베이스 설계

① 설계시 고려사항

ü 작업부하(work load)의 노드별 분산 정책

ü 지역의 자치성 보장 정책

ü 데이터의 일관성 정책

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

ü 통신 네트워크를 통한 원격 접근 가능

 

② 데이터베이스 서버(server)의 선정 시 조건

ü 고성능의 주기억장치와 빠른 입∙출력 연산등이 수행될 수 있는 기능이 지원되어야 함

ü 다양한 사용자 인터페이스가 지원되어야 함.

ü 대용량의 자료를 저장탐색할 수 있으며분산 데이터 관리가 지원되어야 함.


'정보처리기사 > 데이터베이스' 카테고리의 다른 글

12. 데이터베이스 실기 기출문제풀이  (0) 2017.08.01
10. 정규화  (0) 2017.08.01
09. 개체-관계(E-R) 모델  (0) 2017.08.01
08. 데이터모델링 및 설계  (0) 2017.08.01
07. SQL(Structure Query Language)  (0) 2017.08.01

+ Recent posts