본문 바로가기

개인 스터디/정리

[정보처리기사 실기] 14. 데이터베이스 기본

 

1. 트랜잭션

  • 트랜잭션 : 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
  • 트랜잭션의 특성
    • 원자성(Atomicity) : 트랜잭션의 연산 전체가 성공 또는 실패되어야 함
    • 일관성(Consistency) : 시스템의 고정요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 함
    • 격리성(Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 함
    • 영속성(Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 함
  • 트랜잭션 상태 변화
    • 활동 상태(Active) : 초기 상태로, 트랜잭션이 실행 중
    • 부분 완료 상태(Partially Committed) : 마지막 명령문이 실행된 후
    • 완료 상태(Committed) : 트랜잭션이 성공적으로 완료
    • 실패 상태(Failed) : 정상적인 실행이 더 이상 진행될 수 없음
    • 철회 상태(Aborted) : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원
  • 트랜젝션 제어(TCL)
    • COMMIT : 트랜잭션 확정. 트랜잭션을 메모리에 영구적으로 저장
    • ROLLBACK : 트랜잭션 취소. 트랜잭션 내역을 저장 무효화
    • CHECKPOINT : 저장 시기 서정. ROLLBACK을 위한 시점을 지정
  • 병행 제어 :다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호 작용 제어
  • 병행 제어의 목적
    • 데이터베이스의 공유 최대화
    • 시스템 활용도 최대화
    • 데이터베이스 일관성 유지
    • 사용자 응답시간 최소화
  • 병행 제어 기법의 종류
    • 로킹(Locking) : 다른 트랜잭션들이 동시에 접근하지 못하도록 상호 배제 기능을 제공. 로킹 단위가 작아지면 데이터베이스 공유도, 로킹 오버헤드 등이 증가
    • 낙관적 검증(Optimisic Validation) : 트랜잭션 수행 후, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영
    • 타임 스탬프 순서(Time Samp Ordering) : 트랜잭션 실행 전 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 수행
    • 다중버전 동시성 제어(MVCC) : 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근
    • 2PC : 분산 데이터베이스 시스템의 일관성 유지를 위해 트랜잭션을 두 단계로 분리하여 제어
      • 1단계(준비 단계) : 트랜잭션 수행 결과를 다른 분산 시스템에 알리는 과정
      • 2단계(커밋 단계) : 모든 분산 시스템의 트랜잭션 수행 결과가 일치하는 지 확인 후, 커밋/롤백 수행
  • 데이터베이스 고립화 수준 : 다른 트랜재견이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도
  • 회복 기법(영속성 주요 기법) : 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
  • 회복 기법 종류
    • REDO : 디스크에 저장된 로그를 분석하여 트랜잭션들의 작업을 재작업
    • UNDO : 디스크에 저장된 로그를 분석하여 작업한 변경 내용들을 모두 취소하는 기법
    • 로그 기반 회복 기법
      • 지연 갱신 회복 기법 : 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
      • 즉각 갱신 회복 기법 : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
    • 체크 포인트 회복 기법 : 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 이전 상태로 복원 기법
    • 그림자 페이징 회복 기법 : 트랜잭션 수행 시 복제본을 생성하여 이를 이용해 복구하는 기법
  • 데이터 정의어(DDL) : 데이터를 정의하는 언어
  • DDL 대상
    • 스키마 : 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
    • 스키마의 구성
      • 외부 스키마 : 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적 구조
      • 개념 스키마 : 데이터베이스의 전체적인 논리적 구조. 관계, 제약조건, 접근 권한, 무결성, 보안 등에 대해 정의
      • 내부 스키마 : 물리적 저장 장치의 관점에서 보는 데이터베이스 구조
    • 테이블(릴레이션, 엔터티) : 데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체
    • 테이블 용어
      • 튜플/행(Tuple/Row) : 테이블 내의 행(가로), 같은 값을 가질 수 없음
      • 속성/열(Attribute/Column) : 테이블 내의 열(세로)
      • 카디널리티(Cardinality) : 튜플의 개수
      • 차수(Degree) : 속성의 개수
      • 도메인(Domain) : 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합
    • 뷰 : 논리 테이블로서 사용자에게 테이블과 동일
    • 뷰의 장단점
      • 장점 : 논리적 독립성 제공, 데이터 조작 연산 간소화, 보안 기능 제공
      • 단점 : 뷰 자체 인덱스 불가, 뷰 변경 불가, 데이터 변경 제약 존재
    • 인덱스 : 검색 연산의 최적화를 위해 데이터베이스 내 값에 대한 주소로 정보로 구성된 데이터 구조
  • DDL 명령어 : CREATE, ALTER, DROP, TRUNCATE
  • 데이터 조작어(DML) : 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어
  • DML 명령어 : SELECT, INSERT, UPDATE, DELETE
  • DML 상세
    • 조인(Join) : 두 개 이상의 테이블을 연결하여 데이터를 검색하는 방법
    • 조인 종류
      • 교차 조인(Cross Join) : 조인 조건이 없는 모든 데이터 조합을 추출하는 조인
      • 세타 조인(Theta Join) : 두 테이블에서 조건(ON)을 만족하는 튜플만 반환하는 조인
      • 동등 조인(Inner Join) : 두 테이블의 값이 정확히 같을 때(=)만 데이터를 가져오는 조인
      • 자연 조인(Natural Join) : 동등 조인에서 중복된 속성은 하나만 남긴 결과를 반환
      • 외부 조인(Outer Join) : 자연 조인 시 조인에 실패한 튜플을 모두 보여주되 값이 없는 속성은 NULL값으로 반환
      • 세미 조인(Semi Join) : 자연 조인을 한 후 두 테이블 중 한쪽 테이블의 결과만 반환
      • 셀프 조인(Self Join) : 자기 자신에게 별칭을 지정한 후 다시 조인하는 기법 
    • 서브 쿼리 : SQL 문 안에 포함된 또 다른 SQL 문
    • 서브 쿼리 유형
      • FROM 절 : 인라인 뷰라고 불리며, 뷰처럼 결과가 동적으로 생성된 테이블 형태로 사용 가능
      • WHERE 절 : 주첩 서브쿼리라고 불리며, WHERE 절 안에 서브쿼리가 들어있는 형태
    • 집합 연산자 : 두 테이블 연산에 집합 연산자를 사용하는 방식
    • 집한 연산자 유형
      • UNION : 중복 행이 제거된 쿼리 결과를 반환
      • UNION ALL : 중복행이 제거되지 않은 쿼리 결과를 반환
      • INTERSECT : 두 쿼리 결과에 공통적으로 존재하는 결과를 반환
      • MINUS : 첫 쿼리에 있고 두 번째 쿼리에는 없는 결과를 반환
  • 데이터 제어어(DCL) : 데이터베이스 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 제어용 언어
  • DCL 명령어 : GRANT, REVOKE

 


# 회고

 

leetcode로 SQL도 다시 풀어봐야겠담..안푸니까 감을 잃어버림