7장 DBMS 구조

Download Report

Transcript 7장 DBMS 구조

제 7장 DBMS 구조
•
•
•
DBMS 기능
DBMS 구성 요소
물리적 저장 구조
7.1 DBMS의 기능







질의어 제공 (query language)
데이타 저장 관리
트랜잭션 관리 (transaction management)
데이타 무결성 유지 (data integrity)
동시성 제어 (concurrency control)
회복 (recovery)
보안 (security)
Copyright  2002 by S.-g. Lee and J.-y. Chang
질의어

데이타 정의 언어(DDL)

스키마(schema) 정의
• 스키마: 데이타베이스에 저장될 데이타의 구조
• 메타 데이타(meta data)
• 스키마에 대한 정보
• 릴레이션 정보, 속성, 소성의 데이터 타입, 기본 키, 외래 키, 릴레이션
크기 등의 정보를 저장
• 데이타 사전(data dictionary)
• 메타 데이타를 저장하는 저장 구조

데이타 조작 언어(DML)


데이타의 추가, 삭제, 검색
SQL: 질의어의 표준(DDL + DML)
질의어의 사용
DML
데이타
Copyright  2002 by S.-g. Lee and J.-y. Chang
DBMS
스키마
스키마
DDL
메타데이타
데이타 사전
데이타 저장 관리



데이타베이스에 저장된 데이타
를 운영 체제의 화일 시스템을
이용하여 입출력
화일 시스템에 저장된 저수준
의 데이타와 응용 프로그램 사
이의 인터페이스 제공
효율성에 따라 다양한 자료 구
조로 저장

순차 화일, B+ 트리 등
질의, 결과
DBMS
저수준 데이타
운영 체제
File system
Disk I/O
Disk
Copyright  2002 by S.-g. Lee and J.-y. Chang
데이타 무결성 유지



현실 세계에 존재하는 실제 정보와 일치
데이터가 갖추어야 할 조건
관계형 데이타베이스 모델에서의 무결성 제약 조건(5장)





개체 무결성
참조 무결성
키 제약
도메인 제약
응용상에서의 제약


DBMS의 기능을 통한 제약
• Trigger
• Assertion
응용 프로그램내에서 제약
Copyright  2002 by S.-g. Lee and J.-y. Chang
기타 기능

트랜잭션 관리


정의된 트랜잭션에 대해 ACID 성질을 만족시키도록
관리
보안



다수의 사용자들에 대해 각기 다른 데이타에 대한 접
근 권한을 부여하여 부당한 변경, 자료의 유출 방지
소유자(owner), DBA만이 권한을 부여
시간에 따른 권한 부여
• 예> 수강 신청 기간 중에만 학생들에게 수강 릴레이션에 대
한 정보 갱신 권한을 허용하고 나머지 기간에는 검색만 허용


동시성 제어
회복
Copyright  2002 by S.-g. Lee and J.-y. Chang
7.2 DBMS 구성요소






질의 컴파일러 (query compiler)
내장 질의 전처리기 (embedded query preprocessor)
질의 실행기 (query evaluator)
저장 관리기 (storage manager)
트랜잭션 관리기 (transaction manager)
저장 구조 (storage structure)
Copyright  2002 by S.-g. Lee and J.-y. Chang
DBMS의 구성 요소 도해
DBMS 구성 요소
Copyright  2002 by S.-g. Lee and J.-y. Chang
각 구성 요소의 역할(1)

질의 컴파일러 (query compiler)

비절차적 질의어(SQL)
• 하나의 질의어에 대해 다양한 실행 절차가 가능
• 가장 효율적인 저수준의 DBMS 내부 실행 절차 수립
 질의 최적화(Query Optimization)

내장 질의 전처리기 (embedded query preprocessor)



응용 프로그램에 내장된 질의어  호스트 언어의 내부적인 함
수 호출로 변환
질의 컴파일러의 기능을 활용하여 효율적인 세부 절차 수립
질의 실행기 (query evaluator)

질의 컴파일러와 내장 질의 전처리기에서 만들어진 저수준의
실행 절차를 실행
• 저장 관리기에 디스크 입출력을 요청

