SMALL

정의

- 데이터베이스 내의 데이터를 정의 또는 접근하는 SQL문을 응용프로그램 안에 내포하여 프로그램이 실행될 때 함께 실행되도록 호스트 프로그램 언어에 삽입한 SQL

 

특징

  • 호스트 프로그램 언어에서 실행문이 나타날 수 있는 곳이면 어디든 사용 가능
  • 실행 결과가 여러 튜플이어도 첫번째 튜플 하나만 반환
  • 반한된 튜플은 일반 변수를 사용하여 저장 가능
  • 호스트 프로그램 변수와 DB 필드의 이름 같아도 가능

구분

1) 명령문의 구분

- EXEC SQL과 세미콜론(;) 문자 사이에 기술

2) 변수의 구분

- 내장 SQL문에서 사용하는 호스트 변수는 변수 앞에 콜론(:)을 붙임

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

시스템 카탈로그  (0) 2021.05.09
커서(Cursor)  (0) 2021.05.09
관계대수 연산자  (0) 2021.05.09
무결성 종류  (0) 2021.05.09
참조 무결성 제약조건 만족시키기 위한 DBMS 옵션  (0) 2021.05.09
SMALL

순수 관계 연산자

- 디비전, 조인, 셀렉션, 프로젝션

집합 연산자

- 합집합, 교집합, 차집합, 카테시안 곱

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

커서(Cursor)  (0) 2021.05.09
내장 SQL  (0) 2021.05.09
무결성 종류  (0) 2021.05.09
참조 무결성 제약조건 만족시키기 위한 DBMS 옵션  (0) 2021.05.09
병행제어  (0) 2021.05.06
SMALL

고유 무결성

- 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야함

도메인 무결성

- 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야함

관계 무결성

- 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정

참조 무결성

- 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야함

개체 무결성

- 릴레이션의 기본키를 구성하는 속성은 Not Null이어야함

키 무결성

- 하나의 릴레이션에는 최소 하나의 키가 존재해야함

NULL 무결성

- 릴레이션의 특정 속성 값을 Not Null로 하는 규정

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

내장 SQL  (0) 2021.05.09
관계대수 연산자  (0) 2021.05.09
참조 무결성 제약조건 만족시키기 위한 DBMS 옵션  (0) 2021.05.09
병행제어  (0) 2021.05.06
데이터베이스 회복기법  (0) 2021.05.03
SMALL

삭제하려는 데이터가 부모이고, 자식이 있으면 문제가 생길 수 있다. 이와 같이 참조 무결성 제약조건을 만족시키기 위한 DBMS 옵션 4가지가 있음.

 

  • 제한(Restricted) : 문제가 되는 연산을 거절한다.
  • 연쇄(Cascade) : 참조되는 릴레이션에서 튜플을 삭제하고 참조하는 릴레이션에서 이 튜플을 참조하는 튜플도 함께 삭제한다.
  • 널값(Nullify) : 참조되는 릴레이션에서 튜플을 삭제하고 참조하는 릴레이션에서 이 튜플을 참조하는 튜플들의 외래키에 NULL을 넣는다.
  • 기본값(Default) : Null을 넣는 대신에 디폴트 값을 넣는다.
LIST

'전공 > 데이터베이스' 카테고리의 다른 글

관계대수 연산자  (0) 2021.05.09
무결성 종류  (0) 2021.05.09
병행제어  (0) 2021.05.06
데이터베이스 회복기법  (0) 2021.05.03
VIEW 장단점  (0) 2021.05.03
SMALL

병행수행 문제점

- 갱신 분실(lost update)

- 모순성(inconsistency)

위와 같이 트랜잭션이 실행되면 사용자가 원하는 값이 나오지 않을뿐더러, 일관성 없는 모순된 상태가 된다.

 

- 연쇄복귀(cascading rollback)

T1이 롤백되면 T2도 같이 롤백되는 연쇄복귀가 일어난다.

 

병행제어 목적

- 데이터베이스 공유 최대화

- 응답 시간 단축

- 시스템 활용도 증대

 

병행제어 기법

1. 로킹기법

- 두 개의 연산 lock와 unlock 연산으로 트랜잭션의 데이터를 상호배제하여 제어하는 기법

