이전에 정리했던 글이다.
교재: fundamental of database system
이전 글
2020/07/13 - [강의 정리/Database] - 데이터베이스시스템 - Chapther 1
[CHAPTER 2 - Database System Concepts and Architecture]
▶ 데이터 모델
* 데이터베이스의 구조를 설명하기 위한 개념의 집합
* 요소(와 그 데이터 타입)와 요소 그룹(엔티티, 레코드, 표)을 포함
* 데이터 모델의 operations을 참조하여 DB의 검색, 업데이트를 지정
* 데이터 모델의 operations에는 basic model operations(삽입, 삭제, 업데이트)와 user model operations가 포함될 수 있음
▶ 데이터 모델의 종류
* 개념(Conceptual (high-level, semantic)) 데이터 모델 : 많은 사용자가 데이터를 인식하는 방법과 유사하게 제공
* 물리(Physical (low-level, internal)) 데이터 모델 : 세부사항을 제공
* 구현(Implementation (representational)) 데이터 모델 : DBMS를 이용
* 자가 기술(Self-Describing) 데이터 모델 : 데이터와 데이터 값을 함께 제공 (ex:key-value stores, few NOSQL)
1장에서 언급했던 meta-data가 필요하지 않은 데이터베이스 시스템
▶ 스키마(Schemas)
* meta-data. 데이터베이스 구조, 타입, 제약 조건을 포함
* 스키마 다이어그램(Schema Diagram) : 대부분의 데이터베이스 스키마는 이 형식(다이어그램)으로 표현
* Schema Construct : 스키마의 구성요소 또는 스키마 내의 객체(ex: STUDENT, COURSE)
▶ 인스턴스(Instances, Database State)
* 특정 시점에 데이터베이스에 저장된 데이터
* 인스턴스의 모음을 Database State라고도 부름
* Database State : 특정 순간의 데이터베이스의 내용을 한번에 정의
* Initial Database State : 데이터베이스가 시스템에 처음 로드될 때의 Database State
* Valid State : 데이터베이스의 구조, 제약 조건을 만족하는 스테이트
▶ 데이터베이스 스키마 vs 데이터베이스 스테이트
* 데이터베이스 스키마는 자주 바뀌지 않는다.
* 데이터베이스 스테이트는 데이터베이스가 업데이트되는 순간마다 바뀐다.
* 스키마는 intension, 스테이트는 extension이라고도 불린다.
▶ 3단계 스키마 구조
* DBMS의 프로그램, 데이터 간 독립성과 데이터의 다중 뷰 지원을 위해 제안된 구조
* 데이터베이스 시스템의 구성을 설명하는 데 유용
* 3 단계 레벨로 DBMS 스키마 정의
1. 내부(Internal) 스키마 : 데이터베이스의 내부 구조를 기술 (물리적 데이터 모델 사용) 2. 개념(Conceptual) 스키마 : 전체 데이터베이스에 대한 구조, 제약을 기술 (개념, 구현 데이터 모델 사용) 3. 외부(External) 스키마 : 다양한 사용자 뷰를 기술 (개념 스키마와 동일한 데이터 모델 사용) |
* 스키마 간 매핑은 외부 ↔ 개념 ↔ 내부 로 이루어짐
* 요청과 데이터를 변환하려면 스키마 레벨 간 매핑이 필요
* 프로그램은 외부 스키마를 말하며, DBMS에 의해 내부 스키마에 매핑되어 실행됨
* 내부 스키마 레벨에서 추출한 데이터를 사용자의 외부 뷰에 맞게 재포맷
▶ 데이터 독립성
* 논리적 데이터 독립성 : 외부 스키마를 변경하지 않고 논리 스키마를 수정할 수 있음
* 물리적 데이터 독립성 : 논리 스키마, 외부 스키마를 변경하지 않고 물리 스키마를 수정할 수 있음
* 즉, 더 상위의 스키마는 하위의 스키마를 수정한다고 반드시 수정되어야 하는 것이 아니라,
수정된 스키마와 상위 스키마 간의 매핑만 수정해주면 됨
▶ DBMS 언어
1. DDL(데이터 정의어)
* 데이터 구조를 정의하는데 사용되는 명령어. 생성(CREATE), 수정(ALTER), 삭제(DROP), 이름변경(RENAME) 등이 있다.
* 데이터베이스 설계자가 데이터베이스의 개념 스키마를 지정하기 위해 사용
* 대부분의 DBMS에서 내부/외부 스키마를 정의하는 데에 사용
* 일부 DBMS에서는 별도의 SDL과 VDIL을 사용하여 내부/외부 스키마를 정의
2. DML(데이터 조작어)
* 데이터를 조회, 검색하거나 변경하는 명령어. 조회/검색(SELECT), 데이터의 삽입(INSERT), 삭제(DELETE), 수정(UPDATE) 등이 있다.
* DML이 High-level(비절차지향) 언어인 경우 : 관계 언어 SQL이 이 경우에 포함. 독립 실행 방법으로 사용되거나, 프로그래밍 언어에 포함된다.
* DML이 Low-level(절차지향) 언어인 경우 : 반드시 프로그래밍 언어에 포함 (COBOL, C, C++, Java 등)
* 위의 경우(절차지향) 프로그래밍 언어에서 DBMS에 접속할 수 있는 라이브러리를 제공하거나, 독립 실행형 DML 명령을 직접 적용(쿼리 언어)
* High-level인 경우 : 설정지향적으로, 검색 방법보다는 검색할 데이터를 명시
* Low-level인 경우 : 데이터 한 번에 하나의 레코드 (위치 포인터와 함께 여러 개 검색하기 위해서는 루프 등의 구조가 필요)
▶ DBMS 인터페이스
* 독자적 질의 언어 인터페이스 (SQL)
* 프로그래머 인터페이스 (for DML) : Embedded Approach, Procedure Call Approach,
Database Programming Language Approach, Scripting Languages
* 유저 친화적 인터페이스 : Menu-based, Forms-based, Graphics-based 등
* 모바일 인터페이스
▶ 데이터베이스 시스템 유틸리티, 툴
* 적재(loading) : 파일 형식으로 저장된 데이터를 데이터베이스 테이블 형식으로 변환
* 백업(Backing up) : 데이터베이스를 주기적으로 tape에 백업
* 재조직(Reorganizing) : 데이터베이스를 파일 구조로 재조직 (성능 향상 위함)
* 성능 모니터링(Performance monitoring)
* 보고서 생성(Report generation)
* 이외에도 sorting, user monitoring, data compression 등이 있다.
▶ Centralized and Client-Server Architectures
* Centralized DBMS Architecture(중앙 집중형 구조) : 단일 시스템에 모든 요소를 포함하는 것.
(모든 요소란, DBMS S/W, H/W, application programs, user interface processing S/W를 포함)
* 사용자는 여전히 원격 terminal을 이용할 수 있으나, 모든 처리는 중앙 site에서 진행
* Client-Server DBMS Architectures(클라이언트-서버 구조) : 클라이언트(사용자)가 필요한 특정 서버에 접근하는 방식으로 이용. Two Tier과 Three Tier로 나뉜다.
* Two Tier Client-Server Architecture : 클라이언트, 서버는 적절한 클라이언트/서버 모듈을 설치해야 한다. ex: ODBC, JDBC
* Three Tier Client-Server Architecture : 웹 애플리케이션에서 자주 사용. Client와 Server 사이에 Application Server 또는 Web Server가 Intermediate Layer로 존재
▶ DBMS의 분류
* 데이터 모델을 기준으로
Legacy : network, Hierarchical(Relation 등장 이전 가장 많이 사용되던 모델. Tree 구조이다)
Current : Relational(그래프 구조. ORACLE 등이 해당), Object-oriented, Object-relational(XML 등)
Recent : Key-value storage system, NOSQL
* 사용자 수를 기준으로
Single-user (개인 컴퓨터에서 사용)
Multi-user (대부분의 DBMS가 해당)
* 사이트의 개수를 기준으로
Centralized (1 Computer 1 DB)
Distributed (N Compuber N DB) : Homogeneous, Hetergeneous DDBMS로 나뉨