본문 바로가기
백엔드/SQL

데이터베이스관리시스템(DBMS)

by dustnn 2025. 3. 28.

1. 데이터베이스관리시스템의 정의 & 역할: 데이터 관리

2. 데이터베이스관리시스템의 의의

3. 데이터베이스 관리 시스템의 핵심 요소: 데이터베이스 엔진(Database Engine)

 

 

데이터베이스관리시스템의 정의 & 역할

 

데이터베이스에 저장된 데이터에 접근하고 이를 관리 및 운영할 수 있는 프로그램들의 집합

-> 데이터가 공유되는 데 문제 없도록 데이터 저장 및 관리

 

 

 

 

데이터베이스관리시스템의 의의

 

의의 1: 데이터 무결성과 정합성의 유지

 

무결성(Integrity)

: 데이터베이스의 데이터가 현실 세계를 정확히 반영하고 있으며, 저장된 데이터 내용에 모순이 없는 상태로 바르게 유지되는 성질

 

- 오류가 있는 값/유효하지 않은 값이 저장되진 않았는지

ex. 학생이 남학생인데 여학생으로 저장되진 않았는지

키 정보가 음수는 아닌지

 

- 데베에 변경이 발생해도 데이터가 모순 없이 유효하게 유지되고 있는지

 

정합성(일관성)(Consistency)

데베에 변경 또는 동시 접근이 발생한 뒤에도 동일한 정보가 서로 모순되지 않고 일관성 있게 유지되는 성질

ex. 학생이 휴학하면 모든 응용프로그램에서 휴학생에 해당하는 서비스 지원

 

<데이터 무결성과 정합성의 유지를 위한 DBMS 기술>

 

1. 제약 조건

ex. 음수여야 함

 

2. 트랜잭션 및 병행제어

 

<트랜잭션>

하나의 논리적 개념을 수행하는 여러 쿼리의 집합

 

ex. 

A가 B에게 송금(논리적 개념)할 때,,

트랜잭션: 일단 A의 잔액 조회 -> A의 잔액 변경 -> B의 잔액 변경 -> A/B의 잔액 조회

=> 4개의 쿼리로 이루어짐

 

논리적 기능 단위: 될 거면 되고 안 될거면 아예 없던 일로

ex. 송금이 성공적으로 되려면 되고, 중간에 잔액 변경이 되지 않으면 아예 실패

 

 

<병행제어> 

: 데이터가 변경되면 일관성이 훼손되지 않도록 반영해주기

 

ex. 학생의 재적상태가 휴학이면, 반영하여 다른 서비스에서 휴학생에 맞는 서비스를 제공해줄 수 있도록 함

 

 

3. 백업 및 복구

: 사고가 났으면, 무결성과 정확성이 완전했을 때의 상태로 복구

(만약을 위해 무결성과 정확성을 만족하는 db를 유지해두고, 사고가 나면 그거에 따라 복구)

 

 

4. 보안 정책(권한 관리)

아무나 접근 가능하도록 하지 않고, 특정 사람들만 접근할 수 있도록 하는 기술

 

 

의의 2: 파일 시스템의 문제점 해결

 

: 데이터 관리

 

파일시스템의 문제점 해결
파일 시스템의 데이터 중복과 그로 인한 불일치
- 각 응용프로그램별로 종속된 데이터 파일
- 같은 데이터가 여러 파일에 저장되어 중복 발생

ex. 학생지원팀에 저장된 학생의 정보가 교무팀에는 적용되지 않는 상황
데이터 일관성 유지
여러 사용자가 동일한 데이터에 동시 접근 데이터 일관성 유지
데이터 변경 데이터 변경과 관련된 연산(트랜젝션)의 원자성 보장
-> 데이터 일관성 유지
파일시스템 활용 프로그램에서는 무결성 유지를 위한
제약조건을 코드 내 포함시키지 않으면 무결성 유지 x
명시적 제약조건
-> 데이터 무결성 유지

ex. 0 이상이어야 함
파일 시스템 활용하는 응용프로그램은 데이터 파일에 종속적
-> 각 응용 프로그램 별로 파일 데이터 관리 로직 직접 작성
데이터 접근에 있어서 편의성, 효율성 제공
- 각 응용 프로그램에 종속된 데이터 파일 각각 존재
- 응용프로그램에 따라 파일 형식 다름
=> 통합적인 데이터 조회를 필요로 하는 새로운 응용프로그램 작성 어려움
응용 프로그램 개발에 있어서 편의성, 효율성 제공
파일 시스템 활용하는 응용프로그램에서는
각 사용자에 대한 세밀한 권한 관리 어려움
사용자 별로 데이터에 대한 접근 및 조작 권한 관리
-> 보안 문제 해결

 

DBMS의 단점

 

1. 비용이 높다.

구매/유지보수

2. 컴퓨터 자원을 많이 사용

3. 중앙집중관리로 인한 취약점 -> 망가지면 관련된 모든 프로그램이 셧다운

4. 복구가 어려움

의의 중에서 복구 기능이 있지만 복잡

 

But,, 단점 <<< 장점

 

<DBMS가 비효율적인 경우>

- 사용자가 적은 프로그램 개발: 그냥 파일 하나만 올리는 게 더 간편

- 여러 사용자로부터의 동시 접근이 필요하지 않을 때

- 변경 등은 하지 않고, 조회만 할 때

- 데이터 구조/내용이 자주 변경되지 않을 때

 

데이터베이스 관리 시스템의 핵심 요소: 데이터베이스 엔진

 

