본문 바로가기
Server/Ubuntu

[DB] DBMS(DataBase Management System)란? (기초)

by 재현짱 2024. 7. 5.
728x90

DBMS(DataBase Management System)란? (기초)

 

DBMS 탄생 배경

 

1. 초기 데이터 관리 문제

 

1950 ~ 60년대 초기 시대에는 데이터 파일 시스템(메모리)에 저장하고 관리, But 파일 시스템 방식의 문제점이 존재

  • 데이터 중복: 동일 데이터가 여러 번 저장될 수 있어 저장 공간 낭비 가능성
  • 데이터 불일치: 동일 데이터를 여러 파일에서 수정할 때 일관성 유지가 어러움
  • 데이터 독립성 부족: 데이터 구조가 애플리케이션 코드에 종속되어 데이터 구조 변경 시 애플리케이션도 수정
  • 데이터 접근성 및 보안: 데이터를 효과적으로 검색, 수정, 삭제 및 보안 관리의 어려움
  • 메모리의 휘발성: 전원이 공급되는 동안에만 데이터를 유지, 컴퓨터를 종료하면 휘발성 메모리에 저장된 모든 데이터가 사라짐 대표적인 예시:RAM(Random Access Memory)

2. DataBase의 도입

 

위와 같은 문제점을 해결하기 위해 1960년대 후반부터 데이터베이스라는 개념이 도입됨 (찰스 바크만이 1960년에 제작한 IDS가 최초의 DBMS로 평가 받음) 데이터베이스는 구조화된 데이터의 집합으로, 데이터 중복을 줄이고 데이터 일관성을 유지하며, 데이터 독립성을 제공할 수 있도록 설계됨

 

DB의 특징

  • 실시간 접근성 (Real-Time Accessibility): 사용자가 데이터를 요청하면 즉시 접근할 수 있도록 보장하는 기능
    • 빠른 응답 시간: DB 시스템은 사용자가 쿼리를 제출했을 때 빠르게 결과값을 반환해야함
    • 즉각적 데이터 갱신: 데이터를 입력하거나 수정했을 때, 그 변경 즉시 반영되어야함
  • 계속성 (Continuity): DB가 항상 가용 상태로 유지, 데이터 손실 없이 지속적으로 운영되는 기능
    • 데이터 무결성 보장: DB는 하드웨어 오류, 소프트웨어 오류, 네트워크 오류 등 여러가지 문제로부터 데이터를 보호하여 무결성을 유지해야함
    • 고가용성: 시스템 다운 타임을 최소화하고, 서버 이중화, 클러스터링, 재해 복구 등을 통해 높은 가용성을 유지
  • 동시성 (Concurrency): 여러 사용자가 동시에 DB에 접근하고 작업을 수행할 수 있도록 하는 기능
    • 동시성 제어: 여러 사용자가 동시에 DB를 읽고 쓰는 상황에서 데이터 일관성을 유지해야함
    • 트랜잭션 관리: 트랜잭션이 동시에 수행될 때 서로 간섭하지 않도록 관리함. 트랜잭션은 독립적으로 실행
  • 내용에 따른 참조 (Content - Based Reference): 데이터를 물리적 위치가 아닌 내용에 따라 참조하는 기능
    • 데이터 독립성: 사용자와 응용 프로그램은 데이터가 저장된 물리적 위치를 알필요 없이 논리적 구조에 따라 데이터를 잠조할 수 있음
    • 논리적 데이터 모델: 데이터는 테이블, 열, 행 등의 논리적 구조로 표현되며, 사용자는 SQL 쿼리를 통해 데이터를 참조  

계층형 데이터베이스

  • 트리 구조의 데이터 모델
  • 부모 - 자식 관계로 데이터를 저장
  • 자식은 단 하나의 부모를 가짐 (1:N 관계)

네트워크 데이터베이스

  • 계층형의 단점을 보완한 데이터 모델
  • 계층형과는 달리 1:1, 1:N, N:M 관계를 모두 지원

관계형 데이터베이스

  • 테이블이라 불리는 최소 단위로 구성된 데이터 모델
  • 모든 데이터는 테이블에 저장
  • DBMS 종류: MySQL, ORACLE, SQLite 등

관계형 데이터베이스 구조

  • Table ( = Relation)
    • 데이터의 세부 목적에 맞게 구조적 목록으로 묶어놓은 영역
    • 테이블의 이름은 고유해야 함
  • Columns ( = Filed = Attribute = 열)
    • 특정한 단순 자료형의 일련의 데이터 값과 테이블에서의 각 열 -> 속성
  • Rows ( =Record = Tuple = 행)
    • 테이블에 한 객체의 대한 전체 정보
  • Filed
    • Column의 대용으로 동일한 의미로 사용되지만 한 행의 열의 교차 지점에 있는 단일 값을 특별히 지칭할 때 많이 사용

