반응형

데이터베이스 ACID 

 

 
  • Atomicity (원자성)
    트랜잭션 쓰기는 모두 한 번에 실행되며 더 작은 부분으로 나눌 수 없다. 트랜잭션 실행 시 오류가 발생하면 트랜잭션 쓰기가 모두 롤백된다. 원자성은 "전부 아니면 전무"를 의미한다. (The writes in a transaction are executed all at once and cannot be broken into smaller parts. If there are faults when executing the transaction, the writes in the transaction are rolled back. So atomicity means “all or nothing”.)

  • Consistency (일관성)
    모든 읽기가 가장 최근 쓰기 또는 오류 수신을 의미하는 CAP 정리의 "일관성"과 달리, 여기서 일관성은 데이터베이스 불변성을 유지하는 것을 의미한다. 트랜잭션에 의해 작성된 모든 데이터는 정의된 모든 규칙에 따라 유효해야 하며 데이터베이스를 양호한 상태로 유지해야 한다. (
    Unlike “consistency” in CAP theorem, which means every read receives the most recent write or an error, here consistency means preserving database invariants. Any data written by a transaction must be valid according to all defined rules and maintain the database in a good state.)

  • Isolation (격리성)
    두 개의 서로 다른 트랜잭션에서 동시 쓰기가 있는 경우 두 트랜잭션은 서로 격리된다. 가장 엄격한 격리는 "직렬화 가능성"이다. 즉, 각 트랜잭션이 데이터베이스에서 실행되는 유일한 트랜잭션인 것처럼 작동합니다. 그러나 이는 현실적으로 구현하기 어렵기 때문에 패자 격리 수준을 채택하는 경우가 많다.
    When there are concurrent writes from two different transactions, the two transactions are isolated from each other. The most strict isolation is “serializability”, where each transaction acts like it is the only transaction running in the database. However, this is hard to implement in reality, so we often adopt loser isolation level.

  • Durability (내구성)
    시스템 장애가 발생하더라도 트랜잭션이 커밋된 후에 데이터는 유지된다. 분산 시스템에서는 데이터가 일부 다른 노드에 복제됨을 의미한다. (Data is persisted after a transaction is committed even in a system failure. In a distributed system, this means the data is replicated to some other nodes.)

[참조] ByteByteGo

 

반응형

+ Recent posts