Notice
Recent Posts
Recent Comments
05-21 07:17
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Database Management - Transactions, Concurrency 본문

BackEnd/Database Management

Database Management - Transactions, Concurrency

알 수 없는 사용자 2023. 3. 14. 14:26

 앞서 살펴봤던 문제점들을 토대로 데이터베이스는 해당 문제를 해결하기 위해 기능들을 제공한다. 이런 부수적인 기능들로 문제점들을 해결하고, 데이터베이스가 가져야 할 특성들을 정의한다.

Transactions

 어떠한 동작을 처리할 때는 다음과 같은 부수적인 행위들이 뒤따른다. 예를 들면 의자에 앉으려고 할 때, 의자를 뒤로 빼고 앉은 뒤에 의자와 책상을 가까이 한다. 이는 3가지 동작이 들어가게 된다. 실생활에서는 이런 순차적인 단계들로 작업이 묶여서 수행되는 것을 많이 보게 되는데, Database에서는 이런 논리적으로 연쇄적인 작업들이 묶여있는 작업을 Transactions이라고 부른다. Transactions는 an atomic sequence of DB actions (reads/writes) 로 정의된다. 이때 atomic이라는 단어는 atomicity라는 개념에서 나왔다. Atomicity는 원자성인데 이는 하나로 되어 있다 라고 처음에 받아들였다. 그 의미로는 어떠한 처리를 할 때 어떤 동작은 부수적인 동작들을 전부 완수해야 처리가 완료된 것이고, 부수적인 동작들 중에 하나라도 빠진다면 그 처리는 아무것도 처리를 하지 않은 상태로 돌아가는 것이다.

Atomicity : An action either completes entirely or not at all

 만약에 어떤 사람 A가 B에게 돈 10000원을 보냈다고 하자. 그러면 A의 계좌에서 10000원을 줄이고, B의 계좌에 10000원을 증가시켜야 한다. 만약에 Atomicity가 보장이 안되는 처리가 발생한다는 것은 A의 계좌에서 10000원은 줄었지만, B의 계좌에 10000원이 안들어갔을 때, 원자성이 깨졌다고 한다. (atomicity breaks) 따라서 Transactions는 어떤 작업들을 논리적으로 묶어놓고 데이터를 처리하면서 동시에 일관성(Consistency)과 무결성(Integrity)을 유지시킨다.

 

Concurrency : Scheduling Concurrent Transactions

 DBMS에 있는 특징들 중에 Concurrency(동시성)이라는 것이 있다. DBMS는 기본적으로 Transaction들에 대해 처리를 하는 과정에서 하나의 데이터를 수정하는데 있어 충돌이 일어날 수 있다. 이때 DBMS에서는 Locking(잠금) 기능을 지원하는데, 여러 사용자가 동시에 똑같은 데이터를 수정하려고 할 때, 다른 사용자는 해당 데이터를 읽을 수만 있고, 수정할 수 없게 된다. 따라서, 한 transaction이 실행되기 전에 locking 상태가 되며, transactions이 다 끝나고 난 후에 locking이 풀리게 된다.

 

Atomicity : An action either completes entirely or not at all

 DBMS의 Atomicity는 데이터의 충돌이 있더라도 원자성을 유지한다. 이런 것이 가능하게 하는게 바로 Write-ahead logging(WAL)이다. Write-ahead Logging은 어떤 트랜잭션의 하위 작업들 각각이 마무리 되기 전에 각각에 대응되는 log entry가 disk에 강제적으로 저장되게 된다. 이런 로그들을 통해 다시 데이터들을 복구할 수 있고, Atomicity가 보장되게 된다.

 데이터베이스를 잘 설계한다면 사용자, 공급업체들에게 이익을 가져다 주고, DB 프로그래머들에게는 더 많은 사용자들을 관리하고, 빠르고, 신뢰있는 데이터들을 가져다 준다. DB 관리자에게는 데이터에 대해 논리적, 물리적 스키마를 설계하는 시간을 줄여주고, 보안성과 권한관리, 충돌 복구 등의 많은 기능들을 제공시켜준다.

 

이러한 데이터베이스의 신뢰성 있고 잘짜여진 체계적 시스템은 End 단의 users들과 DBMS 공급업체들의 이익 창출에 이바지하게 된다. 또한 DB를 이용하는 프로그래머들에게 더 빠르고 쉽고 싸면서도 신뢰성과 보안을 보장하는 기능들을 데이터와 함께 제공해준다. DBA들에게는 더 빠른 논리 스키마, 물리 스키마를 구현하도록 하고, 보안과 승인 관련된 조작들을 할 수 있도록 한다. 

Comments