Overview of Database Management System

What is DB?

DATA vs INFORMATION 

  • DATA : 단순한 관찰이나 측정 등의 수단을 통해 현실 세계로부터 수집된 사실이나 값.
  • INFORMATION : 데이터 중에서도 조직화되고 체계화 된 데이터로서 의사 결정권자에게 의미를 제공하는 것. 

DATABASE 

  • 체계화된 데이터들의 모임으로, 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음. 

What is DBMS?

  • 이러한 데이터베이스의 모든 액세스를 관리하는 응용 소프트 웨어.
  • 데이터들을 정의조작제어 하는 기능을 가지고 있다.
    1. 정의 기능 : DB 생성 시 DB를 정의한다.
    2. 조작 기능 : 다수의 이용자들이 공동으로 이용(검색, 삽입, 삭제, 갱신)할 수 있다.
    3. 제어 기능 : 정확도와 보안성을 높인다.

DBMS의 기능에 따른 언어

  • DDL (Data Definition Language)' : DB의 구조(Schema, Domain, Table, View, Index)를 정의하는 언어로, 
    DBA(Database Administrator)는 해당 attribute, domain, authority 등을 명확히 이해하고 결정해야 한다.
DDL
명령어기능
CREATESchema, Domain, Table, View, Index를 정의함
ALTERTable에 대한 정의를 변경하는 데 사용함
DROPSchema, Damian, Table, View, Index를 삭제함



  • DML (Data Manipulation Language) : DB사용자, 어플리케이션 등 다수의 user들이 DB에 대해
    검색(select), 삽입(insert), 삭제(delete), 갱신(update)등을 하게 하기 위한 언어.
    1. 절차식(Procedural) DML : "어떤" 데이터를 "어떻게" 구할 지 명세.
    2. 비절차식(Non-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원을 계좌이체하는 트랜잭션에서

  1. A계좌에서 x원 만큼 차감
  2. 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 preprocessorquery에 대한 의미론적 검사(모든 relation과 그 관계를 언급 했는지 등)와 
parse 트리를 대수 연산자 트리로 변환시키는 등을 수행
Query optimizer초기의 query plan을 가장 적합한 형태로 결정


블로그 이미지

차트

소소한 일상 C코드 DB 항상 행복하게^-^★

,