DataBase

[DataBase] 01. Introduction

lumana 2024. 6. 15. 18:39

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
      • 데이터를 접근하기 위한 프로그램 집합
  • 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
      • 인사: 직원 기록, 급여, 세금 공제
  • 데이터베이스는 매우 클 수 있습니다.
  • 데이터베이스는 우리 생활의 모든 측면에 영향을 미칩니다.

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

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
      • 여러 수준의 데이터 추상화를 통해 사용자가 데이터베이스에서 데이터 구조의 복잡성을 숨깁니다.
  • 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): 특정 시점에서 데이터베이스의 실제 conent
    • 변수의 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
        • 누가 어떤 것에 접근할 수 있는지

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 등을 고려하게 된다.
    • 물리적 설계(Physical Design) - 데이터베이스의 물리적 레이아웃을 결정하는 것
      • ex) 어떻게 데이터를 압축하여 저장할 것인지
    • 복잡해질수록 고려해야 할 사항들이 많아진다.

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)
      • 데이터 항목에 빠르게 접근할 수 있습니다.
      • 데이터베이스 인덱스는 특정 값을 보유한 데이터 항목에 대한 포인터를 제공합니다.

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 명령어를 실행합니다.

Query Processor

  • 구문 분석 및 번역(Parsing and Translation)
  • 최적화(Optimization)
  • 평가(Evaluation)

Transaction Management

  • 트랜잭션(Transaction)은 데이터베이스 애플리케이션에서 단일 logical function을 수행하는 작업들의 집합입니다.
    • 트랜잭션 관리 컴포넌트(Transaction-Management Component)
      • 이는 시스템 오류(예: 전원 장애 및 운영 체제 충돌) 및 트랜잭션 오류에도 불구하고 데이터베이스가 일관된(올바른) 상태를 유지하도록 보장합니다.
    • 동시성 제어 관리자(Concurrency-Control Manager)
      • 이는 concurrent transaction 간의 상호작용을 제어하여 데이터베이스의 일관성을 보장합니다.

  • 데이터베이스의 트랜잭션은 다음 상태 중 하나일 수 있습니다: 
    • 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' 카테고리의 다른 글

[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