Upload
hyun-woong-choi
View
264
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
1
데이터베이스 개념
DBMS데이터 모델
3 단계 스키마 아키텍춰DBMS 언어
2
Has everyone noticed that all the letters of the word database are typed with the left hand? Now the layout of the QWERTY typewriter keyboard was designed, among other things, to facilitate the even use of both hands. It follows, therefore, that writing about databases is not only unnatural, but a lot harder than it appears.
- Anonymous
교재 기본 교재
Database Management Systems, 3rd Ed., Ramakrishnan/Gehrke
번역본 : 데이터베이스 시스템 , 3rd Ed., 김수희 /김응모 … 역
참고 교재 Database System Concepts, 5th Ed.,
Silberschatz/Korth/Sudarshan 번역본 : 데이터베이스 시스템 , 5th Ed., 김형주 역 Fundamentals of Database Systems, 6th Ed.,
Elmasri/Navathe 번역본 : 데이터베이스 시스템 , 6th Ed., 황규영 , 홍의경… 역
Database Systems The Complete Book, Garcia-Molina/Ullman/Widom
강의 평가 숙제 : 10% 프로그램 과제 : 30% 중간 /기말 고사 : 40%
중간 /기말 고사 , 필요 시 퀴즈 수업 태도 : 20%
출석 점수 없음 ( 단 , 수업일수의 2/3 출석 요구 )
지각 /잡담 /손전화 /수면 /수업 중 강의실 이탈 등은 모두 수업 태도에 반영
5
데이터베이스란 무엇인가 ? (1)
데이터베이스 : 관련있는 데이터의 모음
데이터 : 기록될 수 있고 , 의미를 갖는 알려진 사실 관련된 데이터의 모음을 모두 데이터베이스로 볼
수 없다 . ( 예 , 책에 있는 단어들의 모음 )
실제로 “ 데이터베이스” 라는 단어를 사용할 때 보다 제한적인 의미를 갖는다 .
6
데이터베이스란 무엇인가 ? (2)
“ 데이터베이스” 는 다음과 같은 성질을 갖는다 . 실세계의 일부분을 표현 데이터가 논리적으로 일관성을 가짐 데이터베이스는 특별한 목적으로 설계되고
생성된다 . 의도된 사용자 그룹과 이러한 사용자가 관심을 갖는 애플리케이션을 갖는다 .
지속성 (persistence) 을 가짐
7
데이베이스 관리 시스템 (DBMS)
DBMS (Database Management System) 데이터베이스를 저장하고 , 관리하고 ,
액세스를 편리하게 해주는 시스템 소프트웨어
데이터베이스시스템 (Database System) DBMS 에 database 가 포함된 형태
8
데이터베이스 시스템의 응용 (1)
은행 : 고객 정보 , 계좌 , 대출 정보 , 트랜잭션
항공 : 예약 및 스케줄 정보 대학 : 학생 정보 , 수강 신청 , 성적 신용 카드 트랜잭션 : 신용 카드로 구매 ,
매월 카드 사용 내역 관리 통신 : 통화 내역 , 매월 사용 내용 생성 ,
전화 카드 잔고 관리 , 통신 네트워크에 대한 정보 관리
9
데이터베이스 시스템의 응용 (2)
재무 : 주식 , 채권과 같은 재정 발행권의 유지 , 판매 , 구매 등에 관한 정보 관리
판매 : 고객 , 상품 , 구매 정보 관리 제품 생산 : 상품 판매량에 대한 정보 ,
상품 판매량 , 재고 , 주문에 대한 관리 인적 자원 : 고용인에 대한 정보 , 급료 ,
세금 , 급료 명세서 생성
10
데이터 관리를 위한 운영체제의 지원
데이터를 RAM 에 저장 모든 프로그래밍 언어에서 사용 RAM 은 빠르며 임의 접근 용량과 휘발성이 문제
모든 OS 는 파일 시스템을 지원 마그네틱 디스크에 있는 파일을 관리 파일에 대한 open, write, read, seek, close
연산 제공 파일에 접근 권한 제공
11
파일 시스템의 문제점 학교 데이터베이스의 예
학생과
교무과
학적과
응용 프로그램
응용 프로그램
응용 프로그램
데이터 액세스
데이터 액세스
데이터 액세스
학생 파일
학생 파일성적 파일
과목 파일
학번 , 이름 , 주소 , 전화번호 , 성별 , 학과
학번 , 이름 , 과목 , 학점
과목명 , 강사명 , 개설년도 , 강의실
학번 , 이름 , 본적 , 학과
12
파일 시스템 대신 DBMS 사용
DBMS
응용 프로그램데이터 액세스
응용 프로그램데이터 액세스
응용 프로그램데이터 액세스
학생 파일
과목 파일
성적 파일
학생과
학적과
교무과
13
DBMS 의 필요성 (1)
조직의 데이터를 한 군데 저장 데이터를 통합시킴 데이터를 공유 사용의 편리
중복성을 제거 일관성 있는 데이터 값을 제공 일관성 있는 데이터 포맷을 제공 액세스의 용이성
14
DBMS 의 필요성 (2)
동시에 다수 사용자 이용 가능 트랜잭션 처리 /동시성 제어
서로 다른 사용자에게 서로 다른 뷰 제공 데이터의 일부분 제공
복잡하고 다양한 질의를 간편하게 표현 Ad-hoc query
15
DBMS 의 필요성 (3)
프로그램 - 데이터 독립성 데이터 추상화
DBMS 는 사용자에게 데이터가 어떻게 저장되었는가에 대한 상세한 정보를 제공하지 않고 데이터를 개념적으로 표현할 수 있는 방법을 제공 => 이러한 데이터 추상화는 “ 데이터 모델” 로 부름
16
DBMS 의 필요성 (4)
보안 기능 제공 데이터와 애플리케이션에 고유한 무결성을
제공 회복 기능 제공
갱신중에 일어나는 실패를 처리
17
DBMS 사용이 필요치 않은 경우
데이터베이스와 애플리케이션이 간단하고 , 정의가 잘되어 있고 , 변경 가능성이 없는 경우
실시간 제약 사항이 엄격할 경우 => 실시간 데이터베이스
데이터에 대한 다수 사용자의 액세스가 요구되지 않는 경우
18
데이터베이스 시스템
데이터베이스 시스템
애플리케이션 프로그램 / 질의
질의 / 프로그램을 처리하는 소프트웨어
저장된 데이터를 액세스하는 소프트웨어
DBMS
데이터베이스메타데이터
19
데이터 모델
데이터 모델 데이터베이스의 구조를 기술하는 개념들의 집합
• 데이터 타입 , 관계 , 제약 조건 데이터베이스 상에 수행되는 연산들의 집합
데이터베이스 구조를 기술하는 개념들의 종류에 따라 데이터 모델을 분류 상위 레벨 또는 개념적 데이터 모델 표현 또는 구현 데이터 모델 하위 레벨 또는 물리적 데이터 모델
20
상위 모델 ( 개념적 데이터 모델 )
사용자가 데이터를 인식하는 방식에 가까운 개념을 제공
엔티티 (entity), 애트리뷰트 (attribute), 관계(relationship) 와 같은 개념을 사용
사용되는 데이터 모델 개체 - 관계 데이터 모델 (Entity-Relationship Data
Model) Semantic Data Model Conceptual Object Modeling using UML (Universal
Modeling Language)
21
표현 데이터모델 ( 구현 데이터모델 )
상위 레벨과 하위 레벨 사이에 존재 일반 사용자가 이해할 수 있는 개념을
제공하면서 컴퓨터에서 데이터가 조직화될 수 있는 방식을 제공
가장 많이 사용되는 모델 ( 상용 DBMS 에서 사용 )
• 관계 데이터 모델• 네트워크 데이터 모델• 계층 데이터 모델• 객체 지향 데이터 모델
22
하위 레벨 ( 물리적 데이터모델 )
데이터가 컴퓨터에 어떻게 저장되는지에 대한 세부 사항을 기술 레코드 포맷 레코드 순서 액세스 경로 : 특정 데이터베이스 레코드를 효율적으로 탐색하기 위한 구조
23
스키마와 인스턴스 (1)
데이터 모델에서 데이터베이스에 대한 기술(description) 과 데이터베이스 자체를 구별하는 것이 중요
데이터베이스에 대한 기술은 “ 데이터베이스 스키마” 라 함
스키마 다이어그램 : 데이터베이스 스키마를 도식화한 것
스키마 다이어그램은 스키마의 일면만을 나타냄 ( 예로 데이터 타입이 명시되지 않음 )
스키마는 자주 변경되지 않음
24
스키마와 인스턴스 (2)
데이터베이스에 있는 실제 데이터는 자주 변경될 수 있음
어떤 특정 시점에 데이터베이스에 있는 데이터는 “ 데이터베이스 상태 ( 또는 인스턴스의 집합 )” 라 함
데이터베이스 스키마와 데이터베이스 상태 사이의 구별이 중요
새로운 데이터베이스를 정의할 때 DBMS 에 데이터베이스 스키마를 명시하지만 이 때 해당 데이터베이스 상태는 비어 있음 (empty state)
25
데이터베이스 스키마의 예 타입 사용
STUDENT(StudentNumber: string, Name: string, Age: integer, Dept: string)DEPARTMENT(Name: String, Location: String, Chairman: String)
타입 사용하지 않음STUDENT(StudentNumber, Name, Age, Dept)DEPARTMENT(Name, Location, Chairman)
StudentNumber Name Age Dept
STUDENT
Name Location Chairman
DEPARTMENT
스키마 다이어그램
26
인스턴스의 예
StudentNumber
Name
Age Dept
2234 김수철 20 기계2345 홍영수 19 환경2789 이영희 20 컴퓨터
STUDENT
Name Location Chairman
토목 공 1-102 김성환환경 공 4-203 이수영기계 공 6-202 권진구컴퓨터 공 6-403 정진범
DEPARTMENT
스키마
스키마
인스턴스
인스턴스
27
3 단계 - 스키마 아키텍춰 (1)
DBMS 의 데이터를 3 단계로 추상화하여 표현
사용자 애플리케이션과 물리적 데이터베이스를 분리하기 위한 목적
외부 레벨
외부 /개념 사상
개념 레벨
개념 /내부 사상
내부 레벨
외부 스키마 1
개념 스키마
외부 스키마 2
물리적 스키마
28
3 단계 - 스키마 아키텍춰 (2) 내부 레벨 ( 물리적 스키마 )
데이터베이스의 물리적 저장 구조를 기술 개념 레벨 ( 개념 스키마 )
사용자를 위한 전체 데이터베이스 구조를 기술 물리적 저장 구조의 세부 사항을 숨김 엔티티 , 데이터 타입 , 관계 등을 기술하는데 집중 상위 레벨의 데이터 모델 또는 구현 데이터 모델을 사용
외부 레벨 ( 외부 스키마 , 뷰 ) 외부 스키마 또는 사용자 뷰 특정 사용자 그룹의 관심을 갖는 부분을 나타내고 나머지는
은폐함 상위 레벨의 데이터 모델 또는 구현 데이터 모델을 사용
Example: University Database
Conceptual schema: Students(sid: string, name: string, login: string,
age: integer, gpa:real) Courses(cid: string, cname:string, credits:integer) Enrolled(sid:string, cid:string, grade:string)
Physical schema: Relations stored as unordered files. Index on first column of Students.
External Schema (View): Course_info(cid:string,enrollment:integer)
30
3 단계 스키마 아키텍춰의 필요성 데이터 독립성
응용 프로그램을 데이터의 구조와 저장 방식의 변경으로부터 격리 – “ 실제 응용 프로그램의 변경은 자주 일어나지 않는다 .” 에 기초
데이터베이스 시스템의 한 레벨의 스키마를 다른 레벨의 스키마를 변경시키지 않고 변경시킬 수 있는 능력을 제공
논리적 데이터 독립성 응용 프로그램을 데이터의 논리적 구조 변경으로부터 보호 외부 레벨과 개념 레벨 사이의 독립성 ( 외부 레벨이나 응용
프로그램을 변경시키지 않고 개념 스키마를 변경시킬 수 있는 능력 – 외부 /개념 사상에 의하여 달성 )
물리적 데이터 독립성 데이터의 논리적 구조를 물리적 저장구조의 변경으로부터 보호 개념 레벨과 내부 레벨 사이의 데이터 독립성 ( 개념 스키마를 변경시키지 않으면서 물리적 스키마를 변경시킬 수 있는 능력 – 개념 /내부 사상에 의하여 달성 )
31
DBMS 언어
데이터 정의어 (Data Definition Language: DDL) 데이터베이스 스키마를 정의
데이터 조작어 (Data Manipulation Language: DML) 데이터를 검색 , 삽입 , 삭제 , 수정하기 위한 언어 DML 은 범용 프로그래밍 언어 (host 언어 ) 에 삽입되어 사용
32
동시성 제어 (Concurrency Control)
DBMS 의 성능 향상을 위해 사용자 프로그램을 동시 수행 디스크 액세스는 빈번 , 상당히 저속 CPU 는 다수 프로그램을 동시에 수행
서로 다른 프로그램의 작업이 교차할 때 문제 발생
DBMS 는 이런 문제가 발생하지 않도록 보장 사용자는 혼자 사용하는 것처럼 보이게 함
(“Isolation”)
33
Example: Bad Interaction
You and your spouse each take $100,000 from different ATM’s at about the same time. The DBMS better make sure one account
deduction doesn’t get lost.
ATM1 ATM2read(balance);
read(balance);write(balance-100,000);
write(balance-100,000);
34
트랜잭션 관리 (Transaction Management)
트랜잭션 : 하나의 작업 단위로 이루어지는 연속적인 데이터베이스 동작 (reads/writes)
ACID 성질 Atomicity ( 원자성 ): all or nothing, 트랜잭션이 완전히
수행되든가 아니면 전혀 수행되지 않는 성질 , 부분적인 수행은 없음
Consistency ( 일관성 ): 데이터베이스 제약 조건이 유지됨 Isolation ( 고립성 ): 한 번에 하나의 트랙잭션이 수행되는 것처럼 보임
Durability ( 지속성 ): 완료된 트랜잭션의 결과가 시스템 장애에도 상실되지 않음
35
트랜잭션을 동시에 실행하기 위한 스케줄링
DBMS 는 {T1,…,Tn} 의 실행이 직렬 (serial) 실행 T1’…Tn’ 와 동등하다는 것을 보장 2PL(Two Phase Locking) protocol
Idea: 만일 Ti 의 동작 ( 예 : X 를 write) 이 Tj ( 예 : X 를 read) 에 영향을 준다면 Ti 는 X 에 먼저 lock 를 획득한 후 Tj 는 Ti 가 완료될 때까지 wait 이런 방법으로 트랜잭션을 순서화시킴
36
미완료 트랜잭션과 시스템 장애
Idea: 트랜잭션이 수행하는 동안 DBMS에 의해서 실행되는 모든 동작에 대한 log (history) 를 저장 데이터베이스에 변경이 이루어지기 전에
해당 로그를 안전한 장소에 저장 (WAL: Write-Ahead Log)
시스템 장애가 발생하면 , 부분적으로 실행된 트랜잭션은 log 를 사용하여 undo.
완료된 트랜잭션은 log 를 사용하여 redo.
37
DBMS 사용자 (1)
데이터베이스 구현자 (Database implementors) – Oracle, IBM, MS,…
최종 사용자 (End users) – DBMS 에 데이터를 저장 , 사용
데이터베이스 응용 프로그래머 (Database application programmers): DBMS vendor 가 제공하는 호스트 언어 , 데이터베이스
언어 , 소프트웨어 툴 (report writer, spreadsheet, statistical package, …) 을 사용하여 전문가가 아닌 일반 사용자가 데이터를 액세스하기 쉽도록 패키지 개발
DBMS 와 연동한 웹 서비스 제공
38
DBMS 사용자 (2)
데이터베이스 관리자 (DBA: Database administrators) 논리적 /물리적 스키마 설계 보안과 사용 권한 부여 데이터 손상으로부터 회복 , 데이터의
가용성을 높임 데이터베이스 튜닝
39
DBMS Architecture
Parser
Optimizer
Plan Executor
Operator Evaluator
File and Access Methods
Buffer Manager
Disk Space Manager
Transaction Manager
LockManager
RecoveryManager
QueryEvaluationEngine
DBMS
ConcurrencyControl
SQL Commands
Database
40
질의 처리 과정
DBMS의 구성 요소들. 점선은 저장 데이타 관리자의 제어를 통해 접근하는 것을 나타낸다.
DDL 문장 특권 명령
데이타베이스관리자
캐주얼사용자응용
프로그래머
응용프로그램대화식 질의
호스트 언어컴파일러
초보 사용자
저장 데이타베이스
저장 데이타관리자
동시성 제어/백업/회복 서브시스템
컴파일된(기작성)트랜잭션
프리컴파일러
DML 문장
DML컴파일러
질의컴파일러
런타임데이타베이스
처리기
시스템카탈로그/
데이타사전
DDL컴파일러
실행
실행
A
B
C
D
E
실행
(Parametric users)