DDL :
DML
DCL
DBMS 필수 기능
1. 정의 데이터의 형(Type)과 구조에 대한 정의, 이용 방식, 제약조건 등을 명시
2. 조작 데이터 검색, 갱신, 삽입, 삭제 등을 위한 인터페이스 수단 제공
3. 제어 데이터 무결성, 보안, 권한 검사, 병행 제어
스키마 : DB의 구조와 제약 조건에 대해 전반적인 명세 기술
외->개->내
1. 외부 스키마 : 사용자 뷰, 논리적 구조
데이터베이스의 개개 사용자나 응용 프로그래머가 접근하는 데이터베이스를 정의한 것
2. 개념 스키마 : DB 전체적인 논리적 구조
모든 응용 시스템들이나 사용자들 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스를 기술한 것
3. 내부 스키마 : 물리적 저장장치 입장
저장 장치(storage) 입장에서 데이터베이스 전체가 저장되는 방법을 명세한 것
데이터 사전 : 데이터베이스에 저장되는 데이터에 관한 정보를 저장
= 메타 데이터(meta data) 또는 시스템 카탈로그(system catalog)
논리적 독립성 : 개념 스키마 변경 -> 외부 스키마에는 영향X
물리적 독립성 : 내부 -> 외부/개념
DB설계 : 개논물
조건 분석
개념적 설계
현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정으로, 개념 스키마 모델링과 트랜잭션 모델링을 수행하며, 요구 조건 명세를 E-R 다이어그램으로 작성한다
논리적 설계 정규화
현실의 자료를 특정 DBMS가 지원하는 자료구조로 변환하는 과정으로, 트랜잭션의 인터페이스를 설계하고, 정규화를 통해 스키마를 평가 및 정제한다
물리적 설계 반정규화 : 논리적 구조로 표현된 데이터를 디스크 등의 저장장치에 저장할 수 있는 데이터로 변환
일의 저장 구조 및 액세스 경로를 결정하며, 테이블 정의서 및 명세서가 산출
데이터 모델 구성요소
개체, 속성, 관계
E-R 다이어그램
사각형 | 개체 |
마름모 | 관계 |
타원 | 속성 |
밑줄 타원 | 기본키 속성 |
이중 타원 | 복합속성 |
선링크 | 개체와 속성 연결 |
이상현상
삽입이상 :
삭제이상 : 튜플 삭제 때 의도와 상관없는 값도 함께 삭제
갱신이상
DBMS 용어
릴레이션 : 데이터들을 표 형태로 표현한 것
어트리뷰트 속성 : 릴레이션의 열=파일에서 필드(field)에 대응하는 개념
디그리 차수 : 속성의 수
튜플 : 릴레이션의 행 = 파일의 레코드
카디널리티: 튜플의 수
도메인 : 속성 하나가 가질 수 있는 모든 값의 집합
키 : 튜플 찾거나 정렬 기준
후보키 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합 : 최소성
기본키 후보키 중에서 특별히 선정된 주 키(Main Key)
대체키 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키, 보조키라고도 함
슈퍼키 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키 : 유일성
외래키 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
무결성
1. 개체 무결성 : 기본키를 구성하는 모든 속성은 널 값을 가질 수 없다
2. 참조 무결성 : 외래키는 참조할 수 없는 값을 가질 수 없다.
⋈
잇는 테이블에서만 연산
합집합 : 중복 X
트랜잭션의 특징
1. 원자성
트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 함
2. 일관성
트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함
3. 독립성/격리성
둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음
4. 영속성/지속성
성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함
회복기법
로그 회복 기법
1. 즉시 갱신 기법: 트랜잭션이 데이터를 업데이트하면 트랜잭션이 부분 완료되기 전이라도 즉시 실 제 데이터베이스에 반영하는 방법
2. 연기 갱신 기법: 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적인 업데이트 를 연기하는 방법
그림자 페이지 대체 기법: 업 데이트 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성
검사점 기법: 장애 발생시 트랜잭션 전체를 철회하지 않고 검사점부터 회복 작업을 수행하여 회 복 시간을 절약하도록 하는 기법
병행제어 : 여러 사용자가 DB 동시 사용할때, 여러 트랜잭션이 동시 수행되도록 지원
1. 로킹 : 동일 데이터에 동시 접근 X LOCK, UNLOCK 두 개 연산 제어
2. 타임 스탬프 순서 : 시간표 부여
클러스터링 : 두 대 이상 서버를 하나의 서버처럼 운영
DB 이중화
1. Eager 기법 : 트랜잭션 수행 중 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 즉시 전달하여 변경 내용이 즉시 적용되도록 하는 기법 2. Lazy 기법 : 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법
RTO 목표 복구 시간 : 업무 중단 시점 ~ 다시 정상 가동될 때까지의 시간RPO :
(혼자 튀는 메뉴 주문에 잠깐 시선을 받았지만 아랑곳 않는다. 다들 사건 얘기로 룸 안이 떠들썩해지면 네게로 고개를 돌린 채 시선을 마주봤다. 거기에 좋다고 침대며 제 차 시트를 모두 적셨으면서.) 진짜 개새끼가 뭔지 모르시는 것 같은데요.
DB 보안
암호화 기법
- 개인키
- 공개키
대칭키 : ARAR 128, SEED
비대칭 키:
해시:
접근통제
- DAC 임의 접근통제 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식
- MAC 강제 접근통제 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- RBAC 역할 기반 접근 통제 사용자의 역할에 따라 접근 권한을 부여하는 방식
트랜잭션 연산
redo 디스크 저장된 로그 분석, 시작과 완료에 대한 기록이 있는 트랜잭션 작업을 재작업.
undo 비정상 종료시, start는 있지만 commit 기록이 없는 트랜잭션이 완료한 작업들을 모두 취소.