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