데이터베이스 고급 기능

2015. 8. 13. 20:36프로그래밍/Database

728x90
728x90

트렌젝션

정의

트랜젝션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업 단위

또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.


트랜젝션의 특징

데이터의 무결성을 위해 DBMS의 트랜잭션이 가져야할 특징이 있다.

Atomicity(원자성) - 모두 반영 되거나, 전혀 반영되지 않거나. 

Consistency(일관성) - 트랜잭션이 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환된다.

Isolation(독립성) - 둘 이상의 트랜잭션이 동시에 실행중에 하나가 실행 될 때 다른 트랜잭션의 연산에 끼어들 수 없다.

Durability(영속성) - 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 한다.


Commit, Rollback 연산

Commit 연산 - 한개의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝났고, 데이터베이스가 다시 일관된 상태에 있을 때,

이 트랜잭션이 행상 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산.


Rollback 연산 - 하나의 트랜잭션 처리가 비정상 종료되어 데이터베이스의 일관성을 깨뜨렸을 때,

일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행항 모든 연산을 취소하는 연산.


트랜잭션의 상태


활동 - 트랜잭셔닝 실행중인 상태

실패 - 트랜잭션 실행에 오류가 발생하여 중단된 상태

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

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

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


회복(Recovery)

정의

회복은 트랜잭션들을 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 

손상되기 이전의 정상 상태로 복구하는 작업.


장애 유형

트랜잭션 장애 : 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등

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

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


회복 관리기

DBMS의 구성 요소.

트랜잭션 실행이 성공적으로 완료되지 못하면 트랜잭션이 데이터 베이스에 생성했던 모든 변화를 취소한다.

트랜잭션 수행 이전의 원래 상태로 복구하는 역할을 한다.

메모리 덤프, 로그를 이용하여 회복을 수행한다.


병행제어(Concurrency Control)

다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때,

동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 어기지 않게 상호작용을 제어하는 것.


병행제어 기법의 종류

로킹(Locking)

주요 데이터의 액세스를 상호 배타적으로 하는 것.

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


종류

공유 록(S, Shared Lock)

배타 록(X, Exclusive Lock)

의도 록(I, Intention Lock)

의도 공유 록(IS)

배타 의도 록(IX)

공유 의도 독점 록(SIX)


2단계 로킹(Two-Phase Locking) 규약

각 트랜잭션의 록 요청과 해제(Unlock) 요청을 2단계로 실시

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

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


타임 스탬프 순서(Time Stamp Ordering)

직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법

트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 시간표(Time Stamp)를

부여하여 부여된 시간에 따라 트랜잭션 작업을 수행한다.

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


최적 병행수행(검증 기법, 확인 기법, 낙관적 기법)


다중 버전 기법

갱신될 때마다 버전을 부여하여 관리한다.


무결성

데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다.


무결성을 유지하는 방법

중앙 통제에 의한 데이터 갱신. 검증된 프로그램을 이용하여 

모든 갱신 처리 과정에서 반드시 검증 단계를 거치도록 통제하는 방법.


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

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

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

- 프래디킷 : 무결성을 위한 검사 조건

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


무결성 종류

널 무결성 : 릴레이션의 특정 속성값이 Null이 될 수 없도록 하는 규정

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

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

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

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

관계 무결성 : 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 

한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정.

개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정.


보안

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

암호화 기법, 권한 부여 기법. 권한 부여 기법에는 뷰 기법, GRANT/REVOKE 기법이 있다.


암호화 기법

과정

평문 -> 암호화 알고리즘(암호키) -> 암호 해독자(암호문) -> 복호화 알고리즘(복호키) -> 평문


개인키 암호 방식 = 비밀키 암호 방식

동일한 키로 데이터를 암호화하고 복호화한다.

대칭 암호 방식 or 단일키 암호화 기법이라고도 한다.


종류 : 전위 기법, 대체 기법, 대수 기법, 합성 기법

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

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


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

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

데이터를 암호화할 때 사용하는 키(공개키)는 데이터베이스 사용자에게 공개하고,

복호화할 때의 키(비밀키)는 관리자가 비밀리에 관리하는 방법.

비대칭 암호 방식이라고 하며, 대표적으로 RSA가 있다.


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

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


권한 부여 기법

뷰 기법

뷰에 권한을 명시하는 기법이다.


GRANT/REVOKE 기법

부여와 취소 명령.


분산 데이터베이스

정의

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


구성 요소

분산 처리기

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


분산 데이터베이스

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


통신 네트워크

분산 처리기들을 통신망으로 연결하여 논리적으로 하나의 시스템처럼 동작하도록 한다.


목표

위치 투명성 : 액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 액세스 한다.

중복 투명성 : 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용한다.

병행 투명성 : 분산 데이터베이스와 관련된 다수의 트랜잭션들을 동시에 처리할 수 있으며 서로 영향을 주지 않는다.

장애 투명성 : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에 강건한 트랜잭션!


장점

지역 자치성이 높다.

자료의 공유성이 향상.

분산 제어가 가능.

시스템 성능 향상

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

효용성과 융통성이 높다.

신뢰성 및 가용성이 높다.

점진적 시스템 용량 확장에 용이하다.


단점

DBMS가 수행할 기능이 복잡하다.

데이터베이스 설계가 어렵다.

소프트웨어 개발 비용이 증가한다.

처리 비용이 증가한다.

잠재적 오류가 증가한다.


728x90
반응형

'프로그래밍 > Database' 카테고리의 다른 글

[DB] Upsert  (1) 2017.03.30
[mssql2008] db log 용량 줄이기  (2) 2016.12.23
Index(mysql)  (2) 2015.08.18
저장프로시저(MS-SQL 환경)  (0) 2015.08.12
관계형 데이터베이스 모델과 언어  (0) 2015.08.11
데이터 모델링과 설계  (0) 2015.08.11
정보 시스템  (0) 2015.08.11