비관계형 데이터베이스

  • 관계형 데이터베이스와 달리 유연한 데이터 모델을 이용하는 것이 특징
  • 키와 값의 형태로 저장, 키를 사용해서 데이터 관리 및 접근

DBMS의 기본 용어

 

DBMS 기본 용어

 

DataBase: 체계화된 데이터의 모임, 구조적으로 데이터를 저장하는 공간 (추상적 개념)

 

DBMS (DataBase Management System): 다수의 컴퓨터, 사용자들이 DB안에 데이터를 기록하거나 사용할 수 있도록 해주는 프로그램 (실체적 개념)

 

테이블 (Table): DB 내에서 데이터를 구조화하여 저장하는 기본 단위, 행과 열로 구성

 

튜플 (Tuple): 테이블의 한 행(Row)을 의미, DB에서 레코드(Record)라고도 함

※ 튜블의 수: Cardinality

 

어트리뷰트 (Attribute): 테이블의 열(Column)을 의미, 데이터 항목의 속성이나 특성을 나타냄

※ 어트리뷰트의 수: Degree

 

스키마 (Schema): DB의 구조를 정의하는데 사용되는 청사진으로, 테이블, 뷰, 인덱스, 제약 조건 등을 포함

※ 보통은 개념 스키마로 정의, 외부 / 내부 / 개념으로 구분

 

외부: 사용자의 입장 => 질의나 프로그래밍 언어를 통해 접근하는 DB를 정의

내부: 물리적 저장 장치 측면

개념: 전체적인 DB 구조를 기술 => 개체, 데이터 유형, 관계, 제약조건 등을 정의

 

쿼리 (Query): DBMS에 대한 처리요청을 문자열로 나타낸것

 

도메인 (Domain): 특정 어트리뷰트가 가질 수 있는 값의 범위

 

관계 (Relationship): 두 개 이상의 테이블 간의 논리적 연결을 의미

 

키 (Key): 테이블 내에서 각 튜블을 고유하게 식별하는 어트리뷰트나 어트리뷰트의 집합

  • 기본키 (PRIMARY KEY): 테이블 내에서 각 행을 고유하게 식별하는 키
  • 외래키 (FOREIGN KEY): 다른 테이블의 기본 키를 참조하는 키
  • 슈퍼키 (SUPER KEY): 유일성을 만족하는 키
  • 복합키 (COMPOSITE KEY): 2개 이상의 어트리뷰트를 사용한 키
  • 후보키 (CANDIDATE KEY): 유일성과 최소성을 만족하는 키. 기본키가 될 수 있는 후보
  • 대체키 (SURROGATE KEY): 후보키 중에 기본키로 선택되지 않은 키

인덱스 (INDEX): 데이터 검색 속도를 향상시키기 위해 사용하는 데이터 구조

 

뷰 (VIEW): 하나 이상의 테이블에서 선택된 데이터로 구성된 가상 테이블, 쿼리를 통해 생성

 

제약조건 (CONSTRAINT): 무결성을 유지하기 위해 테이블의 어트리뷰트에 적용되는 규칙

 

트랜잭션 (TRANSACTION): DB에서 일어나는 일련의 작업(QUERY)으로, 데이터의 일관성을 보장하기 위해 원자성, 일관성, 고립성, 지속성 특성을 충족

 

SQL (Structured Query Language): 데이터베이스를 관리하고 조작하기 위한 표준 언어

 

[참조] Tables Column

hello table columns

 

DBMS의 기능

 

데이터 정의어

 

DDL(Data Definition Language)

 

DDL은 데이터베이스의 구조를 정의하는 데 사용됨. 주로 테이블,인덱스, 뷰, 스키마 등을 생성, 수정, 삭제하는 명령어들이 포함됨

  • CREATE: 새로운 데이터베이스 객체(TABLE, INDEX, VIEW 등)을 생성
더보기

CREATE문 예시

 

CREATE TABLE helloworld (

      ID INT PRIMARY KEY,

      NAME VARCHAR(50),

      POSITION VARCHAR(50),

      SALARY DECIMAL(10, 2)

);

  • ALTER: 기존 데이터베이스 객체의 구조를 수정
더보기

ALTER문 예시

 

ALTER TABLE helloworld ADD COLUMN department VARCHAR(50);

  • DROP: 데이터베이스 객체를 삭제
더보기

DROP문 예시

 