<사용자 인터페이스>

: shell 등

<데이터베이스 관리 기능 집합>

: 여러 세부 기능

 

<Database Engine>

: DBMS의 핵심

: 데이터 저장, 읽기, 쓰기, 인덱스 관리, 트랜잭션 관리, 병행 제어를 위한 잠금 관리

 

1. . Query Processor

데이터 질의 처리 기능: 어떤 데이터를 꺼내거나 변경하거나 삭제해달라는 질의 처리

 

query processor은 다음 4가지 모듈로 구성되어 있다.

- DDL Interpreter
- DML Pre-compiler
- DML Compiler
- Query Evaluation Engine

 

쿼리 처리 방법에는

사람이 직접 shell 환경에서 DDL 쿼리를 보내는 방법응용프로그램 상에서 쿼리를 보내는 방법(embedded SQL/connector)이 있다.

각 경우에 따라 필요한 모듈이 작동한다.

 

<DDL를 통해 쿼리를 보낼 때>

- DDL(데이터 정의어) Interpreter

스키마, 제약조건(음수이면 안 되거나..)을 DDL로 전달했을 때, 그 구문을 파싱하여 data dictionary에 저장

=> 앞으로 데이터를 저장할 때 dictionary 참고

 

<응용프로그램 상에서 쿼리 보낼 때>

- DML(데이터 조작어) Pre-compiler

: DML compiler 보조 정도로만 생각하면 됨

: embedded SQL 내의 쿼리문이 호출될 수 있도록 함수로 바꿔주는 역할

 

그중 응용프로그램을 개발할 때 Embedded SQL이나 connector을 사용한다고 했다.

embedded SQL 중 SQL 연산만을 SQL API 호출해줘야 함.

이때 pre-compiler가 함수로 바꿔주면, 그 함수를 호출함으로써 API가 호출된다.

 

* Embedded SQL: c언어로 쓰여진 코드 사이에 SQL 연산 끼워넣음 -> 내부호출해줘야 함

 

- DML Compiler

: 실제로 쿼리 처리

사용자가 준 쿼리를 파싱(사용자가 이상하게 작성했을 경우를 대비해 그냥 해석)

ex. 조회/삭제/저장

-> 알아서 그것을 실행할 수 있는 방법을 통해 execution plan 생성(사용자가 이상하게 작성했을 경우를 대비해 그냥 해석)

-> 쿼리 최적화: 그중 가장 효율적일 수 있는 것을 내부적으로 선택해 실행

 

=> 조회/삭제/저장/.. 등 쿼리는 모두 DML Compiler 거치는 것이다..

 

 

- Query Evaluation Engine

: 하나하나 단계별로 수행시킴

 

2. Storage Manager

데이터 저장 관련 기능

데이터베이스에 저장된 low-level 데이터와 애플리케이션 프로그램 등을 통해 시스템에 제출된 쿼리 간 인터페이스 제공

트랜잭션 관리

- File Manager
- Buffer Manager
- Authorization and Integrity Manager

 

 

- File Manager

: DBMS의 최하위 계층에서 운영체제 파일 시스템과 직접 상호작용 -> 데이터가 저장되는 물리적 디스크 공간 관리

: 테이블, 인덱스 등을 물리적 파일로 관리

* index: 내용 대신 이름으로 자료구조를 찾을 수 있도록 -> 성능 향상

 

- Buffer Manager

: DBMS는 디스크에 저장된 데이터 파일을 페이지 단위로 쪼개서 가져와 각각 관리

: 캐싱 -> 디스크 I/O 최소화 -> 데베 성능 향상

* 디스크에 접근하는 것은 메모리에 접근하는 것보다 훨씬 느림 -> 캐싱을 통해 속도 빠르게

 

- Authorization and Integrity Manager

: 권한 제어(어떤 테이블에 누가 접근 가능한지)

: 무결성 제약 조건 검사 및 관리

 

- Transaction Manager

: 트랜잭션 수행 관리

* 트랜잭션: 데이터베이스 애플리케이션에서 하나의 논리적 기능을 수행하는 연산(쿼리)들의 집합

다음 두 가지 종류가 있다.

 

"Concurrency-control Manager"

: 동시접근이 발생하는 트랜잭션에 대한 일관성 유지(변경 그때그때 반영)

 

"Recovery Manager"

concurrency-control manager 작동에도 불구하고 시스템 장애/트랜잭션 실패(정전/운영체제 충돌)

-> 중간까지 수행된 것 처음처럼 복구

 

 

3. disk storage(원통)

 

: 데이터베이스에 물리적으로 저장되는 것들은 구체적으로 disk storage 라는 곳에 저장된다.

 

<Storage Manager에 의해 유지 관리되는 자료구조>

- Data Files

- Indices(Indexes)

- Data dictionary: 저장된 데이터에 대한 메타데이터 저장(스키마, 제약조건 등..) -> DBMS가 관리할 수 있도록 함

 

<쿼리 최적화를 위한 통계 정보>

- Statistical data: 인덱스가 무슨 종류, 행의 개수 등..

'백엔드 > SQL' 카테고리의 다른 글

관계형 데이터 모델과 관계대수(2)  (0) 2025.04.02
관계형 데이터 모델과 관계대수(1)  (0) 2025.03.30
데이터 언어 & 사용자  (0) 2025.03.29
SQL 첫걸음 3~4장  (0) 2025.03.29
데이터베이스 시스템 개요(1)  (0) 2025.03.26