데이터베이스

[DB] 데이터베이스 기본(정보처리기사 실기 공부 1일차)

You_mool 2024. 4. 2. 23:06
반응형
  • 트랜잭션 : DBMS가 가져야 하는 특성, 하나의 논리적 기능을 수행하기 위한 작업의 기본 단위
    • 원자성 : 분해가 불가능한 최소 단위, All or nothing(하나라도 실패하면 전체가 취소 되어야 함)
    • 일관성 : 트랜잭션 실행 성공 후 항상 일관적 상태를 보존해야하는 특성
    • 격리성 : 트랜잭션 실행 중간 결과를 다른 트랜잭션이 접근 불가
    • 영속성 : 성공한 트랜잭션 결과는 영속적으로 디비에 저장
  • 트랜잭션 상태 변화 :
    • 활성 -> 부분 완료(Partially Committed) -> Commit -> 완료
    • 활성  -> 실패 -> Rollback -> 철회
    • 활성 -> 부분 완료 -> 실패 -> 철회
      • 활성 : 트랜잭션 실행중
      • 부분 완료 : 마지막 명령문 실행 후
      • 완료 : 트랜잭션 성공 후
      • 실패 : 정상적 실행 불가 상태
      • 철회 : 트랜잭션이 취소되고 실행 전 상태로 환원된 상태
  • 트랜잭션 제어 언어(Transaction Control Language)
    • commit : 트랜잭션을 메모리에 영구적으로 저장
    • rollback : 트랜잭션 내역 저장 무효화
    • checkpoint : rollback 시점 지정
  • 병행 제어 : 다수 사용자 환경에서 일관성 유지를 위해 상호작용 제어
    • 갱신 손실(lost update) : 먼저 실행된 트랜잭션 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생
    • 현황 파악 오류(dirty read) : 중간 수행 결과를 다른 트랜잭션이 참조하여 발생
    • 모순(inconsistency) : 두 트랜잭션 동시 실행
    • 연쇄 복귀(cascading rollback) : 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못함
  • 병행 제어 기법 종류 
    • 로킹(locking) : 같은 자원을 액세스하는 다중 환경에서 순차적 진행을 보장하는 직렬화 기법
      • 로킹 단위가 작아지면 데이터베이스 공유도, 오버헤드 증가
    • 낙관적 검증 : 일단 트랜잭션 수행 하고 종료시 검증하여 디비에 반영
    • Time Stamp Ordering(타임 스탬프 순서) : 트랜잭션이 실행 시작 전에 time stamp를 부여하여 부여된 시간에 따라 트랜잭션을 수행
    • MVCC(multi version concurrency control) : 트랜잭션의 타임스탬프와 접근하려고 하는 데이터의 타임스탬프를 비교하여 직렬가능성이 보장되는 버전을 선택하여 접근하는 기법
  • 디비 고립화 수준(isolation level) : 다른 트랜잭션이 무결성을 해치지 않기 위해 잠금 설정하는 정도
    • Read Uncommitted : 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것 허용(연산 중인 데이터 연산 불가)
    • Read Committed : 커밋된 데이터만 다른 트랜잭션이 읽기 가능
    • Repetable Read : 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신/삭제 제한
    • Serializable Read : 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한
  • 회복 기법(Recovery) : 트랜잭션을 수행하는 도중 장애로 인해 디비를 잉전 상태로 복구시키는 작업
    • Deferred Update(지연 갱신) : 트랜잭션이 완료돠가 전까지 디비에 기록 안함(로그 기반)
    • Immediate Update(즉각 갱신) : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영(로그 기반)
    • checkpoint recovery : checkpoint 이전으로 되돌림
    • shadow paging(그림자 페이징) : 트랜잭션 수행 시 사본 생성해서 복구
  • Data Definition Language(데이터 정의어) : CRUD 관련 명령어
    • DDL 대상
      • Domain : 속성의 데이터 타입과 크기, 제약 조건 등의 정보(하나의 속성이 가질 수 있는 원자값들의 집합)
      • Schema : 디비 구조, 제약조건 등의 기본적인 구조
        • External Schema(외부) : 사용자나 개발자의 관점에서 디비의 논리적 구조(사용자 뷰, 서브 스키마)
        • Conceptual Schema(개념) : 디비의 전체적인 논리적 구조(전체적인 뷰, 관계/제약조건/접근 권한/무결성/보안 에 대해 정의)
        • Internal Schema(내부) : 물리적 저장장치의 관점에서 본 디비 구조. 실제 형식 정의, 물리적 순서 등 표현
      • Table  : 데이터 저장 공간
      • View :  가상의 테이블
      • Index : 검색 빠르게
    • Table : 필드들로 구성된 데이터의 집합(= Relation, Entity)
      • tuple : 테이블 내의 행(= record), 같은 값을 가질 수 없음
      • Attribute : 열. 열의 개수를 Degree(차수) 라고 함
      • Identifier : 여러 개의 집합체를 구분 할 수 있는 논리적 개념
      • Cardinality : 튜플의 개수
      • Degree : 속성의 개수
      • domain : 속성의 집합
    • View : 논리 테이블(테이블 A와 B를 물리 테이블이라고 하고, 뷰 C는 두 개의 테이블을 이요하여 생성한 뷰를 의미)
      • 논리적으로 디비에 독립정
      • 데이터 조작 간소화
      • 선택되지 않은 필드 조회/접근 불가
      • 뷰는 정의 변경 불가, 자체 인덱스 불가
    • Index : 조회 속도 높이는 기능
      • Ordered : 순서로 생성, B-Tree
      • Hash : 해시 함수로 직접 데이터에 접근
      • Bitmap : 적은 개수 값이 저장된 경우 선택, 수정 변경이 적을 경우 유용
      • Functional : 수식이나 함수 적용
      • Singled : 하나의 컬럼으로만 구성, 주 사용 컬럼이 하나일 경우 사용
      • Concatnenated(결합) : where 조건 많이 쓸 때 사용
      • clustered : 기본 키 기준으로 묶어서 저장
    • Index Scan
      • Index Range Scan : 루트에서 리프까지 수직적으로 탐색 후 필요한 리프 범위만 스캔
      • Index Full Scan : 루트에서 리프를 처음부터 끝까지 수평적으로 탐색
      • Index Unique Scan : 수직적으로만 탐색
      • Index Skip Scan : 선두 컬럼이 조건 절에 빠졌어도 인덱스를 활용하는 방식
    • DDL
      • CREATE TABLE USER(
        • UserId Varchar(10) PRIMARY KEY,
        • Nickname Varchar(10) FOREIGN KEY REFERENCES Profie,
        • KoreanId Varchar(10) UNIQUE,
        • Birthdate Varchar(10) NOT NULL,
        • Sex (10) CHECK(sex = 'M' OR sex = 'F'),
        • createDate Varchar(10) DEFAULT SYSDATE
      • ALTER TABLE User ADD PhoneNumber Varchar(11) UNIQUE;
      • ALTER TABLE User MODIFY Nickname Varchar(30) NOT NULL;
      • ALTER TABLE User DROP Nickname;
      • DROP TABLE User;
        • Cascade : 참조하는 테이블까지 모두 삭제
        • Restrict : 다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않음
      • TRUNCATE TABLE User;(User 테이블 내의 모든 데이터 삭제
    • View DDL
      • CREATE VIEW 사원뷰 AS
      • SELECT 사번, 이름
      • From 사원
      • Where 성별 = 'M';
      • View의 SELECT 문에는 UNION이나 ORDER BY를 사용할 수 없음
      • DROP VIEW User;
    • DML
      • SELECT 과목 (ALL : 중복 허용, DISTINCT : 중복 될 경우 하나만)
      • SELECT COUNT(DISTINCT 과목)
      • FROM 성적;
      • WHERE 학점 = 'A';
      • Score BETWEEN 80 AND 90(이상, 이하)
      • WHERE Name LIKE '[ABCD]%';(이름 첫번째 문자가 A 또는 B 또는 C 또는 D
      • WHERE Name LIKE '정보%';('정보'로 시작되는 문자열)
      • SUM AS 급여 합계
      • FROM 급여
      • GROUP BY 부서;
      • HAVING 급여합계 >= 5000;(group by 후에 그룹에 대한 조건 지정)
반응형