🌈 트랜잭션 & ACID
💡 트랜잭션 ( Transacton )
트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛. 각 트랜잭션은 하나의 특정 작업으로 시작을 해 묶여 있는 모든 작업들을 완료해야 정상적으로 종료한다. 만약 하나의 트랜잭션에 속해 있는 여러 작업 중에서 단 하나의 작업이라도 실패하면, 이 트랜잭션에 속한 모든 작업을 실패한 것으로 판단한다. 다시 말해 작업이 하나라도 실패하면 트랜잭션도 실패이고, 모든 작업이 성공적이면 트랜잭션 또한 성공이다. 성공 또는 실패라는 두 개의 결과만 존재하는 트랜잭션은 미완료된 작업 없이 모든 작업을 성공해야 한다.
💡 ACID ( Atomicity, Consistency, Isolation, Durability )
: ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안정성을 보장하기 위해 필요한 성질이다.
* Atomicity (원자성)
: 원자성은 하나의 트랜잭션에 속해있는 모든 작업이 전부 성공하거나 전부 실패해서 결과를 예측할 수 있어야 한다. 예를들어, A의 계좌에서 B의 계좌로 계좌이체를 한다고 했을 때, A의 계좌에서는 출금이 되었는데 B의 계좌로 입금하는 작업이 실패한다면 모든 작업이 실패로 돌아가야한다는 것이 원자성이다.
* Consistency (일관성)
: 데이터베이스의 상태는 일관되어야 한다는 성질이다. 하나의 트랜잭션 이전과 이후, 데이터베이스의 상태는 이전과 같이 유효해야 한다. 다시 말해, 트랜잭션이 일어난 이후의 데이터베이스의 제약이나 규칙을 만족해야 한다.
* Isolation (격리성, 고립성)
: 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다. 실제로 동시에 여러 개의 트랜잭션들이 수행될 때, 각 트랜잭션은 격리되어 있어 연속으로 실행한 것과 동일한 결과를 나타낸다.
* Durability (지속성)
: 하나의 트랜잭션이 성공적으로 수행되었다면, 해당 트랜잭션에 대한 로그가 남아야한다. 만약, 런타임 오류나 시스템 오류가 발생하더라도 해당 기록은 영구적이어야 한다.
'프로그래밍 > 그 외 모든 관련 지식들' 카테고리의 다른 글
ORM이란? (0) | 2022.06.09 |
---|---|
im-sprint-learn-sql로 배워가는 SQL 기본 지식들, SQL 예제 실습 (0) | 2022.06.02 |
SSR(Server Side Rendering) 그리고 CSR(Client Side Rendering) (0) | 2022.05.20 |
URL과 URI는 무엇인가?! (0) | 2022.05.20 |
댓글