- 로킹 규약

  • 트랜잭션 T가 read나 write 연산을 하려면 반드시 먼저 lock 실행되어야함
  • 트랜잭션 T가 실행한 lock은 T가 종료전에 반드시 unlock 실행되어야함
  • 트랜잭션 T는 다른 트랜잭션에 의해 이미 lock가 걸려있으면 다시 lock 실행할수 없음
  • 트랜잭션 T는 lock이 실행되지 않았다면, unlock 실행할수 없음

- 로킹종류

  • 공용 로크(shared lock) : 트랜잭션 T가 데이터 x에 공용 로크를 걸면, read는 가능하나 write는 불가능(다른 트랜잭션도 read만 가능)
  • 전용 로크(exclusive lock) : 트랜잭션 T가 데이터 x에 전용 로크를 걸면 read, write 모두 가능하나 다른 트랜잭션은 read, write가 불가능

2. 2단계 로킹기법(2PLP: two-phase locking protocol)

- 기본적인 로킹기법은 직렬 가능성이 보장되지 않지만, 2단계 로킹기법은 직렬성을 보장

- 2PLP 규악

  • 확장 단계(growing phase) : 트랜잭션은 새로운 lock 연산만 실행할 수 있고, unlock 연산은 수행할 수 없는 단계
  • 축소 단계(shrinking phase) : 트랜잭션은 unlock 연산만 실행할 수 있고, 일단 unlock 연산은 실행하면 lock 연산은 더 이상 실행할 수 없는 단계

- 트랜잭션 하나에 unlock이 나오기전에 모든 값에 대한 lock이 나오면 2plp로 직렬 가능한 스케줄이라고 보면된다.

- 엄밀 2단계 로킹기법(strict 2PLP) : 모든 독점 lock은 트랜잭션 완료할 때까지 unlock하지 않는 것이며, 연쇄 복귀 문제가 일어 나지 않음

- 엄격 2단계 로킹기법(rigorous 2PLP) : 로킹이 2단계일 뿐 아니라 모든 로크는 트랜잭션 완료할 때까지 unlock하지 않는 것

- 2PLP는 직렬 가능성을 보장하지만 반면 데드락 문제를 내포하고 있음

 

3. 타임스탬프 순서 기법

- 트랜잭션을 비직렬로 실행한 것이 타임스탬프 순서대로 트랜잭션을 실행한 직렬 스케줄의 결과와 항상 같게 되는 것을 보장하는 것

- 타임스탬프 순서를 위반하게되면 연쇄 복귀를 하게 되는 문제점이 있음

- 타임스탬프 순서대로 실행 되기 때문에 충돌 직렬 가능성을 보장

- 교착상태는 발생하지 않음

 

4. 다중 버전 병행제어

- 접근하려는 트랜잭션의 타임스탬프와 여러버전의 타임스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하는 기법

 

5. 낙관적 병행제어

- 아무 검사를 실시하지 않고 트랜잭션이 완료된후 일괄 검사를 하는 기법

- 판독, 확인, 기록 단계를 거쳐서 수행

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

무결성 종류  (0) 2021.05.09
참조 무결성 제약조건 만족시키기 위한 DBMS 옵션  (0) 2021.05.09
데이터베이스 회복기법  (0) 2021.05.03
VIEW 장단점  (0) 2021.05.03
VIEW 변경이 불가능한 경우  (0) 2021.05.03
SMALL

** REDO는 영속성을 보장

** UNDO는 원자성을 보장

지연 갱신 회복기법

- 트랜잭션 커밋 완료까지 갱신 내용을 로그에만 저장하고 DB에 저장하지 않고 지연

- 중간에 갱신을 하지 않았음으로 UNDO가 필요 없고, 원자성을 보장

- REDO만 하면 됨

 

즉시 갱신 회복기법

- 데이터 변경 시 로그와 DB에 즉시 갱신

- 커밋되기 전에 장애가 나면 UNDO, 커밋 후에 장애가 나면 REDO를 수행

 

체크포인트 회복기법

- 시스템 장애 시 REDO, UNDO를 해야 할 트랜잭션을 결정하기 위해서는 이론적으로는 로그를 전체 확인 필요한데, 이러면 시간 소요 및 REOD 필요 없는 트랜잭션을 또 REDO 해야하는 문제가 생기는걸 해결하는 기법

