개발의변화
7. 데이터베이스 기본 본문
트랜잭션 특성
1. 원자성(Atomicity): 트랜잭션을 구성하는 연산 전체가 모두 정상적으로 실행되거나 모두 취소되어야 하는 성질
2. 일관성(Consistency): 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 하는 성질
3. 격리성(isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질
4. 영속성(durability): 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터 베이스에 저장되어야 하는 성질
롤백: 오류가 발생했을 때, 오류 이전의 시점(SAVEPOINT, CHECKPOINT) 상태로 되돌려주는 제어어
커밋: 트랜잭션을 메모리에 영구적으로 저장하는 제어어
체크포인트: ROLLBACK을 위한 시점을 지정하는 제어어
병행 제어 기법의 종류
로킹: 하나의 트랜잭션을 실행하는 동안 특정 데이터 항목에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 상호배제 기능을 제공하는 기법, 같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
낙관정 검증(Optimistic Validation) : 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
타임 스탬프 순서(Time Stamp ordering): 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업 수행
다중버전 동시성 제어(MVCC): 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임 스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
회복 기법 개념
REDO: 데이터베이스가 비정상적으로 종료되었을 떄 디스크에 저장된 로그를 분석하여 트랜잭션의 시작과 완료에 대한 기록이 있는 트랜잭션들의 작업을 재작업하는 기법
UNDO: 데이터베이스가 비정상적으로 종료되었을 떄 디스크에 저장된 로그를 분석하여 트랜잭션의 시작은 있지만 완료 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법
DDL
데이터 정의어는 데이터를 정의하는 언어로서 '데이터를 담는 그릇을 정의하는 언어'
테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어들로 특정 구조를 생성, 변경, 삭제, 이름을 바꾸는 데이터 구조와 관련된 명령어들을 데이터 정의어
DDL의 대상
Domain: 하나의 속성이 가질 수 있는 원자값들의 집합
속성의 데이터 타입과 크기, 제약조건 등의 정보
스키마: 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
외부 스키마: 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적 구조
개념 스키마: 데이터베이스의 전체적인 논리적 구조, 전체적인 뷰를 나타냄
내부 스키마: 물리적 저장 장치의 관점에서 보는 데이터베이스 구조, 실제로 데이터베이스에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 표현
테이블: 데이터 저장 공간, 데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체
뷰: 하나 이상의 물리 테이블에서 유도되는 가상의 테이블
단순 질의어를 사용할 수 있기 떄문에 다중 조인을 할 필요가 없다
장점: 논리적 독립성 제공, 사용자 데이터 관리 용이, 데이터 보안의 용이
단점: 뷰 자체 인덱스 불가, 뷰 정의 변경 불가, 데이터 변경 제약 존재
인덱스: 검색을 빠르게 하기 위한 데이터 구조
DDL:
CREATE: 데이터베이스 오브젝트 생성하는 명령어
ALTER : 데이터베이스 오브젝트 변경하는 명령어
DROP: 데이터베이스 오브젝트 삭제하는 명령어
TRUNCATE:데이터베이스 오브젝트 내용 삭제하는 명령어
PK: 테이블 기본 키 정의
FK: 외래 키 정의, 참조 대상을 테이블로 명시
UNIQUE: 테이블 내에서 얻은 유일한 값을 갖도록 하는 제약조건
NOT NULL: 해당 컬럼은 NULL값을 포함하지 않도록 하는 제약조건
CHECK: 개발자가 정의하는 제약조건
DEFAULT: 데이터를 INSERT 할 떄 해당 컬럼의 값을 넣지 않는 경우
DML(Data Mainpulation Language(
SELECT: 조회, 테이블 내 칼럼에 저장된 데이터를 조회
INSERT: 삽입, 테이블 내 칼럼에 데이터를 추가
UPDATE: 갱신, 테이블 내 칼럼에 저장된 데이터를 수정
DELETE: 삭제, 테이블 내 칼럼에 저장된 데이터를 삭제
SELECT: ALL,DISTINCT
FROM: 질의에 의해 검색될 데이터를 포함하는 테이블명을 기술
WHERE: 검색할 조건을 기술
GROUP BY: 속성값을 그룹으로 분류하고자 할 떄 사용
HAVING: GROUP BY에 의해 분류한 후 그룹에 대한 조건 지정
ORDER BY: 속성값을 정렬하고자 할 떄 (ASC,DESC,ASC,DESC 생략 오름차순)
WHERE
SELECT *
FROM PRODUCT
WHERE PRICE BETWEEN 50000 AND 100000;
SELECT *
FROM PRODUCT
WHERE PRICE IN (40000,50000,60000);
SELECT *
FROM PRODUCT
WHERE NAME LIKE '정보%';
SELECT *
FROM PRODUCT
WHERE NAME LIKE '[ABCD]%'
로그 기반 회복 기법
1. 지연 갱신 회복 기법: 트랜잭션이 완료되기 전까지 데이터베이스에 기록하기 않는 기법
2. 즉각 갱신 회복 기법: 트랜잭션이 수행 중 갱신 결과를 바로 DB에 반영하는 기법
체크 포인트 회복 기법(Checkpoint Recovery)
장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원시키는 회복 기법
그림자 페이징 회복 기법(Shadow Paging Recovery)
데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법
DDL
1. 데이터 정의어(DDL; Data Definition Language)
데이터를 정의하는 언어로서 '데이터를 담는 그릇을 정의하는 언어'
스키마(Schema)
외부스키마: 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적 구조
개념스키마: 데이터베이스의 전체적인 논리적 구조
내부스키마: 물리적 저장 장치의 관점에서 보는 데이터베이스 구조, 실제로 데이터베이스에 저장될 레코드의 형식을 정의하고 저장 데이터 항목 표현
IN: 리턴되는 값 중에서 조건에 해당하는 값이 있으면 참
ANY: 서브쿼리에 의해 리턴되는 각각의 값과 조건을 비교하여 하나 이상을 만족하면참
ALL: 값을 서브쿼리에 의해 리턴되는 모든 값과 조건 값을 비교하여 모든 값을 만족해야함
EXISTS: 메인 쿼리의 비교 조건이 서브쿼리의 결과 중에서 만족하는 값이 하나라도 존재하면 참