결과를 사용자나 응용 프로그램에 반환
Copyright  2002 by S.-g. Lee and J.-y. Chang
각 구성 요소의 역할(2)

저장 관리기 (storage manager)




트랜잭션 관리기 (transaction manager)



질의 실행기에서 요청되는 입출력 연산 수행
운영체제를 통하여 디스크 등의 저장 장치에 데이타를 관리
버퍼를 이용한 입출력 연산의 최소화
트랜잭션의 ACID 성질을 만족하도록 관리
트랜잭션 상태 모니터링, 동시성 제어, 복구
저장 구조 (storage structure)


저장 데이타를 관리하기 위한 구조
데이타베이스, 데이타 사전, 로그 등
Copyright  2002 by S.-g. Lee and J.-y. Chang
DBMS의 질의처리 과정
DBMS
5
결과
질의어 입력
select 학생.학번
From 학생, 학과
where …
1
질의
컴파일러
실행 절차
질의
처리기
2
학
생
학
과
요청
3
Monitoring
트랜잭션
관리기
데이타 사전
로그
저장 관리기
버퍼
입
출 4
력
저장 장치
Copyright  2002 by S.-g. Lee and J.-y. Chang
데이타베이스
DBMS의 질의처리 과정의 예

사용자의 입력질의
SELECT 학생.학번
FROM
학생, 학과
WHERE 학생.학과번호 = 학과.학과번호 and 학과.학과명 = “전산과”

가능한 실행 절차의 예(일부)
 학생.학번 ( 학과.학과명 = “전산과” (학생 
학생.학과번호 = 학과.학과번호
 학생.학번 (( 학과.학과명 = “전산과” (학과)) 
 학생.학번(( 학생.학번, 학생.학과번호
( 학과.학과명 =“전산과”(학과)))

학과))
학생.학과번호 = 학과.학과번호
학생.학과번호 = 학과.학과번호
학생)
학생)
질의 컴파일러가 첫째 실행 절차가 비용이 가장 적은 것으로 판단
하였다고 가정
Copyright  2002 by S.-g. Lee and J.-y. Chang
DBMS의 질의처리 과정의 예

생성된 저수준의 실행 절차
Copyright  2002 by S.-g. Lee and J.-y. Chang
DBMS의 질의처리 과정의 예

실행 과정


저장 관리기로부터 학과 릴레이션과 학생 릴레이션
에 대한 읽기 연산을 요청
질의 실행기는 두 릴레이션의 조인 연산을 실행하여
임시 릴레이션(temp)을 생성
• 주기억 장치 혹은 디스크에 저장

임시 릴레이션의 각 튜플들을 검사해서 학과가 전산
과인 튜플에 대해 학번 속성만을 추출하여 그 결과
(result)를 사용자에게 출력.
Copyright  2002 by S.-g. Lee and J.-y. Chang
DBMS의 질의처리 과정의 예

트랜잭션 관리기의 역할







새로운 트랜잭션의 시작을 감지하고 이 트랜잭션에 고유번호
(예를 들어 T1)를 부여
로그에 트랜잭션이 시작했다는 사실을 기록
트랜잭션이 쓰기 연산을 실행가게 되면 그 내용을 로그에 기록
트랜잭션이 실패하게 되면 즉시 복귀를 실행
저장 관리기가 읽기 연산이나 쓰기 연산을 실행하게 되면 2단계
잠금 규약에 따라 적절한 잠금과 해제 연산을 실행
트랜잭션이 정상적으로 종료되면 이 사실을 로그에 다시 기록
최종 로그 기록
<T1 start>
<T1 , z, temp>
<T1 commit>
Copyright  2002 by S.-g. Lee and J.-y. Chang
DBMS의 질의처리 과정의 예

질의가 응용 프로그램에 내장된 것일 경우






