데이터베이스 시스템 [개념]
•5 min read5 min•989 words989 words
1. 데이터베이스 기본 개념
1.1. 데이터 (data)
- 컴퓨터에 저장되어 사용될 수 있는 정보
- 예) 행정 데이터, 의료 데이터, 성적 데이터, 실험 데이터, …
1.2. 데이터베이스(database)
- 전자적으로 저장되고 사용되는, 관련있는 데이터들의 조직화된 집합
전자적으로 저장하고 사용
- 데이터가 컴퓨터에 저장되고 사용
관련있는 데이터
- SNS의 사진, 글, 댓글 같은 일련의 정보들
- 같은 출처, 목적, 서비스 안에서 생성되는 데이터들
조직화된 집합
- 내가 찾으려는 데이터를 빨리 찾기 위해서는 잘 정리하는 것이 중요
- 불필요한 데이터가 중복적으로 생성되는 것을 막음
- 데이터의 불일치를 막음
1.3. 데이터베이스 관리 시스템 (DBMS: database management system)
- 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템
- 예) MySQL, PostgreSQL, Oracle DB
1.3.1. 메타데이터 (Metadata)
- 데이터베이스를 정의하거나 기술하는 데이터
- data about data
- 메타 데이터 역시 DBMS로 관리
- 예) 데이터 유형, 구조, 제약 조건, 보안, 저장, 인덱스, 사용자 그룹 등
1.4. 데이터베이스 시스템 (database system)
- database + DBMS + 연관된 어플리케이션
- database라고도 부르기도 한다.
**`보충 설명`** DBMS와 데이터베이스 시스템의 차이점
| 항목 | DBMS | 데이터베이스 시스템 |
|---|---|---|
| 정의 | 데이터 저장 및 관리 소프트웨어 시스템 (예: MySQL, Oracle) | DBMS + 데이터베이스 + 관련 응용 프로그램 및 사용자 인터페이스의 전체 시스템 |
| 범위 | 데이터베이스의 관리 기능에 집중 | 데이터베이스를 운영하는 전체 시스템 (DBMS, 데이터베이스, 응용 프로그램 포함) |
| 구성 요소 | DBMS 소프트웨어 (예: MySQL, Oracle) | DBMS + 데이터베이스 + 응용 프로그램 + 사용자 인터페이스 등 |
| 예시 | MySQL, PostgreSQL, Oracle DB | 호텔 예약 시스템, 온라인 쇼핑몰 데이터베이스 시스템 |

- 전체적인 흐름 설명
- 프로그래머: SQL 쿼리(예:
SELECT * FROM users WHERE age > 30;)를 DBMS로 전송 - DBMS:
- 프로그래머: SQL 쿼리(예:
쿼리 파싱, 최적화 후 실행 계획 수립
- 쿼리 파싱: SQL 쿼리를 이해할 수 있는 형태로 변환.
- 쿼리 최적화: 쿼리를 효율적으로 실행할 수 있는 방법을 선택.
- 실행 계획 수립: 선택된 최적화 방법을 실제로 실행하기 위한 구체적인 단계 설정.
실행기에서 데이터 검색
- 어떤 방식으로 데이터를 검색할지, 어떤 자료 구조를 활용할지 결정
- 검색된 데이터 반환
3. **스토리지 엔진:**
- 테이블에서 실제 데이터 검색
- 검색 방법에 따라 데이터가 물리적으로 저장된 장소에서 직접 데이터를 읽는 단계
4. **응답**: DBMS에서 프로그래머로 결과 반환
**`보충 설명`** DBMS 단계에서 `쿼리 최적화`와 `실행기에서 데이터 검색`의 차이
| 구분 | 쿼리 최적화 | 실행기에서 데이터 검색 |
|---|---|---|
| 시점 | 쿼리가 실제 실행되기 전에 쿼리의 실행 계획을 최적화 | 쿼리 최적화 후, 실제로 데이터를 검색하고 반환하는 단계 |
| 역할 | 쿼리의 실행 계획을 개선하여 성능을 높임 | 최적화된 계획에 따라 실제로 데이터를 찾고 반환 |
| 핵심 작업 | - 쿼리 리팩토링 |
- 인덱스 사용
- 조인 방식 결정
- 조건 순서 최적화 | - 테이블/인덱스 스캔
- 조인 실행
- 결과 반환 |
| 목표 | 성능을 최대한 높이는 효율적인 실행 계획 수립 | 최적화된 실행 계획에 따라 정확한 데이터 검색 |
2. 데이터 모델 (data models)
- DB 구조를 기술하는데 사용될 수 있는 개념들
2.1. 개념적 데이터 모델 (conceptual data models)
-
high-level -
일반 사용자(비전공자)들이 쉽게 이해할 수 있는 데이터 모델
-
추상화 수준이 가장 높음
-
비즈니스 요구 사항을 추상화하여 기술할 때 사용
- 예) entity-relationship model (ER diagram)
-
예시1

