1. 데이터베이스 기본 개념
1.1. 데이터 (data)
•
컴퓨터에 저장되어 사용될 수 있는 정보
•
예) 행정 데이터, 의료 데이터, 성적 데이터, 실험 데이터, …
1.2. 데이터베이스(database)
•
전자적으로 저장되고 사용되는, 관련있는 데이터들의 조직화된 집합
전자적으로 저장하고 사용
관련있는 데이터
조직화된 집합
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와 데이터베이스 시스템의 차이점
그림. database system 흐름도
•
전체적인 흐름 설명
1.
프로그래머: SQL 쿼리(예: SELECT * FROM users WHERE age > 30;)를 DBMS로 전송
2.
DBMS:
쿼리 파싱, 최적화 후 실행 계획 수립
실행기에서 데이터 검색
•
검색된 데이터 반환
3.
스토리지 엔진:
•
테이블에서 실제 데이터 검색
◦
검색 방법에 따라 데이터가 물리적으로 저장된 장소에서 직접 데이터를 읽는 단계
4.
응답: DBMS에서 프로그래머로 결과 반환
보충 설명 DBMS 단계에서 쿼리 최적화와 실행기에서 데이터 검색의 차이
2. 데이터 모델 (data models)
•
DB 구조를 기술하는데 사용될 수 있는 개념들
2.1. 개념적 데이터 모델 (conceptual data models)
•
high-level
•
일반 사용자(비전공자)들이 쉽게 이해할 수 있는 데이터 모델
•
추상화 수준이 가장 높음
•
비즈니스 요구 사항을 추상화하여 기술할 때 사용
◦
예) entity-relationship model (ER diagram)
•
예시1
그림. entity-relationship model (ER diagram)
•
예시2
그림. Modern entity-relationship model (ER diagram)
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)
•
데이터베이스의 실제 데이터는 꽤 자주 바뀐다.
•
5. three-schema architecture
•
데이터베이스 시스템을 구축하는 아키텍처 중 하나
•
user application으로부터 물리적으로 데이터베이스를 분리하기 위한 목적
•
세 가지 level이 존재하며 각각 레벨마다 schema가 정의되어 있다.
그림. DBMS Three schema Architecture
•
등장 배경
◦
각 레벨을 독립시켜, 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위해 만들어졌다.
▪
한 레벨이 변경되었을 때, 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) 역할까지 수행
6.4. 데이터 조작어 (DML: data manipulation language)
•
데이터를 활용하기 위한 언어
•
데이터의 추가, 삭제, 수정, 검색 등 기능을 제공하는 언어
6.5. 통합된 언어
•
오늘날의 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재
◦
예) SQL(Structured Query Language)
참고 자료
이전 글
다음 글