트랜잭션(Transaction)


- 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

- 한꺼번에 모두 수행되어야 할 일련의 연산

- 데이터베이스 시스템에서 병행제어 및 회복작업시 처리되는 작업의 논리적 단위

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

- 하나의 트랜잭션은 Commit 되거나 Rollback 된다.



트랜잭션의 특성 ACID

데이터의 무결성을 보장하기 위한 DMBS의 트랜잭션이 가져야 할 특성


Atomictity (원자성)

- 트랜잭션의 연산은 데이터베이스에 모두 반영되던지 전혀 반영되지 않아야 한다.

- 트랜잭션 내의 모든 명령은 완벽히 수행되어야 하며 하나라도 오류가 발생하면 트랜잭션 전부 취소


Consistency (일관성)

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

- 시스템이 갖고 있는 고정요소는 트랜잭션 수행전과 수행완료 후의 상태가 같아야 한다.

ex) 은행업무 처리 시스템에서 지점간 돈 이동시 이동 전의 전체 은행이 소유하고 있는 돈의 합계와 이동 후의 합계가 같아야 하고, 고객으로부터 입금된 돈이 있으면 입금 전 합계에 입금된 금액만큼 증가된 합계가 된다.


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

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

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


Durability (영속성, 지속성)

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



Commit, Rollback 연산


Commit 커밋 연산

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


Rollback 롤백 연산

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



회복 (Recovery)


회복관리기 (Recovery Management)

- DBMS의 구성요소로 트랜잭션 실패시 데이터베이스의 모든 변화를 Undo 시키는 역할, Dump와 Log 이용

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

- 로그(Log) : 갱신되기 전후의 내용을 기록하는 별도의 파일. = 저널(Journal)




병행제어 (Concurrency Control)


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


병행제어의 목적 : 데이터베이스 공유 최대화, 시스템 활용도 최대화, 데이터베이스 일관성 유지, 사용자에 대한 응답시간 최소화


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

직렬성(Serializability) 병행수행된 각각의 트랜잭션 결과는 각 트랜잭션을 독자적으로 수행시켰을 때 결과와 같아야 한다.


병행수행의 문제점 : 갱신 분실(Lost update), 비완료 의존성(Uncommotted Dependency), 모순성(Inconsistency), 연쇄복귀(Cascading Rollback)

병행제어 기법의 종류 : 로킹(Locking), 타임 스탬프 순서(Time Stamp Ordering), 최적 병행수행, 다중 버전 기법


로킹(Locking)

- 로킹단위가 작아지면 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아진다.

- 로킹단위가 크면 로크수가 작아 관리하기 쉽지만 병행성 수준이 낮아진다.

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

- 로킹 단위가 작아지면 로킹 오버헤드가 증가한다.

- 한꺼번에 로킹할 수 있는 단위를 로킹 단위라고 한다.

※ 병행성 수준 : 데이터베이스 공유도



무결성 (Integrity)

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


무결성의 종류

널 무결성 : 릴레이션의 특정 속성값이 Null이 될 수 없다.

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

참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.

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

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

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

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




보안 (Security)

- 데이터베이스의 보안은 권한이 없는 사용자가 액세스 하는 것을 금지하기 위해 사용되는 기술

- 암호화 기법, 권한 부여 기법(View, GRANT/REVOKE)

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

보안(Security)은 사용자들이 데이터베이스를 언제든 사용할 수 있도록 보장(ensure), 무결성(Integrity)은 정확(correct)하게 사용할 수 있도록 보장(ensure)


암호화 기법

암호화(Encryption) - 복호화(Decryption)


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

- 대칭 암호방식, 단일키 암호화 기법

- 전위 기법, 대체 기법, 대수 기법, 합성 기법 DES(Deta Encryption Standard) : 64비트 블록화/실제키 56비트

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

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


공개키 암호 방식(Public Key Encryption) = 공중키 암호화 기법

- 비대칭 암호 방식, RSA(Rivest Shamir Adleman)

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

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



권한 부여 기법


VIEW : 뷰에 권한을 명시

GRANT/REVOKE : DBA가 권한을 부여하고 취소

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

REVOKE 사용자등급 FROM 사용자ID;

GRANT ALL ON 고객 TO JULIA WITH GRANT OPTION;

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

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




분산 데이터베이스

- 논리적으로는 하나의 시스템이지만 물리적으로는 여러 개의 컴퓨터 사이트에 분산되어 있는 데이터 베이스

- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시켜 데이터 처리가 가능한 해당 지역에서 해결


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

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

- 지역의 자치성 보장

- 데이터의 일관성 정책

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

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


분산 데이터베이스의 목표

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

- 중복(복제) 투명성(Replication Transparency) : 동일 데이터가 여러 곳에 중복되어 있어도 사용자는 하나의 데이터처럼 사용하고 시스템은 자동으로 여러 자료에 대한 작업 수행

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

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


분산 데이터베이스 장점

지역 자치성 높다, 자료 공유성 향상, 분산 제어 가능, 시스템 성능 향상, 중앙컴퓨터 장애가 전체 시스템에 영향없음, 효용성과 융통성 높다, 신뢰성 및 가용성 높다, 점진적 시스템 용량 확장이 용이


분산 데이터베이스 단점

DBMS가 수행할 기능이 복잡, 데이터베이스 설계 어렵다, 소프트웨어 개발 비용 증가, 처리 비용 증가, 잠재적 오류 증가

- 사이트 간 데이터들이 서로 오류가 발생할 수 있다.





Posted by netyhobby
,