DROP TABLE helloworld;

  • TRUNCATE: 테이블의 모든 데이터를 삭제하지만, 테이블 구조는 유지
더보기

TRUNCATE문 예시

 

TRUNCATE TABLE helloworld;

DDL에서 자주 쓰이는 키워드: VARCHAR(문자열), INT(정수형), PRIMARY KEY(PK, 기본키), FOREIGN KEY(FK, 외래 키), NOT NULL(제약 조건) 등 사용

 

데이터 조작어

 

DML(Data Manipulation Language)

 

DML은 데이터베이스에 저장된 데이터를 조작하는 데 사용됨. 주로 데이터를 삭입, 삭제, 수정, 조회하는 명령어들이 포함

  • INSERT: 새로운 데이터를 삽입
더보기

INSERT문 예시

 

INSERT INTO helloworld (id, name, position, salary) VALUES (1, 'Jaehyun', 'Manager', 85000);

  • UPDATE: 기존 데이터를 수정
더보기

UPDATE문 예시

 

UPDATE helloworld SET salary = 90000 WHERE ID = 1;

  • DELETE: 데이터를 삭제
더보기

DROP문 예시

 

DELETE FROM helloworld WHERE ID = 1;

  • SELECT: 데이터를 조회
더보기

SELECT문 예시

 

SELECT * FROM helloworld;

DDL에서 자주 쓰이는 키워드:  JOIN(결합), WHERE(특정 조건 지정), ORDER BY(정렬), LIMIT(제한) 등 사용

 

데이터 제어문

 

DCL( Data Control Language)

 

DCL은 데이터베이스에 대한 접근 권한을 제어하는 명령어들을 포함함. 주로 사용자 권한을 부여하거나 회수하는 데 사용

  • GRANT: 사용자에게 특정 권한을 부여
더보기

GRANT문 예시

 

GRANT ALL PRIVILEGES ON helloworld.* To 'Jaehyun'@'localhost';

FLUSH PRIVILEGES; // 해당 권한 변경을 즉시 반영시킨다.

  • REVOKE: 사용자에게 부여된 특정 권한을 회수
더보기

REVOKE문 예시

 

REVOKE ALL PRIVILEGES ON helloworld.* FROM 'Jaehyun'@'localhost';

FLUSH PRIVILEGES; // 해당 권한 변경을 즉시 반영시킨다.

트랜잭션 제어어

 

TCL(Transaction Control Language)

 

 

TCL은 트랜잭션의 상태를 관리하는 명령어들을 포함함. 트랜잭션은 데이터베이스의 일관성을 유지하면서 여러 작업을 하나의 작업 단위로 묶는 것을 의미

  • COMMIT: 트랜잭션에서 수행된 모든 변경 사항을 영구적으로 저장
더보기

COMMIT;

  • ROLLBACK: 트랜잭션에서 수행된 모든 변경 사항을 취소
더보기

ROLLBACK;

  • SVAEPOINT: 트랜잭션 내의 특정 지점을 설정하여 필요 시 해당 지점으로 롤백할 수 있도록 함
더보기

SVAEPOINT sp1;

  • RELEASE SAVEPOINT: 설정된 저장 지점을 삭제
더보기

RELEASE SAVEPOINT sp1;

  • SET TRANSACTION: 트랜잭션의 속성을 설정
더보기

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

 

※ 트랙잭션의 특성

  • 원자성(Atomicity): 트랜잭션에 정의된 연산들은 ALL or Nothing
  • 일관성(Consistency): 트랜잭션 실행 전에 이상이 없으면, 트랜잭션 실행 후에도 이상이 없음
  • 고립성(Isolation): 트랜잭션 실행 중 다른 트랜잭션의 영향을 받지 않음
  • 지속성(Durability): 트랜잭션이 올바르게 동작했다면 갱신된 DB내용은 영구적으로 저장되어야함

DBMS의 작동 방식

 

1. 데이터베이스 엔진

 

DBMS의 핵심 구성 요소, 데이터를 저장,검색,수정,삭제하는 기본 기능을 수행

  • 데이터 저장: 데이터를 디스크에 저장, 효율적인 검색을 위해 Index를 관리
  • 데이터 검색: SQL 쿼리를 처리하여 데이터를 검색
  • 데이터 수정: 데이터를 삽입, 업데이트, 삭제

2. 데이터 사전 (Data Dictionary)

 

DB의 메타데이터를 저장하는 특별한 시스템 테이블

  • DB 구조 관리: DB의 스키마 정보를 저장 및 관리
  • 사용자 권한 관리: 사용자 권한에 대한 정보를 저장 및 관리

