[데이터베이스] ACID와 CAP

무결성과 정합성

  • 무결성 (Integrity): 데이터가 올바른가 (결점이 없는가)
    • 동의어: 정확성, 완전성, 신뢰성, 유효성
    • 무결성 위반: 올바르지 않은(잘못된) 데이터가 저장됨
    • 무결성 위반 예
      • 숫자형 데이터에 문자열이 존재하는 경우
      • 중복을 허용하지 않는 데이터가 중복 저장된 경우
      • null 값을 허용허지 않는 데이터에 null 값이 존재하는 경우
    • 무결성 유지를 위한 방법
      • 올바른 데이터가 저장된 상태를 유지할 수 있도록 데이터 저장 및 변경 시 검증 과정을 거친다.
      • 데이터베이스가 제공하는 네 가지 무결성 제약조건을 설정한다.
        • 도메인 제약조건: 데이터베이스가 지원하는 자료형을 사용하여 일치하는 유형의 데이터만 저장될 수 있도록 한다.
        • 엔티티 제약조건: 기본키를 사용하여 null 값을 가질 수 없는 데이터인 경우 null 값을 가질 수 없도록 한다.
        • 참조 무결성 제약조건: 외래키를 사용하여 참조하는 테이블이 참조되는 테이블의 기본키를 참조하도록 하여 올바른 데이터를 가질 수 있도록 한다.
        • 유니크 제약조건: 기본키 또는 유니크키를 사용하여 데이터가 중복되어 저장될 수 없도록 한다.
  • 일관성 (Consistency): 데이터가 서로 일치하는 가
    • 동의어: 정합성
    • 정합성 위반: 데이터가 서로 일치하지 읺음
    • 정합성 위반 예: 동일한 데이터가 서로 다른 테이블에 분산되어 존재하는 경우 하나의 테이블의 데이터만 변경 사항을 적용하고 다른 테이블의 데이터는 그대로 유지할 때 데이터 정합성을 위반한다.
    • 정합성 유지를 위한 방법: 데이터베이스가 제공하는 외래키 제약조건을 통해 테이블 간 관계를 설정함으로써 두 테이블에 동일한 데이터가 저장될 수 있도록 한다.

트랜잭션 ACID 특성

  • ACID: 데이터베이스의 트랜잭션이 안전하게 수행되는 것을 보장하기 위해 시스템이 가져야 하는 성질
  • 원자성 (Atomicity): 트랜잭션의 작업들은 모두 성공하거나 모두 실패해야 한다.
  • 일관성 (Consistency): 트랜잭션은 데이터를 항상 일관된 상태로 유지한다.
  • 독립성 (Isolation): 수행 중인 트랜잭션은 다른 트랜잭션의 일부 데이터를 알 수 없다. 독립성 수준은 성능에 영향을 준다. 독립성이 높을수록 성능이 낮아진다.
  • 내구성 (Durability): 커밋된 트랜잭션은 어떠한 시스템 실패에도 유지되어야 한다.

CAP

  • 일관성 (Consistency):
  • 가용성 (Availability):
  • 분할 허용성 (Partition Tolerance):

참고

Comments