전처리기가 응용 프로그램내의 질의부분을 추출
질의 컴파일러에 최적의 실행 절차를 만들어내도록
요청
질의 컴파일러가 실행 절차를 생성
전처리기는 그 내용을 DBMS가 제공하는 함수 호출
문을 이용하여 응용 프로그램을 재구성
최종적으로 응용 프로그램을 컴파일하고 실행 프로
그램을 생성
응용 프로그램을 실행
• 질의 컴파일러는 더 이상 필요 없고 질의 실행기만을 이용하
여 질의를 실행
Copyright  2002 by S.-g. Lee and J.-y. Chang
7.3 물리적 저장구조




물리적 데이터베이스
화일 구조
클러스터링
인덱스
Copyright  2002 by S.-g. Lee and J.-y. Chang
물리적 데이타베이스



저장 매체의 관점에서 본 데이타베이스 형태
릴레이션과 튜플의 저장 형태
파일 시스템의 기능을 이용
DBMS(저장 관리기)
데이타 요청
요청된 데이타
운영체제(파일 시스템)
디스크 입출력
출력된 데이타
디스크
Copyright  2002 by S.-g. Lee and J.-y. Chang
화일 구조


DBMS의 모든 데이타는
화일 형태로 저장
블록(block)



화일 시스템
DBMS
페이지(page)
주기억 장치와의 고정된
입출력 단위
512 byte ~
릴레이션(튜플)과
파일(레코드)의 관계
Copyright  2002 by S.-g. Lee and J.-y. Chang
화일 구조

예)
create table 학과 {
학과번호
학과명
대학명



레코드1
integer,
char(10),
char(10)}
하나의 튜플을 저장하는데 최소 24byte가 필요
각 레코드는 화일의 블록 내에서 고정된 길이 혹은 가변적인 길이
로 저장된다.
Char가 아닌 varchar의 경우 가변길이 문자열이 효율적
레코드2
…
레코드n
블록 내에 고정 길이로 저장된 레코드의 예
Copyright  2002 by S.-g. Lee and J.-y. Chang
레코드1
레코드2
…
레코드n
블록 내에 가변 길이로 저장된 레코드의 예
클러스터링(clustering)

순차 화일



레코드들의 순서에 특별한 의미가 없다
같이 쓰이는 경우가 많은 데이타들이 분산되어
있으면 탐색 시간이 오래 걸림
클러스터링


동시에 자주 사용되는 레코드들을 묶어서
(clustering) 같은, 혹은 인접한 블록에 저장
탐색 시간(seek time)을 줄임
Copyright  2002 by S.-g. Lee and J.-y. Chang
클러스터링(clustering)

클러스터링이 안된 파일 구조
Copyright  2002 by S.-g. Lee and J.-y. Chang
클러스터링(clustering)

단과대학별로 클러스터링이 된 화일구조


단과대학별 검색 이외의 검색에는 도움이 안됨
하나의 릴레이션 당 하나의 클러스터링만 가능
Copyright  2002 by S.-g. Lee and J.-y. Chang
인덱스(index)

특정 조건을 만족하는 레코드 검색 방법



그 레코드가 파일 내의 어떤 블록 내에 위치하는가를
우선 알아야 함
미리 알지 못한다면 모든 블록들을 읽어 순차적으로
검색해서 원하는 레코드를 찾아야 함
인덱스는 원하는 레코드를 빠른 시간내에 찾을 수 있
는 기번을 제공
• 예) 도서관에서 인덱스를 이용한 도서 검색
Copyright  2002 by S.-g. Lee and J.-y. Chang
인덱스

레코드에 대한 저장 위치를 별도로 기록한 구조


(검색 키, 주소) 쌍으로 구성
• 검색 키: 검색에 이용되는 값
• 주소: 레코드의 물리적 위치
검색 키로 지정된 값 이외의 속성으로 검색 시에는 도
움이 안됨  별도의 인덱스 필요
검색 키
주소
Copyright  2002 by S.-g. Lee and J.-y. Chang
인덱스

인덱스의 생성



인덱스와 성능




대부분의 DBMS에서는 기본 키에 대한 인덱스는 자
동으로 생성
DBA가 필요에 따라 질의어를 통해 인덱스를 생성
검색에 대한 성능은 일반적으로 증가
삽입, 삭제, 수정에 대해서는 성능 저하가 발생할 수
있다(인덱스의 변경 비용)
인덱스를 위한 저장 공간의 소모
인덱스의 자료 구조

