DBMS
DBMS란 Database Management System으로 데이터베이스에 적재된 데이터 작업을 수행할 뿐만 아니라 데이터베이스를 보호하고 보안을 제공한다.
DB
DB는 Database로 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합으로 논리적으로 연관된 하나 이상의 자료의 모음을 구조화하여 검색 및 갱신 효율을 높인다.
DBMS는 객체(Entities)와 관계(Relationships)를 통해 정보를 구조화한다
CMS
Course management system(CMS)이 있다고 할 때 Entities와 Relationships은 아래와 같다.
Entities
- Students
- Courses
- Professors
Relationships
- Who takes what
- Who teaches what
Data model
Data model은 데이터를 설명하기 위한 개념의 집합이고Relational model은 가장 많이 쓰이는 Data model 중 하나이다.
Relational model
Relational mode은 table로 구성되어 있으며 CMS의 Student로 table을 구성한다면 아래와 같다.
Student table
이름 | 학년 | 학번 |
김철수 | 1 | 1234 |
김영희 | 2 | 1235 |
Schema
Schema는 Data model을 이용하여 특정 데이터 집합의 설명하는 것으로 Relational data model의 모든 relation에는 schema가 정의되어 있다.
Schema는 사용자 요구에 따라 3 계층으로 외부스키마(External Schema), 개념스키마(Conceptual Schema), 내부스키마(Internal Schema)로 선택할 수 있다.
Logical schema
데이터 사이의 관계와 저장되는 데이터에 대한 Schema로 CMS에서는 아래와 같이 설계가 가능하다.
- Students(sid: string, name: string, gpa:float)
- Courses(cid: string, cname: string, credits:float)
- Enrolled(sid: string, cid: string, grade:string)
- Enrolled는 Corresponding key를 사용함 (다른 table의 key를 가져오는 것)
Physical Schema
data의 layout을 묘사한 것으로 Relations이 정렬되지 않은 files 형태로 저장되어 있고 물리적으로 어디에 저장되어 있는지를 나타낸다.
External Schema(View)
사용자가 관심 있는 부분만 임시 tabel을 만들어 보여주는 것으로 files로 저장하지 않는다.
Physical Schema > Logical Schema > External Schema 순서로 복잡하며 Physical Schema에 가까울수록 Adminiatrators가 조작하며 Extenrnal Schema에 가까울수록 Applications이 조작한다.
Data Independence
데이터의 독립성은 Applications이 data의 구조와 저장 방식에 대해 생각할 필요가 없다는 개념에서 시작하여 데이터의 논리적 구조나 물리적 구조가 변경되더라도 Applications이 영향을 받게 하지 않는 것이다.
Logical data independence
Logical Schema를 변경하였을 때 Logical Schema에 영향을 주지 않는 것이다.
Physical data independence
Physical layout이 변경되는 것을 보호하는 것이다.
DBMS는 많은 유저의 동시접속으로 인해 생기는 문제를 Security, Performance, Consistency 3가지의 성능을 고려하면서 해결해야한다.
Security
- Different users, Different roles
Performance
- 동시접속에 대해 동시 액세스를 제공해야 함
- Disk/ SSD는 접속 속도가 느리기 때문에 DBMS는 많은 CPU를 이용해 수행시간을 줄인다.
Consistency
- 동시접속으로 인해 업데이트 문제가 발생할 수 있음
- DBMS는 유일한 사용자인 것처럼 프로그램을 작성함
Transactions
쪼갤 수 없는 업무의 최소 단위로 DB의 Atomicity를 보장한다. Atomicity란 전부 실행되거나 전부 실행되지 않는 상태를 말하며 TX, TXN으로 표기한다. 돈을 입금하는 과정에서 하나라도 빼먹으면 모든 명령어가 취소되며 입금 전 상태로 돌아가는 것으로 예시를 들 수 있다.
TXN은 DB가 일관된 상태로 유지하며 사용자가 integrity constraints(무결성 제약 조건)를 따르게 한다. DBMS의 모든 동작은 Integrity Constraints를 준수한다.
Concurrency & locking
DBMS는 TXN의 실행이 일부 Serial 실행과 같음을 보장한다. 이는 A, B, C의 명령이 있다면 A -> B -> C의 결과와 B -> C -> A의 결과가 같음을 보장하는 것이고 이는 TXN의 결과가 의도와 다르면 안 된다는 것을 뜻한다.
DB에서 lock이란 TXN의 순차적 처리를 보장하기 위한 방법으로 data를 읽거나 쓰기 전에 lock을 하여 선택된 TXN만이 데이터에 접근하게 한다.
Atomicity & logging
DBMS는 TXN을 통해 Atomicity를 보장하며 이는 WAL(Write ahead logging)을 통해 작업한다.
WAL
WAL이란 DBMS에서 모든 수정 적용 전 원본을 log에 기록하는 것으로 TNX발생 시 기록을 남기고, 데이터가 쌓이면 Disk에 저장하여 Consistency(원본 log를 가지고 있기 때문에 누가 언제 조회하든 변경 전까지 같은 데이터를 보여줌)하고 Atomicity(서버가 다운되어도 log에 기입됨)을 보장함
'데이터베이스' 카테고리의 다른 글
[DBMS] Transactions에서 ACID를 유지하는 방법 logging, Locking (0) | 2023.05.30 |
---|---|
[DBMS] Transactions을 사용하는 이유(ACID) (0) | 2023.05.30 |
[SQL] Multiset Operations, 중첩 질의문, 집합 연산, NULL JOIN (0) | 2023.04.18 |
[SQL] SQL 기초 (Join, like, Order by, Foreign Key) (0) | 2023.04.17 |