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
반응형
'자격증 준비 > 정보처리기사필기 - 3과목(데이터베이스 구축)' 카테고리의 다른 글
[정보처리기사 필기] 3과목 - DDL, DML, DCL (0) | 2023.01.15 |
---|---|
[정보처리기사 필기] 3과목 - 분산 데이터베이스, 암호화 (0) | 2023.01.15 |
[정보처리기사 필기] 3과목 - 정규화 (0) | 2023.01.13 |
[정보처리기사 필기] 3과목 - 관계대수 (0) | 2023.01.13 |
[정보처리기사 필기] 3과목 - 데이터베이스 설계 (0) | 2023.01.13 |