데이터베이스 시스템 구축

김파란·2024년 12월 13일

RDBMS

목록 보기
1/7

ACID

  • ACID의 기본 원리를 이해해야만 데이터베이스를 시스템을 구축할 수 있다
  • 왜 각각의 속성이 RDB를 성공적으로 빌드하고 사용하는데 중요한지 알아보자
  • 우선 트랜잭션이 무엇일까?

트랜잭션

  • 쿼리들의 모음으로 하나의 작업으로 취급한다
    • 데이터들이 구조화되어 있고 테이블이 있기 때문에 하나의 쿼리에서 실행하는건 불가능하다
    • 논리적으로 원하는 것을 달성하기 위해서 하나 이상의 쿼리를 수행해야 한다
  • 일반적으로 트랜잭션은 데이터를 변경하고 수정하는데 사용한다
  • 하지만 읽기 전용 트랜잭션은 왜 필요할까?
    • 일관성을 유지하기 위해서 트랜잭션을 사용한다
    • 트랜잭션 시작 시간을 스냅샷으로 얻을 수 있기 때문에 동시거래시에도 독립성을 유지할 수 있다

원자성(Atomicity)

  • 원자는 쪼개질 수 없다는 것을 의미한다
  • 트랜잭션의 모든 쿼리는 성공하거나 실패하거나 둘 중 하나이다
  • 만약 커밋과 롤백 전에 데이터베이스가 다운되면 어떻게 될까?
    • 데이터베이스가 재시작되면 오류를 감지하고 롤백을 한다
    • 데이터베이스는 쓰레기를 삭제하고 롤백하기 전엔 시작할 수 없다
  • 커밋하기 전에 데이터베이스가 종료되면 미완료 상태로 인식하고 롤백한다
  • 이것이 원자성이다. 자신의 잘못이든 컴퓨터의 잘못이든 실패하면 롤백하게 된다

독립성(Isolation)

  • 트랜잭션이 진행중인데 다른 트랜잭션이 접근할 수 없도록 하는 것을 말한다
  • 다양한 격리성 수준을 제공한다

일관성(Consistency)

  • 일부 데이터베이스는 속도와 성능 확장성을 위해 일관성을 희생한다
  • 참조무결성: 외래 키로 참조된 값은 반드시 참조되는 테이블에 존재해야 한다
  • 참조하고 있는 데이터가 존재하고 값도 같아 일관성을 유지해야한다
  • 데이터베이스의 상태가 트랜잭션의 전후에도 유효하고 규칙에 맞는 상태로 유지되는 것을 보장하는 개념이다

지속성(Durability)

  • 애플리케이션이 OS에 데이터를 저장하라고 하면 OS캐시에 우선 저장을 하고 나중에 모았다가 버퍼로 작성을 한다
  • 만약 OS가 다운된다면 성공적으로 데이터저장됐다고 응답받았는데 데이터가 사라지는것이다
  • DB는 OS cache를 우회하기 위한 노력을 해서 속도가 느려진다
  • 속도가 느리더라도 트랜잭션이 성공적으로 커밋되기 위해서 사용한다

0개의 댓글