Database Management System (DBMS)
- 데이터베이스 관리 시스템(DBMS)은 데이터베이스를 생성하고 관리하는 시스템 소프트웨어입니다.
- DBMS는 사용자와 프로그래머에게 데이터를 생성, 검색, 업데이트 및 관리하는 체계적인 방법을 제공합니다.
- DBMS는 최종 사용자가 데이터베이스에서 데이터를 생성, 읽기, 업데이트 및 삭제(Create, Read, Update, Delete, 줄여서 CRUD라고 함)할 수 있게 합니다.
- DBMS는 본질적으로 데이터베이스와 최종 사용자 또는 응용 프로그램 간의 인터페이스 역할을 하여 데이터가 일관되게 조직되고 쉽게 접근할 수 있도록 보장합니다.
- 사용자 데이터베이스를 생성, 유지 관리 및 접근을 제공하는 소프트웨어 시스템입니다.
- DBMS는 OS가 hardware resource를 관리하는 것처럼 data resource을 관리합니다.
- 데이터베이스 관리 시스템(DBMS)은 세 가지 중요한 것을 관리합니다:
- Data
- The database engine
- It allows data to be accessed, locked, and modified
- Schema
- It defines the database’s logical structure.
- DBMS는 performance monitoring/tuning 및 backup과 recovery를 제공합니다.
- 많은 DBMS는 또한 automated rollbacks, restarts and recovery뿐만 아니라 activity를 logging 하는 것 또한 담당합니다.
- DBMS는 특정 기업에 대한 정보를 포함합니다.
- Collection of interrelated data
- 상호 관련된 데이터의 모음
- Set of programs to access the data
- 데이터를 접근하기 위한 프로그램 집합
- Collection of interrelated data
- Database Applications(데이터베이스 응용 프로그램):
- Banking: transactions
- 은행: 거래
- Airlines: reservations, schedules
- 항공사: 예약, 일정
- Universities: registration, grades
- 대학교: 등록, 성적
- Sales: customers, products, purchases
- 판매: 고객, 제품, 구매
- Online retailers: order tracking, customized recommendations
- 온라인 소매업체: 주문 추적, 맞춤 추천
- Manufacturing: production, inventory, orders
- 제조업: 생산, 재고, 주문
- Human resources: employee records, salaries, tax deductions
- 인사: 직원 기록, 급여, 세금 공제
- Banking: transactions
- 데이터베이스는 매우 클 수 있습니다.
- 데이터베이스는 우리 생활의 모든 측면에 영향을 미칩니다.
Purpose of Database Systems
- 초기에 데이터베이스 응용 프로그램은 파일 시스템 위에 직접 구축되었으며, 이는 다음과 같은 문제를 초래했습니다:
- Data redundancy and inconsistency(데이터 중복성과 불일치)
- Data is stored in multiple file formats resulting duplication of information in different files
- 데이터가 여러 파일 형식으로 저장되어 다른 파일에 정보가 중복됩니다.
- Difficulty in accessing data(데이터 접근의 어려움)
- Need to write a new program to carry out each new task
- 새로운 작업을 수행하기 위해 새로운 프로그램을 작성해야 합니다.
- Data isolation(데이터 고립)
- Multiple files and formats(여러 파일 및 형식)
- Integrity problems(무결성 문제)
- Integrity constraints (e.g., account balance > 0) become “buried” in program code rather than being stated explicitly
- 무결성 제약 조건(예: 계좌 잔액 > 0)이 명시적으로 표시되는 대신 프로그램 코드에 "묻힙니다."
- Hard to add new constraints or change existing ones
- 새로운 제약 조건을 추가하거나 기존의 것을 변경하기 어렵습니다.
- Atomicity of updates(업데이트의 원자성)
- Failures may leave database in an inconsistent state with partial updates carried out
- Failure가 발생하면 부분적으로 업데이트가 수행된 채로 데이터베이스가 일관되지 않은 상태가 될 수 있습니다.
- ex): 한 계좌에서 다른 계좌로 이체를 하는 경우 완전히 완료되거나 전혀 발생하지 않아야 합니다.
- 한 쪽 계좌에서 돈은 빠져 나갔지만 다른 쪽에서 돈이 안들어오는 경우를 예로 들 수 있다.
- Concurrent access by multiple users(다수 사용자의 동시 접근)
- Concurrent access needed for performance
- 성능을 위해 동시 접근이 필요합니다.
- Concurrent 하지 않고 Iterative 한 경우 Waiting이 발생하기 때문에 Performance가 떨어짐
- Uncontrolled concurrent accesses can lead to inconsistencies
- 통제되지 않은 동시 접근은 불일치를 초래할 수 있습니다.
- Ex: Two people reading a balance (say 100) and updating it by withdrawing money (say 50 each) at the same time
- 예: 두 사람이 잔액(예: 100)을 읽고 동시에 돈을 인출(각각 50)하여 업데이트하는 경우
- 통제되지 않은 동시 접근은 불일치를 초래할 수 있습니다.
- Security problems(보안 문제)
- Hard to provide user access
- Concurrent access needed for performance
- Data redundancy and inconsistency(데이터 중복성과 불일치)
University Database Example
- University database
- 데이터는 다음 정보로 구성됩니다:
- Students
- Instructors
- Classes
- Application program examples
- 새로운 학생, 강사, 과목 추가
- 학생을 과목에 등록하고 수업 명단 생성
- 학생에게 성적을 부여하고, 평점(GPA)을 계산하며 성적표를 생성합니다.
- 데이터는 다음 정보로 구성됩니다:
View of Data
- 데이터베이스 시스템은 상호 관련된 데이터와 이 데이터를 접근하고 수정할 수 있는 프로그램 집합입니다.
- 데이터베이스 시스템의 major purpose는 사용자에게 abstract view of the data를 제공하는 것입니다.
- Data models
- data, data relationships, data semantics, and consistency constraints을 설명하는 개념적 도구의 모음
- Data abstraction
- 여러 수준의 데이터 추상화를 통해 사용자가 데이터베이스에서 데이터 구조의 복잡성을 숨깁니다.
- Data models
- abstract view of the data 가 뭔가요?
- 실제 저장 방식이나 내부 구조를 알지 않고도 데이터를 사용할 수 있도록 하는 개념
- 데이터의 복잡성을 숨기고 사용자가 더 쉽게 데이터를 다룰 수 있게 할 수 있다.
View of Data: Data Models
- A collection of tools for describing
- Data
- Data relationships
- Data semantics
- Data constraints
- Relational model(관계형 모델)
- 데이터를 표 형식으로 모델링합니다.
- 열과 행으로 구성된 구조인 관계를 사용하여 데이터를 구조화하는 방법입니다.
- Entity-Relationship data model (mainly for database design)
- high-level data model 이다.
- 이 모델은 지정된 시스템의 data elements and relationship을 정의하는 데 사용된다.
- 데이터베이스에 대한 conceptual design을 개발한다.
- 또한 매우 간단하고 설계하기 쉽도록 view of data를 개발한다.
- Object-based data model(Object-oriented and object-relational)
- 객체 기반 데이터 모델(객체 지향 및 객체-관계형)
- 반구조화된 데이터 모델(Semi-structured data model)
- ex) XML
- Other older models:
- 네트워크 모델(Network model)
- 계층형 모델(Hierarchical model)
관계형 모델(Relational Model)
- 모든 데이터는 다양한 테이블에 저장됩니다
- 테이블 데이터 예시
View of Data: Levels of Abstraction(추상화 수준에 따른 View of Data)
- Physical level: 레코드가 어떻게 저장되는지 설명. "Store rule"이라고 보면 된다.
- Logical level: 데이터베이스에 저장된 데이터 및 데이터 간의 관계를 설명
type instructor = record
ID : string;
name : string;
dept_name : string;
salary : integer;
end;
- View level: 응용 프로그램이 데이터의 세부 정보를 숨깁니다. 뷰는 보안 목적으로 정보(예: 직원의 급여)도 숨길 수 있습니다.
- Database System의 Architecture
Instances and Schemas
- 프로그래밍 언어의 Type, 변수와 유사하다
- 논리적 스키마(Logical schema)
- 데이터베이스의 전체 논리적 구조(Overall logical structure of the database)
- 프로그램에 있는 변수의 type information과 유사하다
- 물리적 스키마(Physical schema): 데이터베이스의 전체 물리적 구조
- 인스턴스(Instance): 특정 시점에서 데이터베이스의 실제 content
- 변수의 value와 유사하다
Summary for Language
- DDL(Data Definition Language): ALTER, CREATE, DROP, RENAME, TRUNCATE
- DML(Data Manipulation Language): DELETE, INSERT, UPDATE, SELECT
- 특정 데이터를 삭제하고, 삽입하고.... 하는 용도
- 가장 많이 사용하는 Language
- DCL(Data Control Language): GRANT, REVOKE
- 접근 권한을 주거나 뺏을 때 사용
- TCL(Transaction Control Language): COMMIT, ROLLBACK, SAVEPOINT
- rarely used
데이터 정의 언어(Data Definition Language (DDL))
- 데이터베이스 스키마 정의를 위한 명세 표기법(Specification notation for defining the database schema)
create table instructor (
ID char(5)
name varchar(20),
dept_name varchar(20),
salary numeric(8,2))
- DDL 컴파일러는 data dictionary에 저장된 일련의 테이블 템플릿을 생성한다
- Data dicionary는 metadata를 생성한다(i.e., data about data)
- Database Schema
- Integrity constraints
- Primary key(줄여서 PK라고 함. 유일하게 identifying 할 수 있는 Key)
- ex) instructor Table에서 ID attribute
- Authorization
- 누가 어떤 것에 접근할 수 있는지
- Primary key(줄여서 PK라고 함. 유일하게 identifying 할 수 있는 Key)
Data Manipulation Language (DML)
- DML은 적절한 데이터 모델에 의해 구성된 데이터를 접근하고 조작하기 위한 언어입니다.
- DML은 쿼리 언어(Query Language)로도 알려져 있습니다.
- DML은 데이터베이스에서 데이터를 삽입, 삭제 및 갱신하는 데 사용됩니다.
- 널리 사용되는 데이터 조작 언어는 관계형 데이터베이스에서 데이터를 검색하고 조작하는 데 사용되는 SQL(Structured Query Language, 구조적 질의 언어)입니다.
Structured Query Language (SQL)
- SQL이란 무엇인가?
- SQL은 데이터베이스에 접근하고 조작하기 위한 표준 언어입니다.
- SQL이 할 수 있는 일:
- SQL은 데이터베이스에 대한 쿼리를 실행할 수 있습니다.
- SQL은 데이터베이스에서 데이터를 retrieve(검색) 할 수 있습니다.
- SQL은 데이터베이스에서 record를 insert/update/delete 할 수 있습니다.
- SQL은 새로운 데이터베이스를 생성할 수 있습니다.
- SQL은 데이터베이스에 새로운 table을 생성할 수 있습니다.
- SQL은 데이터베이스에서 view를 생성할 수 있습니다.
Database Design
- 데이터베이스의 일반적인 구조를 설계하는 과정:
- 논리적 설계(Logical Design) - 데이터베이스 스키마를 결정하는 것
- 데이터베이스 설계는 "good" collection of releation schemas를 찾는 것을 요구합니다.
- 비즈니스 결정 - 데이터베이스에 어떤 attributes(속성)을 기록할 것인가?
- Computer Science(CS) 결정 - relation schema를 어떻게 설정하고 각 schema 사이에 attribute를 어떻게 배분할 것인가?
- Speed, memory, capacity 등을 고려하게 된다.
- 데이터베이스 설계는 "good" collection of releation schemas를 찾는 것을 요구합니다.
- 물리적 설계(Physical Design) - 데이터베이스의 물리적 레이아웃을 결정하는 것
- ex) 어떻게 데이터를 압축하여 저장할 것인지
- 복잡해질수록 고려해야 할 사항들이 많아진다.
- 논리적 설계(Logical Design) - 데이터베이스 스키마를 결정하는 것
Database Engine
- 데이터베이스 시스템은 전체 시스템의 각 책임을 다루는 모듈로 분할됩니다.
- 데이터베이스 시스템의 functional component(기능적 구성 요소)는 다음과 같이 나눌 수 있습니다:
- 스토리지 관리자(Storage Manager)
- 쿼리 프로세서 구성 요소(Query Processor Component)
- 트랜잭션 관리 구성 요소(Transaction Management Component)
Storage Manager
- 데이터베이스에 저장된 low-level 데이터와 데이터베이스에 제출된 응용 프로그램 프로그램 및 쿼리 사이의 인터페이스를 제공하는 프로그램 모듈입니다.
- Storage Manager는 다음 작업을 담당합니다:
- OS 파일 관리자와의 상호작용
- 데이터의 효율적인 저장, 검색 및 갱신
- 스토리지 관리자 구성 요소에는 다음이 포함됩니다:
- 권한 및 무결성 관리자(Authorization and Integrity Manager)
- 트랜잭션 관리자(Transaction Manager)
- 파일 관리자(File Manager)
- 버퍼 관리자(Buffer Manager)
- Storage Manager는 물리적 시스템 구현의 일부로 여러 데이터 구조를 구현합니다:
- 데이터 파일(Data Files)
- 데이터베이스 자체를 저장합니다.
- 데이터 사전(Data Dictionary)
- 데이터베이스의 구조에 대한 메타데이터를 저장하며, 특히 데이터베이스의 스키마를 저장합니다.
- 인덱스(Indices)
- 데이터 항목에 빠르게 접근할 수 있습니다.
- 데이터베이스 인덱스는 특정 값을 보유한 데이터 항목에 대한 포인터를 제공합니다.
- 데이터 파일(Data Files)
Query Processor
- 쿼리 프로세서 구성 요소에는 다음이 포함됩니다:
- DDL interpreter
- 데이터 정의 언어(DDL)는 데이터베이스의 다른 구조를 정의하는 명령어에 대한 표준입니다. DDL 명령어는 테이블, 인덱스, 사용자와 같은 데이터베이스 객체를 생성, 수정 및 제거합니다. 일반적인 DDL 명령어에는 CREATE, ALTER, DROP이 있습니다.
- DDL interpreter는 DDL 명령어를 해석하고 data dictionary에 definition을 기록합니다.
- DML compiler
- 이는 DML 명령어를 query evaluation engine이 이해하는 low-level 명령어로 구성된 evaluation plan으로 변환합니다.
- Query Evaluation Engine
- 이는 DML 컴파일러가 생성한 low-level 명령어를 실행합니다.
- 구문 분석 및 번역(Parsing and Translation)
- 최적화(Optimization)
- 평가(Evaluation)
- DDL interpreter
Transaction Management
- 트랜잭션(Transaction)은 데이터베이스 애플리케이션에서 단일 logical function을 수행하는 작업들의 집합입니다.
- 트랜잭션 관리 컴포넌트(Transaction-Management Component)
- 이는 시스템 오류(예: 전원 장애 및 운영 체제 충돌) 및 트랜잭션 오류에도 불구하고 데이터베이스가 일관된(올바른) 상태를 유지하도록 보장합니다.
- 동시성 제어 관리자(Concurrency-Control Manager)
- 이는 concurrent transaction 간의 상호작용을 제어하여 데이터베이스의 일관성을 보장합니다.
- 트랜잭션 관리 컴포넌트(Transaction-Management Component)
- 데이터베이스의 트랜잭션은 다음 상태 중 하나일 수 있습니다:
- Active - 이 상태에서 트랜잭션이 실행 중입니다. 이는 모든 트랜잭션의 초기 상태입니다.
- Partially Committed - 트랜잭션이 최종 operation을 실행할 때 Partially Committed 상태에 있습니다.
- Failed - 데이터베이스 복구 시스템이 실패를 감지한 경우 트랜잭션이 Failed 상태에 있다고 합니다. 실패한 트랜잭션은 더 이상 진행할 수 없습니다.
- Aborted - 트랜잭션이 중단된 상태입니다. 어떤 검사가 실패하고 트랜잭션이 실패 상태에 도달하면 recovery manager가 데이터베이스의 모든 쓰기 작업을 롤백하여 트랜잭션 실행 전의 원래 상태로 되돌립니다. 이 상태의 트랜잭션을 중단되었다고 합니다. 트랜잭션 중단 후 데이터베이스 recovery module 은 다음 두 가지 작업 중 하나를 선택할 수 있습니다:
- 트랜잭션 재시작
- 트랜잭션 종료
- Comitted - 트랜잭션이 모든 operation을 성공적으로 실행하면 커밋되었다고 합니다. 모든 실행 결과는 이제 데이터베이스 시스템에 영구적으로 설정됩니다.
Database Engine
- MySQL 아키텍처 이해하기
Memory Caches in Database
- 데이터베이스의 메모리 캐시
- temporary storage인 memory cache에 올려 놓고 access를 한다(성능 향상을 위해서)
Database Architecture
- 데이터베이스 시스템 구조
- 중앙 집중식 데이터베이스 (Centralized Databases) - One to a few core, shared memory
- 클라이언트-서버 (Client-Server) - 한 서버 머신이 여러 클라이언트 머신을 대신하여 작업을 수행합니다.
- 병렬 데이터베이스 (Parallel Databases) - Many core shared memory
- 분산 데이터베이스 (Distributed Databases) - Geographical distribution, Schema/data heterogeneity
- 재난이 발생했을 때를 생각해보자
Database Applications
- 데이터베이스 애플리케이션은 보통 두 개 또는 세 개의 파트로 나뉩니다:
- Two-Tier Architecture - 애플리케이션이 클라이언트 머신에 있으며 서버 머신에서 데이터베이스 시스템 function을 invoke(호출)합니다.
- Three-Tier Architecture - 클라이언트 머신은 front-end 역할을 하며 직접적인 데이터베이스 call(호출)을 포함하지 않습니다:
- Client end는 보통 foam interface를 통해 애플리케이션 서버와 통신합니다.
- 애플리케이션 서버는 데이터베이스 시스템과 통신하여 데이터를 액세스합니다.
Two-tier and three-tier architectures
Database Users
- 데이터베이스 시스템 사용자는 네 가지 유형이 있습니다:
- Naïve(순수한) Users - 미리 작성된 애플리케이션 프로그램 중 하나를 호출하여 시스템과 상호 작용하는 단순한 사용자
- Application Programmers - 애플리케이션 프로그램을 작성하는 컴퓨터 전문가
- Sophisticated(정교한) Users - 프로그램을 작성하지 않고 시스템과 상호 작용하는 사용자:
- 데이터베이스 쿼리 언어를 사용
- 데이터 분석 소프트웨어와 같은 도구 사용
- Specialized Users - 그래픽 데이터, 오디오, 비디오 등 기존 데이터 처리 프레임워크에 맞지 않는 전문화된 데이터베이스 애플리케이션 작성
Database Administrator
- 시스템에 대한 중앙 제어 권한을 가진 사람을 데이터베이스 관리자(DBA)라고 하며, 그 기능은 다음과 같습니다:
- 스키마 정의
- 저장 구조 및 액세스 방법 정의
- 스키마 및 physical-organization 수정
- 정기 유지보수
- 정기적으로 데이터베이스 백업
- 정상 운영을 위해 충분한 여유 디스크 공간을 보장하고 필요한 경우 디스크 공간 업그레이드
- 데이터베이스에서 실행 중인 작업을 모니터링하고 일부 사용자가 제출한 매우 비용이 많이 드는 작업으로 인해 성능이 저하되지 않도록 보장
'DataBase > LegacyPosts' 카테고리의 다른 글
[DataBase] 05. E-R Model (0) | 2024.06.25 |
---|---|
[DataBase] 04. Intermediate SQL (0) | 2024.06.15 |
[DataBase] 03. Introduction to SQL(2) (0) | 2024.06.15 |
[DataBase] 03. Introduction to SQL(1) (0) | 2024.06.15 |
[DataBase] 02. Introduction to Relational Model (0) | 2024.06.15 |