데이타베이스 시스템 개요 Chapter 1 송 병 호 송 병 호 The slides for this text are organized into chapters. This lecture covers Chapter 1. Chapter 1: Introduction to Database Systems Chapter 2: The Entity-Relationship Model Chapter 3: The Relational Model Chapter 4 (Part A): Relational Algebra Chapter 4 (Part B): Relational Calculus Chapter 5: SQL: Queries, Programming, Triggers Chapter 6: Query-by-Example (QBE) Chapter 7: Storing Data: Disks and Files Chapter 8: File Organizations and Indexing Chapter 9: Tree-Structured Indexing Chapter 10: Hash-Based Indexing Chapter 11: External Sorting Chapter 12 (Part A): Evaluation of Relational Operators Chapter 12 (Part B): Evaluation of Relational Operators: Other Techniques Chapter 13: Introduction to Query Optimization Chapter 14: A Typical Relational Optimizer Chapter 15: Schema Refinement and Normal Forms Chapter 16 (Part A): Physical Database Design Chapter 16 (Part B): Database Tuning Chapter 17: Security Chapter 18: Transaction Management Overview Chapter 19: Concurrency Control Chapter 20: Crash Recovery Chapter 21: Parallel and Distributed Databases Chapter 22: Internet Databases Chapter 23: Decision Support Chapter 24: Data Mining Chapter 25: Object-Database Systems Chapter 26: Spatial Data Management Chapter 27: Deductive Databases Chapter 28: Additional Topics
DBMS란? 통합된 대규모 데이타 집단 실세계의 조직체를 모델링 - 개체 ( e.g., 학생, 과목 ) - 관계성 (e.g., 마돈나가 CS564과목을 수강함 ) 데이타베이스 관리 시스템(Database Management System DBMS)은 데이타베이스를 저장하고 관리하는 소프트웨어 패키지이다.
DBMS를 사용하는 이유 데이타 독립성(data independence) 과 효율적인 접근. 응용(application) 개발시간 감축. 데이타 무결성(data integrity)과 보안( security). 균일한 데이타 행정관리. 동시 접근(concurrent access), 손상복구(recovery from crashes). 3
데이타베이스를 배우는 이유 ? 계산에서 정보로 이전 데이타집단들의 다양성과 부피 증가. - at the “low end”:거미줄 같은 수많은 정보 통합 - at the “high end”: 과학적인 응용 데이타집단들의 다양성과 부피 증가. - 전자 도서관, 대화형 비디오, 인간 유전자 프로젝트, 지구관측시스템 프로젝트 - ... DBMS 활용이 필요해짐 DBMS는 대부분의 전산학 분야를 포괄함 - OS, 언어, 이론, “A”I, 멀티미디어, 논리
데이타 모델 데이타 모델( data model ): 데이타를 기술하기 위한 개념(요소)들의 모임. 스키마( schema): 주어진 데이타 모델에 의거한, 특정 데이타 집단에 대한 기술 내용. 관계 데이타 모델( relational model of data ): 현재 가장 널리 사용되는 데이타 모델. - 주 개념: 릴레이션( relation), 행과 열로 구성된 일종의 테이블 . - 각 릴레이션마다 소속 열, 즉 필드(field)들을 기술하는 스키마가 존재 5
추상화 단계 복수의 뷰(view), 단일 개념(conceptual) (논리적) 스키마, 단일 물리적(physical) 스키마. 뷰는 사용자가 데이타를 보는 관점을 기술. 개념 스키마는 논리적인 구조를 정의(규정). 물리적 스키마는 사용 화일과 인덱스들을 기술. 뷰 1 뷰 2 뷰 3 개념 스키마 물리적 스키마 스키마는 DDL로 정의하고 , 데이타는 DML로 수정/질의한다. 6
예: 대학의 학사 데이타베이스 개념 스키마: 물리적 스키마: 외부 스키마 (뷰): 학생 (학번: 문자열, 이름: 문자열, 로그인: 문자열, 나이: 정수, 평점평균: 실수) 과목 (과목번호: 문자열, 과목명: 문자열, 학점수: 정수) 수강 (학번: 문자열, 과목번호: 문자열, 평점: 문자열) 물리적 스키마: 릴레이션들은 무순서 화일로 저장 학생의 첫 필드에 인덱스 구성 외부 스키마 (뷰): 과목정보 (과목번호: 문자열, 수강인원: 정수) 7
데이타 독립성 응용 프로그램은 데이타의 구성 및 저장 방식의 변화로부터 격리됨 . 데이타 독립성 응용 프로그램은 데이타의 구성 및 저장 방식의 변화로부터 격리됨 . 논리적 데이타 독립성: 데이타의 논리적 구조 변화로부터 보호. 물리적 데이타 독립성: 데이타의 물리적 구조 변화로부터 보호 ☞ DBMS를 이용하는 장점 중 가장 중요한 것에 속함!
병행 제어 좋은 DBMS 성능을 위해서는 사용자 프로그램들을 동시에(병행) 수행하는 것이 필수적. 디스크 접근은 빈번하며 비교적 저속이므로, 사용자 프로그램을 동시에 여러 개 수행함으로써 CPU를 놀리지 않는 것이 중요함. 여러 프로그램의 단위작업을 교차 수행할 때 모순성 발생가능: 예, 잔금확인 도중 수표 결제. DBMS는 이러한 문제가 없도록 보장: 사용자는 혼자 사용하는 것처럼 인식.
트랜잭션(transaction): DB프로그램의 한 번 수행 사용자는 일정한 종류의 무결성 제약조건을 데이타에 줄 수 있고, DBMS는 이를 집행. 이것이 없으면 DBMS는 데이타의 의미를 이해하지 못한다(e.g., 은행의 이자 계산법 등). 결국 트랜잭션 자체의 일관성은 사용자의 책임이다!
병행 트랜잭션 스케줄링 DBMS 는{T1, ... , Tn} 의 수행이 어떤 직렬 수행 T1’... Tn’과 같도록 보장 트랜잭션은 객체를 판독/기록하기 전에 먼저 그 객체에 대한 로크(lock)를 요청하며, DBMS가 로크를 걸어 줄 때까지 대기한다. 트랜잭션이 끝나면 소지했던 모든 로크를 해제한다.(엄정 로킹 규약) 착상: Ti의 단위작업 (가령, X를 기록)이 Tj (가령’ X를 판독)에 영향을 주면, 그 중 한쪽 (가령 Ti)이 먼저 X의 로크를 얻고, Ti가 끝날 때까지 Tj를 대기시킨다; 이에 따라 트랜잭션을 순서화하는 효과를 본다. Tj가 Y의 로크를 이미 얻었는데 Ti가 나중에 Y의 로크를 요청한다면? (교착상태! ) Ti 나 Tj를 철회시켰다가 재시작한다!
원자성(Atomicity)확보 DBMS는 수행 도중 시스템 장애가 발생하더라도 원자성 (전부 아니면 전무 성질) 보장 . DB를 실제로 고치기 전에, 해당하는 로그 엔트리를 안전한 저장소에 먼저 강제 출력(WAL 규약. OS는 이 기능을 잘 지원하지 못한다.) 장애 발생 이후에는, 부분적으로 수행된 트랜잭션의 효과들을, 로그를 이용하여 무효화(undo).( WAL의 덕택임. 로그 엔트리가 장애때문에 미쳐 저장되지 않았다면, 해당 변경도 DB에 가해지지 않았다! )
로그 (log) 로그에는 다음과 같은 단위 작업들이 기록된다: Ti가 객체를 기록: 이전 값과 새로운 값. • 로그 레코드를 변경 페이지 보다 먼저 기록해야 함! Ti 완결/철회: 이 단위작업을 표시하는 로그 레코드 하나 . 트랜잭션 id에 따라 로그 레코드들을 연결해서, 특정 트랜잭션 무효화가 용이함 (e.g., 교착상태 해소 등). 로그는 보통 “안정적인” 저장장치에 중복 저장해 둔다. 로그 관련 작업( 로크 설정/해제, 교착상태 처리 등 병행제어 관련 작업 포함)들은 모두 DBMS가 알아서 (투명하게) 처리한다. 20
DB 덕분에 행복해지는 사람들... 단말 사용자와 DBMS 공급업체 DB 응용 프로그래머 똑똑한 웹마스터 등 데이타베이스 관리자(DBA) 논리적/물리적 스키마 설계 보안과 권한부여 사항 처리 데이타 가용성, 손상 복구 데이타베이스 튜닝과 확장 DBMS의 작동방식을 알아야 한다! 21
DBMS의 구조 DBMS는보통계층적인 구조임. 병행제어와 복구 부분은 그림에서 빠져 있음. 이 계층들은 병행제어와 복구에 신경을 써야 한다. DBMS는보통계층적인 구조임. 병행제어와 복구 부분은 그림에서 빠져 있음. 이 그림은 이론일 뿐이고, 시스템마다 구조는 조금씩 다름. 질의 최적화 및 수행 관계 연산자 화일 및 접근 방법 버퍼 관리 디스크 공간 관리 DB 22
요약 보수가 높다! 가장 광범위하고 흥미진진한 분야에 속한다. DBMS는 대규모 데이타 집단의 관리/질의에 사용된다. 시스템 손상 복구, 병행 접근, 신속한 응용 개발, 데이타 무결성, 보안 등의 장점이 있다. 추상화 단계를 구분하여 데이타 독립성 달성. DBMS는 보통 계층적인 구조임. DBA들은 책임 있는 업무를 맡으며 보수가 높다! DBMS R&D는 전산학 중에서도 가장 광범위하고 흥미진진한 분야에 속한다.