-
예시2

2.2. 논리적 데이터 모델 (logical data models)
representational- 디테일하게 DB를 구조화할 수 있는 개념 제공
- 특정 DBMS, storage에 종속되지 않는 수준에서 DB를 구조화할 수 있음.
- 예)
- relational data model (Oracle, MySQL)
- object data model
- object-relational data model (PostgreSQL)
- 예)


2.3. 물리적 데이터 모델 (physical data models)
low-level- 컴퓨터에 데이터가 어떻게 파일 형태로 저장되는지를 기술할 수 있는 수단 제공
- data format, data orderings, access path 등
3. 데이터베이스 스키마 (database schema)
- 데이터베이스 모델을 바탕으로 데이터베이스의 구조를 기술한 것
- 스키마는 데이터베이스를 설계할 때 정해지며, 한번 정해진 후에는 자주 바뀌지 않는다.


4. 데이터베이스 상태 (database state)
- 데이터베이스의 실제 데이터는 꽤 자주 바뀐다.
- 특정 시점에 데이터베이스에 있는 데이터를 database state, snapshot, 또는 database instance라고 한다.
5. three-schema architecture
- 데이터베이스 시스템을 구축하는 아키텍처 중 하나
- user application으로부터 물리적으로 데이터베이스를 분리하기 위한 목적
- 세 가지 level이 존재하며 각각 레벨마다 schema가 정의되어 있다.

- 등장 배경
- 각 레벨을 독립시켜, 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위해 만들어졌다.
- 한 레벨이 변경되었을 때, mapping만을 변경해주면 되기 때문
- 다만, 대부분의 DBMS가 three level을 완벽하게 나누지는 않는다.ㅇ
- 각 레벨을 독립시켜, 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위해 만들어졌다.
5.1. 내부 스키마 (internal schema)
- 물리적 데이터가 어떻게 지정되는지 물리적 데이터 모델(
physical data model)로 표현 - data storage, data structure, access path 등 실체가 있는 내용을 기술
5.2. 외부 스키마 (external schema)
- 실제 사용자가 바라보는 스키마
- external view, user view라고도 부름.
- 각 유저가 필요로 하는 데이터만 표현
- 그 외 알려줄 필요가 없는 데이터는 숨긴다.
- 논리적 데이터 모델(
logical data model)을 통해 표현
5.3. 개념 스키마 (conceptual schema)
- 등장 배경
- 초창기 데이터베이스 아키텍처는
internal schema,external schema만 있었음 - 각 유저마다 필요로 하는 데이터가 달라
internal schema에서 중복되는 데이터가 포함되는 스키마가 여러 개 생김. - 관리가 어려워지게 되어,
conceptual schema탄생
- 초창기 데이터베이스 아키텍처는
- 전체 데이터베이스에 대한 구조 기술
internal schema를 한 번 추상화해 표현한 스키마- 물리적 저장 구조에 대한 내용은 숨김
- entity, data type, relationships, user operations, constraints에 집중
- 논리적 데이터 모델(
logical data model)을 통해 표현
6. 데이터베이스 언어 (database language)
6.1. 데이터 정의어 (DDL: data definition language)
- 개념 스키마(
conceptual schema)를 정의하기 위해 사용되는 언어- 내부 스키마(
internal schema)까지 정의할 수 있는 경우도 있음.
- 내부 스키마(
6.2. 저장소 정의어 (SDL: storage definition language)
- 내부 스키마(
internal schema)를 정의하는 용도로 사용되는 언어- 현대 relational DBMS에서는 SDL이 거의 없고, 파라미터 등의 설정으로 대체됨.
6.3. 뷰 정의어 (VDL: view definition language)
- 외부 스키마(
external schema)를 정의하는 용도로 사용되는 언어- 대부분의 DBMS에서는 데이터 정의어(
DDL)이 뷰 정의어(VDL) 역할까지 수행
- 대부분의 DBMS에서는 데이터 정의어(
6.4. 데이터 조작어 (DML: data manipulation language)
- 데이터를 활용하기 위한 언어
- 데이터의 추가, 삭제, 수정, 검색 등 기능을 제공하는 언어
6.5. 통합된 언어
- 오늘날의 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재
- 예) SQL(Structured Query Language)
참고 자료
https://hasumang.tistory.com/99
https://www.javatpoint.com/dbms-three-schema-architecture
Note
이전 글
Note
다음 글