What Is a DBMS?
: DB 관리를 위한 소프트웨어 (ex. Postgres, MySQL, MongoDB, Oracle …)
- Data vs Information vs Knowledge
Data : 설명, 관찰, 측정된 날것의 사실
Information : 준비되거나 정리된 데이터
Knowledge : 실제 의사결정에 사용되는 데이터/정보/규칙
- 정보 (Information) : 사실들 그 자체에 대한 일차적인 표현, 사실들 + 이들로부터 유도될 수 있는 유추된 사실들
데이터 포맷을 변경하는 등의 사전 처리(prepare), 구성화(organize) 등의 프로세스를 거침
데이터에 비해 정보화를 거치면 훨씬 많은 사실을 표현할 수 있다
(ex. 단순 학기의 학점에 대한 데이터 → 꺾은선 그래프로 표현해 추이 확인)
- 대규모, 통합된 관련 있는 데이터 묶음
- 실제 기업을 모델로 삼았음
Entities (실체) : students, courses
Relationships (관계) : 마돈나는 CS564 수업을 수강한다
- DBMS는 데이터베이스를 저장하고 관리하도록 설계된 소프트웨어 패키지
Why Use a DBMS?
- 데이터 독립성 및 효율적인 접근
- 애플리케이션 개발 시간이 단축
- 데이터 무결성(integity) 및 보안
- 통일된 데이터 관리
- 동시 액세스, 충돌 복구
Data Models
모델링 : 현실세계에 있는 것을 잘 반영하도록 하는 것
DB를 만들기 위해 필요한 과정
스키마 (Schema) : 어떻게 생겼는지 기술해놓은 것,
- 인스턴스 (Instance) : DB의 state
- 데이터 모델 : 데이터를 설명하기 위한 개념의 모음
- 스키마 : 주어진 데이터 모델을 사용한 특정 데이터 컬렉션에 대한 설명
- DB의 구조를 정의하는 청사진 같은 개념
- 오늘날 제일 많이 사용되는게 relational model of data (관계형 데이터 모델)
- relation : 행과 열로 구성된 테이블
- Every relation has a schema : 모든 관계들은 columns / fields 를 표현하는 스키마를 가진다
⇒ 데이터 모델은 큰 틀 / 스키마는 틀에 맞춘 설계도 / 관계는 설계도로 만들어진 실제 데이터 테이블
History of Data Models
- 60’s 초 : Network Model
- 60’s 말 : Hierarchical Model
- 70’s : Relational Model
- 80’s 말 & 90’s 초 : Extended(Object) Relational Model or Object-Oriendted Model(객체 지향 모델)
- 90’s 말 : Datat Warehousing, Data Mining, Distributed DB, Web DB, ERP …
ER(Entity-Relationship Model) 이란?
Semantic Data Model (의미 기반) : 데이터의 의미를 표현 → 개체, 관계, 속성으로 표현
↔ Syntax (구조)
Record-based Model (레코드 기반) : 데이터를 실제 레코드(행) 단위로 저장
*Record : 테이블에서 하나의 열
**Row = record, Column = attribute
Levels of Abstraction [추상화 단계]
- 구조
1 많은 views(External Schema) : 사용자가 보는 관점, 복잡한 내부 구조는 몰라도 ok
2 하나의 conceptual (logical) schema : 논리적 구조를 정의, 모든 데이터와 관계를 정의
3 physical schema : 실제 데이터가 파일, 인덱스, 디스크에 어떻게 저장?
- DDL (Data Defined Language, 데이터 정의어) 를 사용해 정의
- DML (Data Manipulation Language, 데이터 조작어) 를 사용해 수정/쿼리
Example
1 External Schema (View) : Course_info(cid: string, enrollment: integer)
2 Conceptual Schema :
Students(sid: string, name: string, login: string, age: integer, gpa: real)
Course(cid: string, cname: string, credits: integer)
Enrolled(sid: string, cid: string, grade: string)
3 Physical Schema (Internal Schema) :
Relations stored as unordered files
관계들은 정렬되지 않은 상태로 저장된다
Index on first column of Students
Students 의 첫번째 열을 인덱스(sid) 로 사용한다
Data Independence [데이터 독립성]
- 데이터의 구조화 & 저장 방식으로부터 독립된 애플리케이션
- Logical data independence : 논리적 구조가 바뀌어도, 애플리케이션에 영향 x
- Physical data independence : 물리적 구조가 바뀌어도, 애플리케이션이나 논리적 구조에 영향x
⇒ DBMS 를 사용하는 가장 중요한 이점 중 하나~
External Schema
(Logical indenpendence) → 사용자 뷰 보호
Conceltual Schema
(Physical independence) → 논리 구조 보호
Pysical Schema
Transaction: DB 프로그램의 실행
- Transaction : DB 작업의 최소 단위
- atomic sequence ( reads / writes) : 읽고 쓰는 행위에 대해 원자적으로 취급
- ⇒ All or Nothing, 전부 실행되거나 하나도 실행되지 x
- 트랜잭션은 실행이 끝난 뒤, DB를 일관된 상태로 유지해야한다
DBMS는 하나의 일만 수행하는게 x
이때 일관된 상태를 유지하도록, 원래 갖고 있던 값을 잘 처리해야!
이게 절대 쉬운 작업이 아닌데 이걸 DBMS 가 해준다
Concurrency Control [동시성 제어]
: 여러 사용자가 동시에 DB를 사용할 때, 데이터의 일관성과 무결성을 보장 + 성능은 유지
- 좋은 성능을 위해 동시 실행은 필수적!
- 빈번한 디스크 접근과 보통 속도가 느리기 때문에 CPU를 원활하게 작업해야
- 서로 다른 프로그램의 작업을 섞어서 처리하면 불일치 발생 가능
- 사용자에게는 단일 사용자 시스템을 사용하는 것처럼 가장 가능
- 스케줄링 (실행 순서 조절) 이나 잠금 (동시 접근 시) 기술 사
Structure of a DBMS
- 보통 계층 구조로 설계, 각 계층은 특정 역할을 담당
- 상위 계층은 하위 계층의 기능을 사용해 동작
- 모든 게층에서 동시성 제어 + 회복 기능 고려 필요
1 Query Optimization and Execution : SQL 쿼리 입력시 최적화 후 실행
2 Relational Operators : join 등 관계 대수 연산을 수행
3 Files and Access Methoods : 인덱스나 검색 알고리즘을 통해 데이터 접근을 효율적으로
4 Buffer Management : 필요한 데이터를 디스크 → 메모리로, 임시 공간!
5 Disk Space Management : 디스크의 실제 물리적 저장 공간 관리
** 4, 5번의 경우 OS가 하는 일 같지만, DBMS 가 자체적으로 구현하는 이유가 잇음.
특정 테이블 블록이 반복적으로 참조되는 경우 자체 버퍼를 이용
OS는 파일 단위로만 디스크 공간을 관리하는데, 페이지 단위로 세세하게 필요한 경우
⇒ 즉, 성능 최적화와 데이터 일관성 관리 때문에 OS 위에 또 이 기능들을 구현한 것!
Summary
- DBMS 는 대규모 데이터를 관리하고 질의(검색) 하는데 사용
- 장점 : 시스템 장애로부터의 복구, 동시성, 빠른 어플리케이션 개발, 데이터 무결성, 보안
- 추상화 계층은 데이터 독립성을 제공한다
- DBMS는 일반적으로 계층형 구조를 가진다
- DBA(데이터베이스 관리자)는 책임 있는 직무를 맡으며 보수도 높다
- DBMS 연구&개발은 CS에서 가장 폭 넓고 흥미로운 분야 중 하나이다
'1일1티스토리' 카테고리의 다른 글
| 250915 - enum / const enum (0) | 2025.09.15 |
|---|---|
| 250914 - 소웨공 chap0 복습 (1) | 2025.09.14 |
| 250912 - 데마분 Ch1 복습 (0) | 2025.09.12 |
| 250911 - selectionSort : correctness (0) | 2025.09.11 |
| 250910 - insertion sort: correctness (0) | 2025.09.10 |