- UNDO를 수행하여 회복하는 것을 후진 회복, REDO를 수행하여 회복하는 것을 전진 회복

- T2는 검사시점 이후 부분만 REDO, T3, T5는 전체 UNDO, T4는 REDO

 

그림자 페이징 기법

- 로그를 사용하지 않고, 트랜잭션 실행동안 현재 페이지 테이블과 그림자 페이지 테이블 2개를 관리하는 기법

- 데이터 변경 시 현재 페이지 테이블만 변경, 회복 시 현재 페이지 테이블을 그림자 테이블로 대체

- UNDO 연산이 간단하며, REDO 연산이 필요없기에 신속한 회복 가능

- DB 페이지 변경 시 물리적 위치의 변경으로 인해 단편화가 발생

 

미디어 회복 기법

- 비휘발성 저장 장치가 손상될 경우 사용되는 회복 기법

- 주기적으로 데이터를 덤프하여 장애 시, 최근 덤프를 DB에 적재

- 덤프를 다른 저장소에 옮길 때 대용량 데이터 전송이 필요하며, 이 때, 트랜잭션 처리를 중단해야하기에 CPU 낭비가 되어 비용이 많이 소요

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

참조 무결성 제약조건 만족시키기 위한 DBMS 옵션  (0) 2021.05.09
병행제어  (0) 2021.05.06
VIEW 장단점  (0) 2021.05.03
VIEW 변경이 불가능한 경우  (0) 2021.05.03
릴레이션 특징  (0) 2021.05.03
SMALL

VIEW 장점

- 논리적 독립성을 제공

- 데이터 접근을 제어함으로써 보안제공

- 사용자 데이터 관리를 간단하게 함

- 하나의 테이블을 여러 개의 상이한 뷰를 정의하여 사용자 요구에 따라 활용가능

 

VIEW 단점

- 뷰의 정의를 변경할 수 없다.

- 뷰는 삽입, 삭제, 갱신 연산에 많은 제한을 가지고 있다.

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

병행제어  (0) 2021.05.06
데이터베이스 회복기법  (0) 2021.05.03
VIEW 변경이 불가능한 경우  (0) 2021.05.03
릴레이션 특징  (0) 2021.05.03
데이터베이스 특징  (0) 2021.05.03
SMALL

VIEW 변경 불가능한 경우

- 뷰의 열이 상수나 산술 연산자 또는 함수가 사용된 산술 식으로 만들어지면 변경이 허용되지않는다.

- 집계 함수(COUNT, SUM, AVG, MAX, MIN)가 관련되어 정의된 뷰는 변경할 수 없다.

- DISTINCT, GROUP BY 또는 HAVING이 사용되어 정의된 뷰는 변경할 수 없다.

- 두 개 이상의 테이블이 관련되어 정의된 뷰는 변경할 수 없다.

- 변경할 수 없는 뷰를 기초로 정의된 뷰는 변경할 수 없다.

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

데이터베이스 회복기법  (0) 2021.05.03
VIEW 장단점  (0) 2021.05.03
릴레이션 특징  (0) 2021.05.03
데이터베이스 특징  (0) 2021.05.03
데이터베이스 정의  (0) 2021.05.03
SMALL

릴레이션 특징

- 투플들은 모두 상이(튜플의 유일성)

- 투플 사이에는 순서가 없음(튜플의 무순서성)

- 애트리뷰트 사이에는 순서가 없음(애트리뷰트의 무순서성)

- 모든 애트리뷰트 값은 원자값(애트리뷰트의 원자성)

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

VIEW 장단점  (0) 2021.05.03
VIEW 변경이 불가능한 경우  (0) 2021.05.03
데이터베이스 특징  (0) 2021.05.03
데이터베이스 정의  (0) 2021.05.03
RAID  (0) 2020.09.18
SMALL

데이터베이스 특징

- 실시간 접근성

- 계속적인 변화

- 동시공용

- 내용에 의한 참조

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

VIEW 변경이 불가능한 경우  (0) 2021.05.03
릴레이션 특징  (0) 2021.05.03
데이터베이스 정의  (0) 2021.05.03
RAID  (0) 2020.09.18
데이터베이스 설계단계  (0) 2020.09.17

+ Recent posts