본문 바로가기

자격증 준비/정보처리기사필기 - 3과목(데이터베이스 구축)

[정보처리기사 필기] 3과목 - 트랜잭션, 인덱스, 뷰

728x90
반응형

트랜잭션(Transaction)

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산

  • 데이터베이스 시스템에서 병행 제어회복 작업 시 처리되는 작업의 논리적 단위로 사용
  • 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용

상태

활동(Active) 트랜잭션이 실행 중인 상태
실패(Failed) 트랜잭션 실행에 오류가 발생하여 중단된 상태
철회(Aborted) 랜잭션이 비정상적으로 종료되어 Rollback(undo) 연산을 수행한 상태
부분 완료(Partially Committed) 트랜잭션을 모두 성공적으로 실행한 후 Commit 연산이 실행되기 직전인 상태
완료(Committed) 트랜잭션을 모두 성공적으로 실행한 후 Commit 연산을 실행한 후의 상태

 

특성

Atomicity
(원자성)
- 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 방영되지 않도록                 복구(Rollback)되어야 함

- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함
Consistency
(일관성)
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함

- 시스템이 가지고 있는 고정 요소는 트랜잭션 수행전과 트랜잭션 수행 완료 후의 상태가 같아야 함
Isolation
(독립성, 격리성, 순차성)
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음

- 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없음
Durability
(영속성, 지속성)
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함

 

CRUD 분석

데이터베이스 테이블에 변화를 주는 트랜잭션의 CRUD 연산에 대해 CRUD 매트릭스를 작성하여 분석하는 것

  • 테이블에 발생되는 트랜잭션의 주기별 발생 횟수를 파악하고 연관된 테이블들을 분석하면 테이블에 저장되는 데이터의 양을 유추할 수 있음

생성(Create) - INSERT -> INSERT INTO '테이블'('컬럼1',..) VALUES('값1',..);

읽기(Read) - SELECT -> SELECT * FROM '테이블';

갱신(Update) - UPDATE -> UPDATE '테이블' SET 속성명 = '변경할 값';

삭제(Delete) - DELETE -> DELETE FROM '테이블';

 

인덱스(Index)

 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조

  • 데이터가 저장된 물리적 구조와 밀접한 관계가 있음
  • 레코드가 저장된 물리적 구조에 접근하는 방법을 제공
  • 파일의 레코드에 대한 액세스를 빠르게 수행할 수 있음
  • 레코드 삽입과 삭제가 수시로 일어나는 경우 인덱스의 개수를 최소하는 것이 효율적
  • 데이터 정의어(DDL)를 이용하여 사용자가 생성, 변경, 제거 가능

 

종류

트리 기반 인덱스 - 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것

- 상용 DBMS에서는 트리 구조 기반의 B+트리 인덱스를 주로 활용
비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법
함수 기반 인덱스 - 컬럼의 값 대신 컬럼에 특정 함수(Function)나 수식(Expression)을 적용하여 산출된 값을 사용하는 것

- B+ 트리 인덱스 또는 비트맵 인덱스를 생성하여 사용

- 데이터를 입력하거나 수정할 때 함수를 적용해야 하므로 부하 발생 가능
비트맵 조인 인덱스 - 다수의 조인된 객체로 구성된 인덱스

- 단일 객체로 구성된 일반적인 인덱스와 액세스 방법이 다름
도메인 인덱스 - 개발자가 필요한 인덱스를 직접 만들어 사용하는 것

- 확장형 인덱스(Extensible Index)라고도 함 

 

뷰(View)

사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 테이블로부터 유도된, 이름을 가지는 가상 테이블

  • 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주됨
  • 데이터 보정 작업, 처리 과정 시험 등 임시적인 작업을 위한 용도로 활용

 

특징

  • 기본 테이블로 부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용, 조작도 기본 테이블과 거의 같음
  • 가상 테이블이기 때문에 물리적으로 구현이되지 않음
  • 논리적 독립성을 제공할 수 있음
  • 필요 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해짐
  • 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용
  • 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능
  • 일단 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있음
  • 뷰를 정의할 때는 CREATE문, 제거할 때는 DROP문을 사용

 

단점

장점 - 논리적 데이터 독립성을 제공

- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해줌

- 사용자의 데이터 관리를 간단하게 해줌

- 접근 제어를 통한 자동 보안이 제공
단점 - 독립적인 인덱스를 가질 수 없음

- 뷰의 정의를 변경할 수 있음

- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름

 

728x90
반응형