Overview of Database Management System
What is DB?
DATA vs INFORMATION
- DATA : 단순한 관찰이나 측정 등의 수단을 통해 현실 세계로부터 수집된 사실이나 값.
- INFORMATION : 데이터 중에서도 조직화되고 체계화 된 데이터로서 의사 결정권자에게 의미를 제공하는 것.
DATABASE
- 체계화된 데이터들의 모임으로, 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음.
What is DBMS?
- 이러한 데이터베이스의 모든 액세스를 관리하는 응용 소프트 웨어.
- 데이터들을 정의, 조작, 제어 하는 기능을 가지고 있다.
- 정의 기능 : DB 생성 시 DB를 정의한다.
- 조작 기능 : 다수의 이용자들이 공동으로 이용(검색, 삽입, 삭제, 갱신)할 수 있다.
- 제어 기능 : 정확도와 보안성을 높인다.
- 정의 기능 : DB 생성 시 DB를 정의한다.
DBMS의 기능에 따른 언어
- DDL (Data Definition Language)' : DB의 구조(Schema, Domain, Table, View, Index)를 정의하는 언어로,
DBA(Database Administrator)는 해당 attribute, domain, authority 등을 명확히 이해하고 결정해야 한다.
DDL | |
---|---|
명령어 | 기능 |
CREATE | Schema, Domain, Table, View, Index를 정의함 |
ALTER | Table에 대한 정의를 변경하는 데 사용함 |
DROP | Schema, Damian, Table, View, Index를 삭제함 |
- DML (Data Manipulation Language) : DB사용자, 어플리케이션 등 다수의 user들이 DB에 대해
검색(select), 삽입(insert), 삭제(delete), 갱신(update)등을 하게 하기 위한 언어.- 절차식(Procedural) DML : "어떤" 데이터를 "어떻게" 구할 지 명세.
- 비절차식(Non-procedural) DML : 방법은 따로 명시하지 않음.
- 절차식(Procedural) DML : "어떤" 데이터를 "어떻게" 구할 지 명세.
DML | |
---|---|
명령어 | 기능 |
SELECT | 테이블에서 조건에 맞는 튜플을 검색함 |
INSERT | 테이블에 새로운 튜플을 삽입함 |
DELETE | 테이블에서 조건에 맞는 튜플을 삭제함 |
UPDATE | 테이블의 조건에 맞는 튜플의 내용을 변경함 |
- DCL (Data Control Language) : DB에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 언어.
DCL | |
---|---|
명령어 | 기능 |
COMMIT | 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌 |
ROLLBACK | 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구함 |
GRANT | 데이터베이스 사용자에게 사용권한을 부여함 |
REVOKE | 데이터베이스 사용자의 사용권한을 취소함 |
정보의 검색을 담당하는 부분을 Query라 한다.
Transaction
* What is transaction?
- DBMS에서 데이터들의 상호작용이 일어나는데, 이러한 상호작용의 한 단위(unit of work)를 말한다.
- 성공과 실패가 분명해야하고, 상호 독립적이어야 하며 일관되고 믿을 수 있어야 한다.
- Logical Units of Work (LUW) 라고도 한다.
- 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질인 ACID가 있다.
(하지만 성능을 위해 이런 특성들이 종종 완화되곤 한다.)- Atomicity (원자성) : all-or-nothing 개념으로, 한 번 트랜잭션 수행이 시작되었다면 중간에 중단되지 않아야 한다.
- Consistency (일관성) : valid state(고립 상태 : 동시에 수행되는 트랜잭션이 없는 걸 보장하는 상태)에서의
트랜잭션 수행이 데이터베이스의 일관성을 보존하여야 한다. - Isolation (고립성) : 여러 트랜잭션들이 동시에 수행되더라도 어느 하나가 마친 뒤에
다른 트랜잭션이 시작하는 것과 같이 되도록 보장해야 한다. - Durability (지속성) : 트랜잭션이 성공적으로 수행 완료되고 나면
트랜잭션에 의해 데이터베이스에 변경된 내용은 지속되어야 한다. (이것이 만약 시스템에 오류를 발생시키더라도)
예)
ATM기에서의 계좌 이체를 한 트랜잭션으로 생각해보자.
A계좌로부터 B계좌로 x원을 계좌이체하는 트랜잭션에서
- A계좌에서 x원 만큼 차감
- B계좌에서 x원 만큼 증가 (중략)
이러한 단계들로 되어 있는데(차감한 순간 B 계좌로 넣어지는 것은 아니므로) 단계 1만 진행한 상태로 오류가 나
트랜잭션이 중단되면 A계좌의 잔고는 차감된 상태이며 B계좌에는 잔고가 변화가 없는, 있어서는 안 될 사태가 생긴다.
이 때 ACID의 원자성 보장의 필요성을 알 수 있다. 또한 무결성 제약조건 및 잔고의 합이 같아야 한다는 일관적인
조건들로 보아 일관성 보장도 따른다.
Query processor
- 파일 혹은 데이터베이스 접근을 위해 사용자의 조회 요구를 직접 사용될 수 있는 명령어로 변환시키는 프로그램 혹은 프로그래머.
- Query compiler, Execution engine 두 가지로 표현할 수 있다.
- Query compiler : 사용자의 query를 query plan, 즉 Low-level language로 번역해 주며 3가지 주 요소를 포함한다.
또한 작업들을 가장 빠르게 수행하기 위해 메타데이터/통계 등을 이용한다. - Execution engine : 데이터를 관리/제어/조작 하기위해 버퍼에 넣어 사용한다.
액세스 충돌 및 lock을 피하기 위해 Scheduler, 데이터의 변화를 확실히 하기위해 Log manager가 필요하다.
Query compiler | |
---|---|
UNIT | 설명 |
Query parser | 텍스트 형태의 query를 트리 구조로 빌드함 |
Query preprocessor | query에 대한 의미론적 검사(모든 relation과 그 관계를 언급 했는지 등)와 parse 트리를 대수 연산자 트리로 변환시키는 등을 수행 |
Query optimizer | 초기의 query plan을 가장 적합한 형태로 결정 |
'IT > Database Concepts' 카테고리의 다른 글
[DB개념] :: Define on SQL about kinds of Relations (다양한 릴레이션에 대한 SQL) (0) | 2018.04.04 |
---|---|
[DB개념] :: SQL (Structured Query Language, 구조화 질의어) (0) | 2018.04.03 |
[DB개념] :: Extended Operators of Relational Algebra (확장 관계대수) (1) | 2018.04.02 |
[DB개념] :: Relational Algebra (관계대수) (0) | 2018.03.29 |
[DB개념] :: The Relational Data Model (관계형 데이터 모델) (0) | 2018.03.26 |