[Database] 트랜잭션과 무결성

2023. 5. 19. 16:28·CS/Database
목차
  1. 1. 트랜잭션
  2. 2. 원자성
  3. 3. 일관성
  4. 4. 독립성
  5. 5. 지속성
  6. 6. 커밋과 롤백
  7. 7. 무결성
728x90
반응형

1. 트랜잭션

  • 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다.
  • 즉, 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.
  • 특징으로는 원자성, 일관성, 독립성, 지속성이 있다.
  • 이러한 특징을 ACID 특징이라고 말한다.

트랙잭션의 성질

 

2. 원자성

  • 원자성(atomicity)은 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징이다.
  • 트랜잭션이 원자처럼 더 이상 쪼개지지 않는 하나의 프로그램 단위로 동작해야 한다는 의미이다.
  • 일부만 수행되는 일이 없도록 전부 수행하거나 아예 수행하지 않아야 한다. (all or nothing)
  • COMMIT, ROLLBACK 같은 트랜잭션 제어 명령어 (Transaction Control Language)를 이용한다.

3. 일관성

  • 트랜잭션은 데이터베이스의 일관성을 유지해야 한다.
  • 일관성은 데이블이 생성 시 CREATE문과 ALTER문의 무결성 제약조건을 통해 명시된다.

4. 독립성

  • 데이터베이스는 공유가 목적이므로 여러 트랜잭션이 동시에 수행된다.
  • 동시에 수행되는 트랜잭션은 상호 존재를 모르고 독립적으로 수행된다.
  • 독립성을 유지하기 위해서는 트랜잭션이 변경 중인 임시 데이터를 다른 트랜잭션이 읽고 쓸 때 제어가 필요하다. -> 동시성 제어

5. 지속성

  • 트랜잭션이 정상적으로 완로(commit) 혹은 부분완료(partial commit)한 데이터는 DBMS가 책임지고 데이터베이스에 기록하는 성질이다.
  • 버퍼내용 기록 전에 시스템 다운 등으로 실패하면 트랜잭션이 수행한 작업을 모두 원상복구한다.

6. 커밋과 롤백

  • 커밋(commit)은 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어이다.
  • 트랜잭션 단위로 수행되며 변경된 내용이 모두 영구적으로 저장되는 것을 말한다.
  • 롤백은 트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일(취소)을 말한다.

7. 무결성

  • 무결성이란 데이터의 정확성, 일관성, 유효성을 유지하는 것을 말한다.
  • 무결성이 유지되어야 데이터베이스에 저장된 데이터 값과 그 값에 해당하는 현실 세계의 실제 값이 일치하는 지에 대한 신뢰가 생긴다.
  • 무결성의 종류는 개체 무결성, 참조 무결성, 고유 무결성, NULL 무결성이 존재한다.
  • 개체 무결성 : 기본키로 선택된 필드는 빈 값을 허용하지 않는다.
  • 참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값을 유지해야 한다.
  • 고유 무결성 : 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우 그 속성 값은 모두 고유한 값을 가진다.
  • NULL 무결성 : 특정 속성 값에 NULL이 올 수 없다는 조건이 주어진 경우 그 속성 값은 NULL이 될 수 없다는 제약 조건이다.
728x90
반응형

'CS > Database' 카테고리의 다른 글

[DataBase] 데이터베이스와 테이블 관리하기  (1) 2024.03.10
[Database] ERD와 정규화 과정  (2) 2023.05.18
[Database] 데이터베이스의 기본 (2)  (1) 2023.04.12
[Database] 데이터베이스의 기본 (1)  (2) 2023.04.09
  1. 1. 트랜잭션
  2. 2. 원자성
  3. 3. 일관성
  4. 4. 독립성
  5. 5. 지속성
  6. 6. 커밋과 롤백
  7. 7. 무결성
'CS/Database' 카테고리의 다른 글
  • [DataBase] 데이터베이스와 테이블 관리하기
  • [Database] ERD와 정규화 과정
  • [Database] 데이터베이스의 기본 (2)
  • [Database] 데이터베이스의 기본 (1)
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록

P_Piano님의
글이 좋았다면 응원을 보내주세요!

응원하기
응원은 창작의 힘

이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.

카카오 계정으로 누구나

응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.

응원 댓글 강조

글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.

쉬운 결제

응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.

응원 수익은 창작자에게 큰 힘이 됩니다.
응원 금액
응원 댓글
  • 창작 활동에 대한 감사와 격려의 의미로 창작자를 응원합니다.
  • '응원하기'는 자발적 결제이므로 청약철회(환불) 불가능합니다.
  • '응원하기'는 만 14세 이상 인증 사용자만 이용할 수 있습니다. 만 19세 미만 미성년 회원의 경우, 법정대리인이 응원하기 결제 이용에 동의하지 않으면 미성년자 본인 또는 법정대리인이 그 결제 내용을 취소할 수 있습니다.
  • '응원하기' 이용을 위한 자세한 내용은 티스토리 이용약관 및 카카오 유료서비스 이용약관을 따릅니다.
(주) 카카오 대표이사 정신아
사업자 등록 번호 120-81-47521
통신판매업신고번호 제2015-제주아라-0032호
주소 제주특별자치도 제주시 첨단로 242(영평동)
호스팅사업자 (주)카카오
고객센터 1577-3754
이메일 help.notice@kakaocorp.com
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (201)
      • Apple (119)
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (20)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    운영체제
    네트워크
    ios
    visionOS
    클래스
    메서드
    이니셜라이저
    비동기
    Optional
    SWIFT
    제어문
    자바스크립트
    옵셔널
    combine
    swiftUI
    UIKit
    연산자
    Xcode
    Vision Pro
    디자인패턴
    프로세스
    코딩테스트
    티스토리챌린지
    프로퍼티 래퍼
    배열
    스위프트
    Initializers
    함수
    변수
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[Database] 트랜잭션과 무결성

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.