절차형 SQL의 종류
- 프로시저 : 여러 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
- 사용자 정의함수 : SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환 할 수있는 SQL
- 트리거 : 삽입, 삭제, 갱신 등의 이벤트 발생할 때마다 자동으로 수행되는 SQL
*트리거 = 삽삭갱
병행 제어 미보장
- 갱신 손실 : 먼저 실행된 트랜잭션이 나중에 실행된 트랜잭션 결과를 덮어 쓸 때
- 현황 파악 오류 : 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류
- 모순성 : 동시에 실행되어 DB의 관성이 결여되는 오류
- 연쇄복귀 : 복수의 트랜잭션 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류
병행제어 기법 종류 #낙타로다
- 낙관적 검증 (Validation) : 트랜잭션 종료 후 검증을 수행하여 반영하는 기법 #실행 후
- 타임 스탬프(Time Stamp Ordering) : 부여된 시간에 따라 작업을 수행하는 기법 #실행 전
- 로킹(Locking) : 사용하는 데이터 항목에 대해 잠금(Lock)을 설정하여 독점적으로 사용하는 기법 #실행 중
- 다중 버전 동시성 제어(MVCC) : 적절한 버전을 선택하여 접근하는 기법
데이터베이스 정규화
- 1NF: 원잣값
- 2NF: 부분 함수 종속 제거
- 3NF: 이행 함수 종속 제거
- BCNF : 결정자 함수이면서 후보키가 아닌 것 제거
- 4NF: 다치(다중) 종속성 제거
- 5NF: 조인 종속성 제거
정규화와 역정규화
- 정규화 : 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정
- 역정규화 :
트랜잭션의 주요 특성
- 원자성 : 연산 전체가 성공 또는 실패 (All or Nothing)
- 일관성 : 트랜잭션 성공 후 일관된 데이터 베이스를 보존
- 격리성 : 연산 중 다른 트랜잭션이 접근 불가
- 영속성 : 연산이 완료된 결과는 영구적(영속적)으로 데이터베이스에 저장
트랜잭션 장애
- 실행 장애 : 데이터를 발견하지 못하거나 연산 실패
- 트랜잭션 장애 : 트랜잭션 수행 오류
- 시스템 장애 : 하드웨어의 결함으로 인한 오류
- 미디어 장애 : 디스크 장치 결함
회복 연산
- Redo : 장애 발생 직전 DB상태로 다시 실행하여 복구하는 연산
- Undo : 실행된 연산을 취소하여 DB상태를 원래의 상태로 복구하는 연산
회복 기법 #지즉체그미
- 로그 기반 회복 기법
- 지연 갱신 회복 기법 : 트랜잭션의 부분 완료 상태에선 변경 내용을 로그에 저장, 완료 후 commit을 해야 db에 반영
- 즉시 갱신 회복 기법 : 트랜잭션 수행 중에도 내용을 db에 즉시 반영, 장애 발생 시 Undo 필요
- 검사 시점(CheckPoint) 회복 기법 : 검사 시점을 만들어두고 장애 발생 시 최근 검사 시점으로 회복 작업 수행, → 검사 점 이후 장애 발생 시 redo, 장애 발생 시점까지 commit 없을 시 Undo
- 그림자 페이징 회복 기법 : 트랜잭션 시작 전 동일한 테이블을 만들어두고 실패할 경우 만들어 두었던 테이블로 대체하는 방법
- 미디어 회복 기법 : 내용을 백업, 미러링, RAID 등을 통해 물리적 저장장치에 덤프하고 미디어 장애 시 가장 최근의 덤프로 복구, 로그 파일을 참조해 덤프 이후의 작업은 Redo
데이터베이스 무결성 종류
- 개체 무결성 : 한 엔터티에서 같은 기본 키를 가질 수 없거나, 기본 키 속성이 null이 될 수 없음
- 참조 무결성 : 참조하는 다른 개체의 기본 키의 값이 기본 키 값이거나 null 이여야 함
- 속성 무결성 : 속성의 값은 기본값, null 여부, 도메인(데이터 타입, 길이) 지정된 규칙 준수
- 사용자 무결성 : 사용자의 의미적 요구 사항을 준수
- 키 무결성 : 한 릴레이션에 같은 키 값을 가진 튜플을 허용할 수 없음
DBMS 특징
- 데이터 무결성 : 부적절한 자료가 입력되어 동일한 내용에 대해 서로 다른 데이터가 저장되는 것을 허용하지 않는 성질
- 데이터 일관성 : 삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 변함이 없어야 함. (일관되다.)
- 데이터 회복성 : 장애가 발생하였을 시 특정 상태로 복구되어야 함
- 데이터 보안성 : 불법적인 노출, 변경, 손실로부터 보호되어야 함
- 데이터 효율성 : 응답 시간, 저장 공간 활용 등 사용자, 시스템 등의 요구 조건을 만족해야 함
RAID
- RAID 0 : 패리티가 없는 스트라핑된 세트
- RAID 1 : 패리티가 없는 미러링된 세트
- RAID 2 : 비트 레벨의 스트라이핑, 해밍코드 패리티 적용
- RAID 3 : 패리티 단순 제공 스트라이핑 세트 (적어도 3개 디스크) 분할 단위가 byte
- RAID 4 : : 패리티 단순 제공 스트라이핑 세트 (적어도 3개 디스크) 분할 단위가 block
- RAID 5 : 패리티 배분 스트라이핑 (적어도 3개의 디스크)
- RAID 6 : 패리티 배분 스트라이핑 (적어도 4개의 디스크)
단계 | 분할 단위 | 특징 |
RAID 0 | Block | - Striping (스트라이핑) 이라고도 부름 - 모든 디스크에 데이터를 분할하여 저장 - 2개 이상의 디스크 사용 |
RAID 1 | Block | - Mirroring (미러링)이라고도 부름 - 동일한 데이터를 N개로 복제하여 각 디스크 - 2개 이상의 디스크 사용 |
RAID 2 | Bit | - error correction을 위해 Hamming code 를 사용 - 1개 디스크 복구 가능 2개 이상 복구 불가능 |
RAID 3 | Byte | - error correction을 위해 패리티 디스크를 1개 사용 - 1개 디스크 복구 가능 2개 이상 복구 불가능 - 3 개 이상의 디스크 사용 |
RAID 4 | Block | - 상 동 |
RAID 5 | Block | - 패리티 디스크를 1개 사용하지만 매 번 다른 디스크에 저장 - 1개 디스크 복구 가능 2개 이상 복구 불가능 - 3개 이상의 디스크 사용 |
RAID 6 | Block | - 패리티 디스크를 2개 사용하지만 매 번 다른 디스크에 저장 - 2개 디스크 복구 가능 3개 이상 복구 불가능 - 4개 이상의 디스크 사용 |
관계형 데이터베이스의 Relation 구조
- 릴레이션(Relation) : 행(Row)과 열(Column)으로 구성된 테이블
- 튜플(Tuple) : 행(Row), 레코드(Record)
- 속성(Attribute) : 열(Column), 필드(Field)
- 카디널리티(Cardinality) : 튜플(Tuple)의 수
- 차수(Degree) : 속성(Attribute)의 수
데이터베이스 암호화 기법
- API 방식 : 애플리케이션 레벨에서 암호 모듈(api)를 적용하는 방식, 암복호화, 정책, 키 관리 부하
- Plug-in 방식 : 암-복호화 모듈이 DB서버에 설치된 방식
- TDE 방식 : DBMS 커널이 자체적으로 암-복호화 기능을 수행하는 방식 (내장 되어 있는 암호화)
- Hybrid 방식 : API와 Plug-In 방식을 결합하는 방식
데이터베이스 고립화 수준 종류
- Read Uncommitted : 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것은 허용, 연산은 불허
- Read Committed : 연산이 완료될 때까지 데이터 읽기를 제한, 커밋된 데이터는 다른 트랜잭션이 읽는 것을 허용
- Repeatable Read : 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터 갱신/삭제를 제한
- Serializable Read : 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근을 제한
일반 집합, 순수 관계 연산자
일반 집합 연산자
- ∪ : 합집합(Union)
- ∩ : 교집합(Intersection)
- -: 차집합(Difference)
- × : 카티션 프로덕트(Cartesian Product)
순수 관계 연산자
- σ : 샐랙트 (Select)
- π : 프로젝트 (Project)
- ⋈ : 조인 (Join)
- ÷ : 디비전 (Division)
트랜잭션의 상태 변화 및 설명
- 활동 : 초기 상태, 트랜잭션이 실행 중
- 부분 완료 : 마지막 명령문이 실행된 후 가지는 상태 (commit 전)
- 완료 : 트랜잭션이 성공적으로 완료된 후 가지는 상태 (commit 후)
- 실패 : 정상적인 실행이 더 이상 진행될 수 없을 때 상태 (Rollback 전)
- 철회 : 트랜잭션이 취소되고 db가 트랜잭션 시작 전 상태로 환원된 상태 (실패 → rollback한 상태)
'License > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 보안, 해킹, 공격 관련 용어 정리 (0) | 2023.07.21 |
---|---|
[정보처리기사 실기] SQL 문법 정리, 사용법 모음 (SQL 정리) (0) | 2023.07.19 |
[정보처리기사 실기] 까먹기 쉬운 용어 정리, 시험 들어가기 전 속독 (0) | 2023.07.19 |
[정보처리기사 실기] 결합도, 응집도 간단한 설명 (두음암기) (0) | 2023.07.19 |
[정보처리기사 실기] 스크럼(Scrum) 정리 및 역할 설명 (0) | 2023.07.19 |