데이터베이스의 트랜잭션을 공부하다 보니 정확하게 이해가 안 가는 부분이 생겼습니다. 트랜잭션의 특징에 대한 부분이었는데 트랜잭션의 일관성과 지속성에 대한 부분이었습니다. 인터넷에서 찾아본 한국의 많은 곳에서 두 가지를 각각 아래처럼 설명하고 있습니다.
일관성( Consistency ) : 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미합니다.
지속성( Durability ) : 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미합니다.
두 가지의 설명을 읽어보면 뭔가 다른 듯 하면서도 결국 같은 이야기를 하는 것이 아닌가 라는 생각을 떨쳐낼 수가 없었습니다. 트랜잭션이 성공하면 계속해서 유지되어야 한다..? 가 결국 같은 말 같았기 때문입니다. 그래서 각각에 대하여 더 자세히 찾아보기 시작했습니다. 일단 많이 검색해 보았던 한국의 글이 아닌 영어 글 위주로 찾아보았습니다. 일관성(Consistency)에 대한 설명은 아래와 같았습니다.
Consistency − The database must remain in a consistent state after any transaction. No transaction should have any adverse effect on the data residing in the database. If the database was in a consistent state before the execution of a transaction, it must remain consistent after the execution of the transaction as well.
Consistency, in the context of databases, states that data cannot be written that would violate the database’s own rules for valid data. If a certain transaction occurs that attempts to introduce inconsistent data, the entire transaction is rolled back and an error returned to the user.
Consistency - Data is in a consistent state when a transaction starts and when it ends.For example, in an application that transfers funds from one account to another, the consistency property ensures that the total value of funds in both the accounts is the same at the start and end of each transaction.
영어를 잘하지 않아서 번역을 해서 읽어보면 데이터베이스를 구성할 때에 정해놓은 규칙들(일관성)은 트랜잭션을 성공하고 나서도 계속해서 유지되어야 한다는 것입니다. 즉 일관성을 깨는 데이터를 받아들여서는 안 된다는 말을 하고 있는 것으로 보였습니다. 그리고 지속성(durability)에 대한 설명은 아래와 같았습니다.
Durability − The database should be durable enough to hold all its latest updates even if the system fails or restarts. If a transaction updates a chunk of data in a database and commits, then the database will hold the modified data. If a transaction commits but the system fails before the data could be written on to the disk, then that data will be updated once the system springs back into action.
Durability in databases is the property that ensures transactions are saved permanently and do not accidentally disappear or get erased, even during a database crash. This is usually achieved by saving all transactions to a non-volatile storage medium.
Durability is part of the ACID acronym, which stands for atomicity, consistency, isolation and durability. ACID is a set of properties guaranteeing the reliability of all database transactions.
Durability - After a transaction successfully completes, changes to data persist and are not undone, even in the event of a system failure.For example, in an application that transfers funds from one account to another, the durability property ensures that the changes made to each account will not be reversed.
일단 Durability 단어가 내구성 이라는 뜻도 가지고 있음을 알게 되었습니다. 내용들도 읽어보니 성공적으로 수행된 트랜잭션의 경우 데이터베이스가 시스템적으로 문제가 생기더라도 데이터 자체에는 영향이 가지 않고 영구히 보존되어야 한다는 말을 하고 있었습니다.
정리
일관성은 데이터베이스의 일관성 있는 규칙은 트랜잭이 완료되었을 때에도 이 일관성을 유지할 수 있어야 합니다. 즉 이 일관성을 깨는 데이터에 대해서는 트랜잭션이 성공적으로 실행되지 않아야 한다는 의미입니다.
지속성은 다른말로 내구성을 의미하며 트랜잭션이 성공적으로 수행된 이후에는 데이터베이스에 어떤 시스템적인 문제가 발생하더라도 데이터를 영구적으로 보존할 수 있어야 한다는 의미입니다.
출처
https://www.tutorialspoint.com/dbms/dbms_transaction.htm
https://www.ibm.com/docs/en/cics-ts/5.4?topic=processing-acid-properties-transactions
https://www.techopedia.com/definition/27416/durability-databases
https://www.techopedia.com/definition/27386/consistency-databases
'Study > DataBase' 카테고리의 다른 글
[DataBase] 트랜잭션 정리 (0) | 2022.01.03 |
---|