다양한 용도의 자료 구조가 존재
• 속도, 저장 공간, 운용의 효율성 등을 고려

B+ 트리 인덱스 구조가 보편적으로 사용된다.
Copyright  2002 by S.-g. Lee and J.-y. Chang
B+ 트리 인덱스 자료 구조
B+ 트리
루트와 하위 노드들은
검색키와 하위 노드의
주소를 기록
…
…
…
…
…
…
…
노드
주소
검색
키
검색
키
노드
주소
Copyright  2002 by S.-g. Lee and J.-y. Chang
…
…
…
…
…
…
…
…
단말 노드는 인근 형제 노드에
대한 포인터를 가진다
검색
키 …
레코드 주소
리스트
…
…
…
…
…
…
…
형제 노드 주
소
단말 노드는 검색키와 실제 저장된
데이타에 대한 주소를 기록
B+ 트리 인덱스 자료 구조

B+ 트리의 성질

루트에서 단말 노드까지의 모든 경로의 길이는 같다.

루트 노드는 최대 n개의 자식 노드를 갖는다.
• n을 차수라 한다

루트 노드와 말단 노드를 제외한 중간 노드들은 최소 n/2 개
최대 n개의 자식 노드를 갖는다.

각 노드의 검색 키 값은 정렬된다.

각 검색 키 값에 대해 왼쪽의 포인터가 가리키는 자식 노드는
그 검색 키 값보다 작거나 같은 값을 가지고, 오른쪽 포인터가
가르키는 자식 노드는 큰 값을 가진다.
Copyright  2002 by S.-g. Lee and J.-y. Chang
B+ 트리 인덱스 자료 구조

차수가 3인 B+ 트리의 예
Copyright  2002 by S.-g. Lee and J.-y. Chang
B+ 트리 인덱스 자료 구조

루트 및 중간 노드 상세 구조

P1 ~ Pn은 자식 노드를 가리키는 포인터

key1 ~ keyn-1은 검색키

key1 < key2 < …<keyn-1

Pi+1이 가리키는 모든 하위 노드들의 검색키는 keyi보다
는 크고 keyi+1보다는 작거나 같은 값을 갖는다.
Copyright  2002 by S.-g. Lee and J.-y. Chang
B+ 트리 인덱스 자료 구조

B+ 트리를 이용한 성능 향상의 정도


레코드의 수가 많을 수록 인덱스를 이용한 검색의 성능은 인덱
스가 없는 경우보다 월등함
예) 10,000개의 레코드
• 인덱스가 없으면 최악의 경우 10,000번을 검색
• 차수가 10인 B+-트리 인덱스가 존재하면
• 루트부터 4번의 노드 접근만이 필요함
Copyright  2002 by S.-g. Lee and J.-y. Chang
SQL을 이용한 인덱스 정의

SQL 표준에는 포함되지 않으나 대부분의
DBMS에서 지원
생성
CREATE INDEX 인덱스이름 ON 릴레이션이름 (속성 리스트)
검색키의 리스트
삭제
DROP INDEX 인덱스이름
Copyright  2002 by S.-g. Lee and J.-y. Chang
SQL을 이용한 인덱스 정의

예)

학과 릴레이션에서 학과명에 대한 인덱스 생성 명령
은 다음과 같다.
CREATE INDEX dept_index on 학과 (학과명)

학과명의 값들이 학과 릴레이션에 유일하게 존재한
다면
CREATE UNIQUE INDEX dept_index on 학과 (학과명)
• 학과 릴레이션에 튜플을 삽입할 경우 여기서 생성된 인덱스
를 이용하여 동일한 학과명이 이미 존재하는 가를 먼저 검색
• 만약 그렇다면 삽입을 하지 않고 에러 메시지를 내보냄
• 학과명을 학과 릴레이션의 후보 키로 정의하는 효과
Copyright  2002 by S.-g. Lee and J.-y. Chang