3. 쿼리 처리기 (Query Processor)

 

사용자가 입력한 SQL Query를 해석 및 최적화하여 실행 계획을 수립, 실행하는 역활

  • SQL Parsing: SQL Query를 구문 분석하여 파싱 트리 생성
  • SQL 최적화 (Optimization): 최적의 실행 계획을 수립. Index 사용, Join 순서 등 결정
  • SQL 실행 (Execution): 최적화된 실행 계획에 따라 Query를 실행

4. 트랜잭션 관리기 (Transaction Manager)

 

DB의 트랜잭션을 관리하여 ACID 특성 (원자성, 일관성, 고립성, 지속성)을 보장

  • 트랜잭션 시작: 새로운 트랜잭션 시작
  • 트랜잭션 커밋: 트랜잭션의 변경 사항을 영구적으로 저장
  • 트랜잭션 롤백: 트랜잭션의 변경 사항을 취소, 이전 상태로 되돌림

5. 동시성 제어기 (Concurrency Control Manager)

 

여러 트랜잭션이 동시에 수행될 때 데이터의 일관성을 유지함

  • 잠금 (Locking): 데이터를 수정하는 동안 다른 트랜잭션이 접근하지 못하도록 잠금 설정
  • 타임스탬프 (Timestamp): 트랜잭션에 타임스탬프를 부여하여 순서를 결정, 충돌을 방지함
  • 멀티버전 동시성 제어 (MVCC): 데이터의 여러 버전을 유지하여 트랜잭션이 서로 간섭하지 않도록 함

6. 복구 관리기 (Recovery Manager)

 

시스템 장애 발생 시 DB를 일관된 상태로 복구하는 역활

  • 로그 기록 (Logging): 트랜잭션의 모든 변경 사항을 로그에 기록
  • 체크포인트 (Checkpoint): 주기적으로 DB 상태를 저장하여 복구 시간 단축
  • 롤백 및 롤포워드 (Rollback and Rollforward): 장애 발생 시 로그를 이용해 데이터를 복구

7. 버퍼 관리기 (Buffer Manager)

 

메모리와 디스크 간의 데이터 이동을 관리

  • 버퍼 풀 관리: 자주  사용하는 데이터를 메모리에 유지하여 접근 속도를 향상시킴
  • 페이지 교체 정책: 메모리 공간이 부족할 때 데이터를 디스크로 내보내고, 필요한 데이터를 메모리로 가져오는 전략을 수립

정규화

 

제 1 정규화 (1NF : First Normal Form)

  • 테이블의 각 열이 원자값 (Atomic value)을 가져야 한다는 규칙을 따름
  • 즉 모든 열이 더이상 나눌 수 없는 값을 가짐
  • 각 셀에는 하나의 값만 포함

[예시]

1NF

 

제 2 정규화 (2NF : Second Normal Form)

  • 1NF를 만족해야함
  • 기본키가 아닌 모든 속성이 기본 키 전체에 대해 완전 함수 종속성을 가져야 한다는 규칙을 따름
  • 부분 함수 종속성을 제거

[예시]

 

제 3 정규형 (3NF: Third Normal Form)

  • 2NF를 만족해야함
  • 비기본키 속성이 다른 비기본키 속성에 *이행적 함수 종속이 없어야 한다는 규칙을 따름
  • 대표적인 예시로 A -> B 이고, B -> C 일때, A -> C를 만족함
  • 아래의 예시는 2NF 와 3NF 두 조건을 모두 만족함

*이행적 종속성: Table의 Primary Key가 열과 다른 Primary Key에 종속되는 경우

 

[예시]

3NF

 

보이스 - 코드 정규화 (BCNF: Boyce - Codd Normal Form)

  • 3NF를 만족해야함
  • 모든 결정자가 후보키가 되어야 한다는 규칙을 따름
  • 결정자란 속성 집합이 다른 속성을 유일하게 결정하는 경우 그 속성의 집합을 뜻함

BCNF

 

외에도 제 4 정규형과 제 5 정규형이 존재하지만 생략하겠다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참조한 사이트

 

DBMS 기본 용어 사진 출처

https://hongong.hanbit.co.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-databasedb-dbms-sql%EC%9D%98-%EA%B0%9C%EB%85%90/

'Server > Ubuntu' 카테고리의 다른 글

[서버] Snort 구축  (0) 2024.08.08
[서버] DNS(Domain Name Server) 구축  (0) 2024.08.08
[서버] DHCP(Dynamic Host Configuration Protocol)란?  (0) 2024.06.05
[Server] Web Server란?  (0) 2024.05.30
[Server] Web Server 구축  (2) 2024.05.29